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).
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