Test Foro de elhacker.net SMF 2.1

Programación => Programación General => ASM => Mensaje iniciado por: .:UND3R:. en 1 Septiembre 2012, 17:44 PM

Título: Problema con CreateThread
Publicado por: .:UND3R:. en 1 Septiembre 2012, 17:44 PM
Tengo lo siguiente:
Código (asm) [Seleccionar]
CREATE_THREAD PROC
INVOKE CreateThread,NULL,NULL,ADDR Thread,NULL,0,NULL
ret

CREATE_THREAD ENDP

Thread PROC
INVOKE CreateToolhelp32Snapshot,TH32CS_SNAPPROCESS,0
cmp eax,NULL
mov hdl_snap,eax
mov inf_process.dwSize,128h
INVOKE Process32First,[hdl_snap],ADDR inf_process
cmp eax,TRUE

INVOKE Process32Next,[hdl_snap],ADDR inf_process


ret

Thread ENDP


1) lpParameter [in, optional]
A pointer to a variable to be passed to the thread.

Qué parámetro introduzco para que no pase una variable al thread?, yo lo dejo con 0 pero me gustaría saber como si está bien.

2) Al intentar ensamblar esto me muestra el siguiente error:
error A2006: undefined symbol : Thread

¿Cómo soluciono esto?

Saludos
Título: Re: Problema con CreateThread
Publicado por: _Enko en 1 Septiembre 2012, 17:53 PM
No conozco el tema de las macros de masm, pero tranquilamente puedes ahorarte la molestia de usar macros.


Thread:
INVOKE CreateToolhelp32Snapshot,TH32CS_SNAPPROCESS,0
cmp eax,NULL
mov hdl_snap,eax
mov inf_process.dwSize,128h
INVOKE Process32First,[hdl_snap],ADDR inf_process
cmp eax,TRUE

INVOKE Process32Next,[hdl_snap],ADDR inf_process

ret



No se como es el tema del parametro, pero si pasa alguno, pudes solucionarlo haciendo al final un
retn 4, o add esp, 4
Título: Re: Problema con CreateThread
Publicado por: .:UND3R:. en 1 Septiembre 2012, 18:50 PM
Muchas gracias, pero aun así no logro solucionarlo, desconozco por que no reconoce ADDR NombredePROC

(parámetro 3).
Título: Re: Problema con CreateThread
Publicado por: Arkangel_0x7C5 en 1 Septiembre 2012, 20:15 PM
pues porque no declaraste el prototipo con PROTO

Saludos
Título: Re: Problema con CreateThread
Publicado por: .:UND3R:. en 2 Septiembre 2012, 02:11 AM
Cita de: Arkangel_0x7C5 en  1 Septiembre 2012, 20:15 PM
pues porque no declaraste el prototipo con PROTO

Saludos

Se ha declarado el prototipo.
Título: Re: Problema con CreateThread
Publicado por: Arkangel_0x7C5 en 2 Septiembre 2012, 13:57 PM
pues cambia el orden de las funciones y pon:
Código (asm) [Seleccionar]


push NULL
push NULL
push NULL
push offset Thread
push NULL
push NULL
call CreateThread


espero que se solucione

Saludos
Título: Re: Problema con CreateThread
Publicado por: fary en 3 Septiembre 2012, 14:08 PM
No hace falta poner ADDR ni offset

Código (asm) [Seleccionar]
invoke CreateThread,0,0,Funcion,0,0,0

saludos.
Título: Re: Problema con CreateThread
Publicado por: .:UND3R:. en 4 Septiembre 2012, 03:04 AM
Cita de: mDrinky en  3 Septiembre 2012, 14:08 PM
No hace falta poner ADDR ni offset

Código (asm) [Seleccionar]
invoke CreateThread,0,0,Funcion,0,0,0

saludos.

También lo intenté de esa forma pero no función, la solución fue llamarlo sin utilizar la directiva INVOKE, es decir:

Código (asm) [Seleccionar]
push 0
push 0
push 0
push OFFSET SEARCH_CHEAT
push 0
push 0
call CreateThread


Saludos y muchas gracias por su ayuda  ;-)
Título: Re: Problema con CreateThread
Publicado por: Иōҳ en 4 Septiembre 2012, 05:05 AM
Lo que dice Arkangel es cierto, es por eso el error Under, que tipo de versión de masm estás usando ¿?.

Saludos,
Nox.
Título: Re: Problema con CreateThread
Publicado por: zu-zu en 4 Septiembre 2012, 23:05 PM
Imagino que estás usando una versión vieja de MASM. El problema es que en esa versión defines la función después del código que hace referencia a ella. La solución es cambiar el orden de las funciones, aunque sería mejor que uses una versión más actualizada de MASM o en su defecto uses otro ensamblador que soporte su sintaxis.
Título: Re: Problema con CreateThread
Publicado por: .:UND3R:. en 5 Septiembre 2012, 00:42 AM
utilizo MASM32 (su última versión) junto con el IDE RadASM, nunca tuve problemas con los INVOKES, solo con CreateThread, de todas maneras ya se ha solucionado, gracias por sus comentarios. Saludos