pues lo logre, aun no se como usar estructuras en nasm pero logre hacerlo funcionar
[BITS 32]
section .data
wsdll: db 'ws2_32.dll',0
wsaddr: dd '0xFFFFFFFF'
Getpc: dd '0xFFFFFFFF'
WStp: db 'WSAStartup',0
WSaddr: dd '0xFFFFFFFF'
WSD: dd 'WSADATA',0
saveWSA: dd '0xFFFFFFFF'
soc: db 'socket',0
soadd: dd '0xFFFFFFFF'
conn: db 'connect', 0
conaddr: dd '0xFFFFFFFF'
sen: db 'send', 0
sendadd: dd '0xFFFFFFFF'
res1: db "WSAStartup %d", 10, 0
res2: db "Socket %d", 10, 0
res3: db "connect %d", 10, 0
res4: db "send %d", 10 ,0
sre: db "hola mundo",0
section .bss
sn resb 10
section .text
global _WinMain@16
extern _ExitProcess@4
extern _LoadLibraryA@4
extern _GetProcAddress@8
extern _printf
extern _WSAStartup@8
_WinMain@16:
xor eax, eax
push wsdll
call _LoadLibraryA@4
mov [wsaddr], eax
push WStp
push dword [wsaddr]
call _GetProcAddress@8
mov [Getpc], eax
push WSD
push 0x202
call [Getpc]
mov [saveWSA], eax
cmp dword [saveWSA], -1
jne mns1
je erro
mns1:
push dword [saveWSA]
push res1
call _printf
push soc
push dword [wsaddr]
call _GetProcAddress@8
mov [Getpc], eax
push 6
push 1
push 2
call [Getpc]
mov [soadd], eax
push dword [soadd]
push res2
call _printf
push conn
push dword [wsaddr]
call _GetProcAddress@8
mov [conaddr], eax
push dword [conaddr]
push res3
call _printf
push 0x0100007F
push 0xB9220002
mov esi, esp
push byte 16
push esi
push dword [soadd]
call [conaddr]
erro:
push 0
call _ExitProcess@4
Aunque admito que hacerlo en fasm es mucho mas sencillo
format PE console 4.0
entry start
include 'include\win32a.inc'
section '.data' data readable writable
wsadata WSADATA
saddr sockaddr_in
sock_size = $-saddr
sock dd ?
sin_addr dd ?
sin_port dd ?
section '.code' code readable executable
start:
invoke WSAStartup, 0202h, wsadata
invoke socket, AF_INET, SOCK_STREAM, 0
mov[sock], eax
mov[saddr.sin_family], AF_INET
mov[saddr.sin_port], 0xB922
mov[saddr.sin_addr], 0x0100007F
invoke connect, [sock], saddr, sock_size
invoke ExitProcess,0
section '.idata' import data readable writeable
library kernel, 'KERNEL32.DLL',\
winsock, 'WSOCK32.DLL'
import kernel,\
ExitProcess, 'ExitProcess'
import winsock,\
WSAStartup, 'WSAStartup',\
WSACleanup, 'WSACleanup',\
socket, 'socket',\
connect, 'connect',\
sendto, 'sendto',\
closesocket, 'closesocket'
Excelente trabajo Bro!!
Felicitaciones!
Muy bueno grimoire. Lo agrego al indice y cierro el post de la duda que habias tenido ;)
Saludos