Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: johnburn en 18 Mayo 2011, 22:53 pm



Título: Comprensión librería .dll + Única función
Publicado por: johnburn en 18 Mayo 2011, 22:53 pm
Buenas tardes  ;D

Qué tal, me encuentro intentando comprender una funcionalidad que desconozco de una librería que no poseo el source, les explico la situación: hay un ejecutable, llamémosle pepe.exe, el cual carga un archivo, llamémosle hola.bmd, de un path concreto.
Ahora, a este pepe.exe se le agregó una librería, llamémosle chau.dll, que lo que hace es modificar el comportamiento de pepe.exe para que en vez de cargar a hola.bmd desde el path que tiene impuesto lo haga desde otro path el cual varía, llamémosle %path, que es recibido desde un combobox que es mostrado al usuario.
El tema es que esta librería tiene más funcionalidades que la que estoy intentando averiguar y tiene errores que generan crash en pepe.exe, es por esta razón que se decidió remover a chau.dll.
Por lo que me llevó a mí a crear un nuevo chau.dll que solo contenga la funcionalidad de modificación de path, pero al no poseer el source de chau.dll y tener escaso conocimiento de asm me resulta imposible saber cómo es que chau.dll hace que pepe.exe use a %path y no al que tiene por defecto.

Lo que pude observar es que chau.dll no modifica offsets vía address de pepe.exe ya que si yo empaqueto a pepe.exe con mew11 sigue funcionando genial a pesar de que hayan cambiado sus offsets  :-\

Les dejo la librería http://www.mediafire.com/?gkp4s7pxtim9do8 (http://www.mediafire.com/?gkp4s7pxtim9do8), pepe.exe lo único que hace es cargar la librería y llamar a la función ENCGames, uno de los path que cambia es "Data\Local\%s\Text.bmd". Espero que puedan darme una mano con esto  ;D

Desde ya, gracias  ;)

Cordiales saludos,
John.


Título: Re: Comprensión librería .dll + Única función
Publicado por: MCKSys Argentina en 19 Mayo 2011, 01:12 am
Hola!

La verdad, me confundí en algún lado de tu explicación...  :-\

Podrías ser mas concreto ?


Título: Re: Comprensión librería .dll + Única función
Publicado por: johnburn en 19 Mayo 2011, 01:15 am
Buenas MCKSys Argentina ;D

Gracias por la pronta respuesta  ;), decime qué parte necesitás más concreta e intento ser más explícito!  ;D

Desde ya, gracias  ;)

Cordiales saludos,
John.


Título: Re: Comprensión librería .dll + Única función
Publicado por: MCKSys Argentina en 24 Mayo 2011, 15:59 pm
Por lo que veo, la DLL es para proteger alguna especie de juego (MU?).

Dime como se llama el archivo "hola.bmd" asi puedo ver que parte esta cambiando en el EXE...


Título: Re: Comprensión librería .dll + Única función
Publicado por: johnburn en 24 Mayo 2011, 16:12 pm
Así es, es con respecto al juego MU. Creo que tiene protección pero no es de la mejor, fue reemplaza por otra librería con más protección y actualización constante.

hola.bmd podría llegar a ser como el ejemplo que di Text.bmd

Muchas gracias por la pronta respuesta y constante ayuda  ;)

Cordiales saludos,
John.


Título: Re: Comprensión librería .dll + Única función
Publicado por: MCKSys Argentina en 24 Mayo 2011, 16:17 pm
Como proteccion veo que usa la API GetAsyncKeyState para detectar F7 y F8 (teclas usadas en OllyDbg).

Ahora, la funcion que maneja toda la parte de la ventana que dices, esta en 1002170 (ese es el windowproc).

Como te dije por privado, con IDA y Hexrays lo destripas en 2 segundos...  ;)

Saludos!

Agregado

Podrias probar NOPeando el push 0 y el call siguiente de la direccion 100018D0 (ENCGames + 30h). Con eso se "quita" la proteccion antidebug...


Título: Re: Comprensión librería .dll + Única función
Publicado por: Иōҳ en 24 Mayo 2011, 18:45 pm
MU... hace unas semanas, un brodher se hizo un hack de speed para magdalena, dime que MU intentas hacerle algo?.

Nox


Título: Re: Comprensión librería .dll + Única función
Publicado por: johnburn en 24 Mayo 2011, 19:26 pm
Hola Иōҳ

No sé si estuviste leyendo el post y sus comentarios, pero no estoy intentando hacerle nada a ningún MU, eso fue un comentario aparte que define en qué contexto se encuentra la librería... solamente intento hacer ingeniería inversa sobre una DLL para averiguar y comprender una funcionalidad específica de dicha DLL.

Gracias por la respuesta.

Cordiales saludos,
John.