Para saber cantidad de parametros

Iniciado por x64core, 29 Diciembre 2011, 00:51 AM

0 Miembros y 1 Visitante están viendo este tema.

x64core

Hola!
bueno por ahora estoy depurando una dll creada en C++ y quisiera saber como saber el numero de
parametros de las funciones exportadas que tiene esa dll
alguien puede darme algo de info por favor q no e encontrado nada :P

_Enko

Si es de Cpp de segura utiliza la convencion cdecl. Fijate que despues del RET hace ADD ESP, X.
divide X por 4 y te dara la cantidad de parametros.

(obviamente eso dentro del programa que utiliza dicha dll)
Saludos.

x64core

osea la siguiente instruccion despues del call no?
y no, no me aparecio esa instruccion es la dll de vb :P

_Enko

#3
Cita de: RHL en 29 Diciembre 2011, 05:39 AM
osea la siguiente instruccion despues del call no?
y no, no me aparecio esa instruccion es la dll de vb :P
Si no aparece esa instruccion en el codigo del llamante, entonces la dll no es de C++.
Que este compilada con visual studio no quiere decir que sea de cpp.


msvbvm.dll utiliza una especie de fastcall y otras veces stdcall. En el caso de stdcall, vas a tener un RET X, donde x dividido 4 te da la cantidad de parametros. Eso dentro de la dll.
en el caso de la otra, pasa parametros en edx, ecx y luego en la pila.

x64core

jeje si me habia fijado del ret x pero despues me fije que no todas tenian el ret con un numero
de posiciones, pero ahora que lo dices mas el otro modo que dices ahora vere como lo hace, gracias _enko!

Karman

Cita de: RHL - 该0在 en 29 Diciembre 2011, 00:51 AMHola!
bueno por ahora estoy depurando una dll creada en C++ y quisiera saber como saber el numero de parametros de las funciones exportadas que tiene esa dll
alguien puede darme algo de info por favor q no e encontrado nada :P

en realidad, como te contestaron, depende (no del compilador) sino del tipo de llamada, de todas formas, no suele ser algo difícil de descifrar, solo tenes que mirar las instrucciones antes de la llamada a la función (si está cifrado puede complicarse un poco) y en el caso que veas en las primeras líneas de la función mucho uso del registro edx, es posible que utilice fastcall y edx sea el puntero al objeto...

S2