Hola:

Esta es la base de un generador de loader-patcher
de procesos que estoy proyectando.

Lo que hace es inyectar una dll (patcher.dll) en
el espacio de direcciones del proceso a parchear.
Cuando este proceso carga esa dll, se ejecutan
las rutinas escritas en la dll y se restauran
los cambios que han debido hacerse en el proceso
para cargar la dll parcheadora.

La llamada ahora slo se inserta en el punto de
entrada del programa a parchear. Hemos escogido
NOTEPAD como el proceso objeto. Debes colocar
NOTEPAD.EXE en el mismo directorio donde tengas
LoaderGen.exe y PATCHER.DLL.

Cuando el proceso objeto se inicia, hace la 
llamada a la DLL, se despliega una MessageBox.
Al cerrarse sta, la misma DLL restaura y 
ejecuta las instrucciones originales.

La idea se me ha ocurrido a raiz de una discusin
en el antiguo foro de ingienera inversa de WKT.

El proceso general es ms o menos este:

1. Desde el loader obtener las direcciones
   de LoadLibraryA, FreeLibrary y otras ms.

2. Salvar los datos originales del proceso objeto
   en un espacio de la dll (con ReadProcessMemory).

3. Escribir en la vctima (con WriteProcessMemory)
   las llamadas a mi_dll.

4. Cuando el objeto cargue mi_dll (con LoadLibrary)
   se ejecuta alguna rutina, que puede consistir en
   un parche. En este caso desplegamos un mensaje.

5. Cuando el objeto libere mi_dll, (con FreeLibrary)
   recupera los datos originales y los ejecuta.

Agregu cdigo para localizar la dir del punto de
entrada del proceso. Esto es hecho -antes de crear
el proceso objeto- abriendo, y proyectando el
archivo co el proceso objeto, y leyendo desde
l este valor. Por ahora es el punto desde
donde el proceso objaeto carga la DLL.


n u M I T_o r

numit_or@subdimension.com
http:/members.nbci.com/numit_or/asm.html
