Problema con CreateThread

Iniciado por .:UND3R:., 1 Septiembre 2012, 17:44 PM

0 Miembros y 1 Visitante están viendo este tema.

.:UND3R:.

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

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

_Enko

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

.:UND3R:.

Muchas gracias, pero aun así no logro solucionarlo, desconozco por que no reconoce ADDR NombredePROC

(parámetro 3).

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

Arkangel_0x7C5

pues porque no declaraste el prototipo con PROTO

Saludos

.:UND3R:.

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.

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

Arkangel_0x7C5

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

fary

#6
No hace falta poner ADDR ni offset

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

saludos.
Un byte a la izquierda.

.:UND3R:.

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  ;-)

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

Иōҳ

Lo que dice Arkangel es cierto, es por eso el error Under, que tipo de versión de masm estás usando ¿?.

Saludos,
Nox.
Eres adicto a la Ing. Inversa? -> www.noxsoft.net

zu-zu

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.