Cambiar return de Api usada por un programa externo

Iniciado por Psyke1, 15 Enero 2013, 18:37 PM

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

Psyke1

Supongamos que compilo esto y lo llamo "process.exe"
http://allapi.mentalis.org/apilist/3F67FD0ABC04BEB6623FB5C547B77976.html

¿Podría hacer desde mi programa que el nombre de todos los procesos que va listando "process.exe" siempre devolviera "elhackernet.exe"?
Algo así como hacer un hook al ejecutable, ver cuando utiliza los apis GetModuleFileNameExA(), EnumProcesses()... y cambiar su valor de retorno.

Vi algo parecido aquí:
http://memoryhacking.com/forums/viewtopic.php?f=37&t=5988

¿Es posible?, ¿alguna idea?, ¿y si utiliza invokeapis se podría hacer también? :huh:
Gracias. :-*

DoEvents! :P

MCKSys Argentina

Claro que es posible.

Fijate lo que hace:

1) Busca la direccion de la API en el contexto del proceso.
2) Sobreescribe los primeros bytes, para hacer un salto a la nueva direccion. En mi caso no usaria un salto (porque son relativos a la posicion donde estan), sino que usaria PUSH ADDR + RET.

Por supuesto, para escribir necesita cambiar los permisos de la memoria.

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."