MegaCraZy6
@MegaCraZy6
Юзерь

Assembler WriteConsole не выводит текст?

Искал ошибку довольно долго не подумайте что сразу сюда написал)
Через дебагер проверял, данные по сокету получает, все параметры вроде подходят, да и точно такой-же способ вывода текста я использую в сервере но там он работает...

PS: Вот все время какие-то проблемы с этим WriteConsole уже устал)...

Format PE GUI 4.0
include "win32ax.inc"

proc Thread_Receiv arg1
.p0:
invoke ReadConsole,[STDI],buff_send,4096,lenght,0
mov eax,0
mov ax,[lenght]
invoke send,[socket_client],buff_send,eax,0
jmp .p0
ret
endp

connect_socket:
invoke WSAStartup,0202h,WSA
cmp eax,00
jz .p0
invoke WriteConsole,[STDO],err3,19,0,0
jmp $
.p0:
invoke socket,2,1,0
cmp eax,-1
jnz .p1
invoke WriteConsole,[STDO],err1,22,0,0
jmp $
.p1:
mov [socket_client],eax
invoke connect,eax,addr,sizeof.sockaddr_in
cmp eax,0
jnz error
ret

input_output:
invoke WriteConsole,[STDO],mes1,51,0,0
invoke ReadConsole,[STDI],buff,255,lenght,0
xor ebx,ebx
mov bx,[lenght]
add ebx,buff
mov byte [ebx-1],0
mov byte [ebx-2],0
invoke inet_addr,buff
mov [addr.sin_addr.ip],eax
ret

error:
invoke WriteConsole,[STDO],err2,33,0,0
jmp $

start:
invoke AllocConsole
invoke GetStdHandle,STD_OUTPUT_HANDLE
mov [STDO],eax
invoke GetStdHandle,STD_INPUT_HANDLE
mov [STDI],eax
call input_output
call connect_socket
invoke CreateThread,0,0,Thread_Receiv,0,0,thread
.p01:
invoke recv,[socket_client],buffer,4096,0
push 0
push 0
push eax
push buffer
push [STDO]
mov eax,0
call [WriteConsoleA]                                         
;; invoke WriteConsoleA,[STDO],buffer,eax,0,0 ;; ВОТ ТУТ НЕ РАБОТАЕТ сверху эта же функция только без invoke
jmp .p01
.end start


mes1 db '                        TCP-Client by ASMcoder',10,13,'IP:'
mes2 db 'Port:'
err1 db 'Create socket error!',10,13
err2 db 'Connect socket error!',10,13
err3 db 'WSAStartup error!',10,13


struc WSAdata
{
.wVersion       dw ?
.wHighVersion   dw ?
.szDescriotion  db 257 dup (?)
.szSystemStatus db 129 dup (?)
.iMaxSockets    dw ?
.iMaxUdpDg      dw ?
.lpVendorInfo   dd ?
}

struc sockaddr_in
{
.sin_family dw 2
.sin_port   dw 1300
.sin_addr   IP
.sin_zero   db 8 dup (?)
}

struc IP
{
.ip:
.a_b1 db ?
.a_b2 db ?
.a_b3 db ?
.a_b4 db ?
}

socket_client dd 0
thread db 0
lenght dw 0
STDO  dd 0
STDI  dd 0
addr  sockaddr_in
WSA   WSAdata
null dd 0

buff db 512 dup(0)
buff_send db 4096 dup(0)
buffer db 4096 dup(0)


Так-же не знаю может будет полезно
сервер:
Format PE GUI 4.0
include "win32ax.inc"

proc Thread_Receiv arg1
.p0:
invoke ReadConsole,[STDI],buff_send,4096,lenght,0
invoke send,[socket_client],buff_send,eax,0
jmp .p0
ret
endp

connect_socket:
invoke WSAStartup,0202h,WSA
cmp eax,00
jz .p0
invoke WriteConsole,[STDO],err3,19,0,0
jmp $
.p0:
invoke socket,2,1,0
cmp eax,-1
jnz .p1
invoke WriteConsole,[STDO],err1,22,0,0
jmp $
.p1:
mov [socket_server],eax
invoke bind,[socket_server],addr,sizeof.sockaddr_in
invoke listen,[socket_server],5
mov eax,sizeof.sockaddr_in
mov [lenght_addr],eax
invoke accept,[socket_server],addr_client,lenght_addr
mov [socket_client],eax
invoke WriteConsole,[STDO],mes1,19,0,0
ret

error:
invoke WriteConsole,[STDO],err2,33,0,0
jmp $

start:
invoke AllocConsole
invoke GetStdHandle,STD_OUTPUT_HANDLE
mov [STDO],eax
invoke GetStdHandle,STD_INPUT_HANDLE
mov [STDI],eax
call connect_socket
invoke CreateThread,0,0,Thread_Receiv,0,0,thread
.p01:
invoke recv,[socket_client],buffer,4096,0
push 0
push 0
push eax
push buffer
push [STDO]
mov eax,0
call [WriteConsoleA]
jmp .p01
.end start

mes1 db 'Client connected!',10,13
err1 db 'Create socket error!',10,13
err2 db 'Connect socket error!',10,13
err3 db 'WSAStartup error!',10,13


struc WSAdata
{
.wVersion       dw ?
.wHighVersion   dw ?
.szDescriotion  db 257 dup (?)
.szSystemStatus db 129 dup (?)
.iMaxSockets    dw ?
.iMaxUdpDg      dw ?
.lpVendorInfo   dd ?
}

struc sockaddr_in
{
.sin_family dw 2
.sin_port   dw 1300
.sin_addr   IP
.sin_zero   db 8 dup (?)
}

struc IP
{
.ip:
.a_b1 db ?
.a_b2 db ?
.a_b3 db ?
.a_b4 db ?
}

socket_client dd 0
socket_server dd 0
thread db 0
lenght dw 0
lenght_addr dd 0
STDO  dd 0
STDI  dd 0
addr  sockaddr_in
addr_client sockaddr_in
WSA   WSAdata

buff db 512 dup(0)
buff_send db 4096 dup(0)
buffer db 4096 dup(0)
  • Вопрос задан
  • 372 просмотра
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
WriteConsole не выводит текст

А что возвращает? А GetLastError какой? А что в буфере buffer и в eax перед вызовом WriteConsole?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы