Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: nhaalclkiemr en 7 Enero 2008, 19:08 pm



Título: Obtener funciones CON PARAMETROS de una .dll
Publicado por: nhaalclkiemr en 7 Enero 2008, 19:08 pm
Pues bien he estado buscando y weno al final conseguí con el dumpbin.exe y con el link.exe poder obtener el nombre de las funciones de una DLL...lo malo es que no conseguí obtener los parametros que hay que pasarle a esa funcion...

Y weno cuando son funciones documentadas no hay problema porque las miras en internet y listo...pero cuando no son documentadas no consigo obtener la información sobre los parametros que hay que pasarle a esa función...

Weno en un sitio hablaban de usar un desemblador...pero la verdad no entendí como dice que se hace:

Citar
si no tenés la definición de la función (por ejemplo es una funcion que creó alguien indocumentada), depurar el programa con algún desensamblador (puede ser w32dasm )
Supon que la funcion acepta 3 parametros y devuelve uno.
Entonces desensamblas el ejecutable que llama a la funcion dentro de la DLL.
Buscar una llamada a la funcion (Ej CALL MIDLL!MIFUNCION)

Una vez encontrada la llamada a la funcion mirás arriba del código y buscas instrucciones PUSH: EJ

push parametro3
push parametro2
push parametro1

CALL MIDLL!MIFUNCION
En el registro EAX está el valor de retorno

obviamente no va a decir parametro1,parametro2 o parametro3
Puede decir algo como:
push esi
push edi
push FF

En este caso al ser registros de 32 bits, lo que se pasa son 2 parametros de 32 bits (o sea 4 bytes cada uno) y el primer parametro es FF (256) o sea un byte.
ESI O EDI podrian ser punteros a un string. Para ver de que se trata mejor, te fijarias en que posicion de memoria (aparece en el codigo desensamblado) se llama a la funcion. Entonces usando un debugger (ntsd por ejemplo que viene con XP) te podrias fijar los valores de esi y edi y ver como cambian una vez que la funcion se ejecuta.
No hay forma directa y facil de saber que y cuantos parametros se le pasan a una dll mirando solamente el ejecutable de la aplicacion. Por mas que uses el PE explorer o el dump o programas similares, este te va a mostrar la table de importacion/exportacion de funciones, pero no la cantidad de parametros que se le pasan ya que esta info no está (ni tiene por que) estar contenida dentro PE (portable executable).

Y weno pues a ver si alguien sabe de algun programa o de algun método mas facil, o en su defecto de como hacer lo que puse arriba explicado mejor ya que wen se usar un poco el OLLY pero yo de ASM nada...

Saludos ;)


Título: Re: Obtener funciones CON PARAMETROS de una .dll
Publicado por: Ferсhu en 7 Enero 2008, 19:14 pm
Citar
Weno en un sitio hablaban de usar un desemblador...pero la verdad no entendí como dice que se hace:

Lo q creo q kisieron decir es q abras con algun debuger como olly vallas hasta el offset de la funcion y veas cuantas cosas saca de la pila (para saber la cantidad) y q hace con ellas (para saber q tipos son).

En el texto q citaste es lo mismo pero antes de llamarse a la funcion, pero aveces no tenemos un ejemplo de un archivo q use la funciones. Pero siempre vamos a tener a la funcion.


saludos!!