Loader Generator
 

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 sólo 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 discusión en el antiguo foro de ingienería inversa de WKT.

El proceso general es más o menos este:

1. Desde el loader obtener las direcciones de LoadLibraryA, FreeLibrary y otras más.

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

3. Escribir en la víctima (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é código 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

[email protected]
http:/members.nbci.com/numit_or/asm.html