elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 02:58  


Tema destacado: Nueva página de elhacker.net en Google+ Google+

+  Foro de elhacker.net
|-+  Programación
| |-+  Ingeniería Inversa (Moderadores: Shaddy, karmany)
| | |-+  Parámetros de funciones en un DLL.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Parámetros de funciones en un DLL.  (Leído 2,421 veces)
APOKLIPTICO


Desconectado Desconectado

Mensajes: 3.781


Toys in the attic.


Ver Perfil
Parámetros de funciones en un DLL.
« en: 29 Octubre 2010, 21:23 »

Hola gente, como va todo?
Estoy tratando de linkear un programa con un DLL utilizando llamadas GetProcAddress y todo eso. Podría linkearlo con el "lib" pero pensé que sería mas divertido de esta manera...

Bueno, mi problema, es el tema de los parámetros, tengo todos los exports de la DLL, y se que pasa un solo parámetro, hay alguna manera de saber el tipo de datos y si es un puntero (o un puntero de un puntero) de dicho parámetro??
Otra cosa, importa si el valor devuelto se ignora? Es decir, tampoco se el valor devuelto, sospecho que es int, pero para este caso no me interesa, el tema es que quería saber si me equivoco en el tipo de datos del valor devuelto, me puede causar un error en la llamada a la función. Por ejemplo si cuando la declaro, pongo void como valor devuelto.

Bueno, muchas gracias!
Un abrazo
APOKLIPTICO

PD: También tengo un programa que utiliza esta DLL, se puede leer los parámetros que le pasa?.
PD2: Que programas me convendría utilizar?? Tengo shadow Ollydbg y PE Explorer.
« Última modificación: 29 Octubre 2010, 21:26 por APOKLIPTICO » En línea

AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
MCKSys Argentina


Desconectado Desconectado

Mensajes: 1.222


Diviérte crackeando, que para eso estamos!


Ver Perfil
Re: Parámetros de funciones en un DLL.
« Respuesta #1 en: 29 Octubre 2010, 22:42 »

Probaste con IDA? Seguro te saca los parametros y analizando el ASM podes determinar que tipo de datos es...

Saludos!
En línea

---------------------
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."
APOKLIPTICO


Desconectado Desconectado

Mensajes: 3.781


Toys in the attic.


Ver Perfil
Re: Parámetros de funciones en un DLL.
« Respuesta #2 en: 29 Octubre 2010, 22:46 »

La cantidad de parámetros ya lo saqué con el ollydbg, es uno solo, pero como puedo determinarlo usando ASM?
En línea

AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
bizco


Desconectado Desconectado

Mensajes: 698


Ver Perfil
Re: Parámetros de funciones en un DLL.
« Respuesta #3 en: 30 Octubre 2010, 00:40 »

con el olly pones un bp en la funcion y miras que te pasa como parametro, si es un puntero, si es el valor etc. si es un puntero y fuese a alguna estructura que desconoces tendrias que mediante el resto de codigo y pruebas ir deduciendo los miembros de esta.
En línea
APOKLIPTICO


Desconectado Desconectado

Mensajes: 3.781


Toys in the attic.


Ver Perfil
Re: Parámetros de funciones en un DLL.
« Respuesta #4 en: 30 Octubre 2010, 01:00 »

Okay! Gracias!!
En línea

AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
Иōҳ


Desconectado Desconectado

Mensajes: 454


Ver Perfil
Re: Parámetros de funciones en un DLL.
« Respuesta #5 en: 1 Noviembre 2010, 22:12 »

bajate el dependecywalker.

y listo!

Salu2 Nox!
En línea

Eres adicto a la Ing. Inversa? -> www.noxsoft.net
APOKLIPTICO


Desconectado Desconectado

Mensajes: 3.781


Toys in the attic.


Ver Perfil
Re: Parámetros de funciones en un DLL.
« Respuesta #6 en: 1 Noviembre 2010, 22:57 »

El dependency walker no me da parámetros, o si?
En línea

AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
Иōҳ


Desconectado Desconectado

Mensajes: 454


Ver Perfil
Re: Parámetros de funciones en un DLL.
« Respuesta #7 en: 2 Noviembre 2010, 17:45 »



abri una dll!

aunq como dice ctlon, usa el ollydbg para mayor referencia, si es puntero a una structura pues el debugger es el indicado

Salu2! Nox!
En línea

Eres adicto a la Ing. Inversa? -> www.noxsoft.net
APOKLIPTICO


Desconectado Desconectado

Mensajes: 3.781


Toys in the attic.


Ver Perfil
Re: Parámetros de funciones en un DLL.
« Respuesta #8 en: 3 Noviembre 2010, 21:11 »

Aparentemente solo funciona para los dll en c++. Las de C no te muestra los parametros...
En línea

AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
bizco


Desconectado Desconectado

Mensajes: 698


Ver Perfil
Re: Parámetros de funciones en un DLL.
« Respuesta #9 en: 3 Noviembre 2010, 22:44 »

sube la dll que miremos y podamos ayudarte si aun no lo tienes.
En línea
APOKLIPTICO


Desconectado Desconectado

Mensajes: 3.781


Toys in the attic.


Ver Perfil
Re: Parámetros de funciones en un DLL.
« Respuesta #10 en: 8 Noviembre 2010, 19:25 »

Sorry pero no voy a subir la dll, no quiero que me den la respuesta así tan facilmente, jejeje.
Lo que realmente me extraña, es que no haya un programa que se attachee a un ejecutable, vea todas las Calls y logee todos los parámetros pasados a las mismas...
Ya saqué la mayoría de las funciones que necesito, pero me falta aún una.
Bueno, estuve analizando un poco, y aki tienen un pedacito de código de la call y del inicio de la función:
Se que se le pasan 3 parámetros y que se reservan 392 bytes de memoria local.

Estas son las primeras líneas de la función.
Código
100128C0 > 81EC 88010000    SUB ESP,188
100128C6   53               PUSH EBX
100128C7   56               PUSH ESI
100128C8   57               PUSH EDI
100128C9   6A 01            PUSH 1
 

Y estas son unas líneas antes de la CALL.
Código
0051F630   . 53             PUSH EBX
0051F631   . 56             PUSH ESI
0051F632   . 8BF1           MOV ESI,ECX
0051F634   . 57             PUSH EDI
0051F635   . 8B06           MOV EAX,DWORD PTR DS:[ESI]
0051F637   . FF90 98000000  CALL DWORD PTR DS:[EAX+98]
0051F63D   . 85C0           TEST EAX,EAX                            ;Esto debe dejar la flag "Z" en 0. A menos que haya un error.
0051F63F   . 75 0F          JNZ SHORT Exe.0051F650                   ;Entonces esto no se ejecuta.
0051F641   . 8A4E 40        MOV CL,BYTE PTR DS:[ESI+40]
0051F644   . 51             PUSH ECX
0051F645   . E8 EA8B0100    CALL <JMP.&DLL.#2>
0051F64A   . 8BF8           MOV EDI,EAX
0051F64C   . 85FF           TEST EDI,EDI
0051F64E   . 7C 2D          JL SHORT Exe.0051F67D
0051F650   > 8B5C24 10      MOV EBX,DWORD PTR SS:[ESP+10]   ;Parametro???
0051F654   . 6A 00          PUSH 0
0051F656   . 53             PUSH EBX
0051F657   . C703 94000000  MOV DWORD PTR DS:[EBX],94        ;Parametro???
0051F65D   . 8A56 40        MOV DL,BYTE PTR DS:[ESI+40]          ;Parametro???.
0051F660   . 52             PUSH EDX
0051F661   . E8 C88B0100    CALL <JMP.&DLL.#1> ;Esta es la intermodular call a la funcian en cuestion.
 

Si alguien me puede hechar un poco de claridad en esto, me encontré con un callejón sin salida y no se como continuar, también si alguien postea la respuesta, por favor expliquen como llegaron hasta ahi, así lo tengo presente para futuras situaciones.

Muchas gracias!!!
En línea

AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
tena


Desconectado Desconectado

Mensajes: 668



Ver Perfil
Re: Parámetros de funciones en un DLL.
« Respuesta #11 en: 9 Noviembre 2010, 01:34 »

Fijate como llama el programa a  la funcion de la dll, luego podrias usar el hexrays de ida para ver el pseudocodigo de la llamada a la la funcion.

slds
En línea
Иōҳ


Desconectado Desconectado

Mensajes: 454


Ver Perfil
Re: Parámetros de funciones en un DLL.
« Respuesta #12 en: 9 Noviembre 2010, 17:59 »

Justo iba a comentar lo que tena dijo IDA, se que tiene un plugin para verlo en pseudocodigo... ( aunque nunca lo he usado), tengo el mismo problema para ver parametros que tu( cuando busco parametros en una dll de un game u.u), en algunas ocasiones, y sobre el programa que mencionas, el cheatengine lo hace, attach process y en memory view en una de sus opciones dice enumerate dll o algo asi, donde te da todos los modulos que carga y las funciones con sus respectivos parametros.
En línea

Eres adicto a la Ing. Inversa? -> www.noxsoft.net
APOKLIPTICO


Desconectado Desconectado

Mensajes: 3.781


Toys in the attic.


Ver Perfil
Re: Parámetros de funciones en un DLL.
« Respuesta #13 en: 9 Noviembre 2010, 19:21 »

Ya lo solucioné (lo encontré por internet después de mucho tiempo).
El problema es que IDA te baja los parámetros de las funciones conocidas, entonces, puede parecer como que las averigua, cuando solo está descargándolas del PDB...
En línea

AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[MySQL] Funciones con parámetros infinitos
Bases de Datos
raul338 3 1,184 Último mensaje 22 Octubre 2011, 00:50
por Shell Root
Bash; Pasaje de arreglos como parametros a funciones
Scripting
astinx 1 921 Último mensaje 29 Octubre 2011, 20:24
por astinx
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines