Underc0de

Programación General => ASM => Mensaje iniciado por: proxy_lainux en Julio 20, 2013, 05:11:10 PM

Título: Socket con nasm... al fin lo logre
Publicado por: proxy_lainux en Julio 20, 2013, 05:11:10 PM
pues lo logre, aun no se como usar estructuras en nasm pero logre hacerlo funcionar

Código (asm) [Seleccionar]
[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

Código (asm) [Seleccionar]
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'           
Título: Re:socket con nasm... al fin lo logre
Publicado por: ANTRAX en Julio 20, 2013, 05:11:52 PM
Excelente trabajo Bro!!
Felicitaciones!
Título: Re:socket con nasm... al fin lo logre
Publicado por: Expermicid en Julio 20, 2013, 07:43:30 PM
Muy bueno grimoire. Lo agrego al indice y cierro el post de la duda que habias tenido ;)

Saludos