Tengo lo siguiente:
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
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
Muchas gracias, pero aun así no logro solucionarlo, desconozco por que no reconoce ADDR NombredePROC
(parámetro 3).
pues porque no declaraste el prototipo con PROTO
Saludos
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.
pues cambia el orden de las funciones y pon:
push NULL
push NULL
push NULL
push offset Thread
push NULL
push NULL
call CreateThread
espero que se solucione
Saludos
No hace falta poner ADDR ni offset
invoke CreateThread,0,0,Funcion,0,0,0
saludos.
Cita de: mDrinky en 3 Septiembre 2012, 14:08 PM
No hace falta poner ADDR ni offset
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:
push 0
push 0
push 0
push OFFSET SEARCH_CHEAT
push 0
push 0
call CreateThread
Saludos y muchas gracias por su ayuda ;-)
Lo que dice Arkangel es cierto, es por eso el error Under, que tipo de versión de masm estás usando ¿?.
Saludos,
Nox.
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.
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