Cómo investigar la convención de llamada de archivo binario PE en las ventanas?
-
02-10-2019 - |
Pregunta
¿Existe una herramienta para mostrar si la convención de llamada es _cdecl o _stdcall o de lo contrario?
Solución
convenciones de llamada son por función - No archivo PE
. Funciones de biblioteca. al menos los proporcionados por MS, son todos _stdcall
. Todo lo demás se extiende por otras convenciones de llamada, la mayoría de ellos _cdecl
.
Puede leer más aquí .
La versión corta:
- Funciones
cdecl
no desactivarla del argumento de la pila, lo que permite argumentos de tamaño variable. Buen ejemplo de ello es que puedeprintf()
un número diferente de argumentos. - Funciones
stdcall
Borra los argumentos de los propios pila. argumentos de tamaño Por lo tanto variable no es posible.
Edit: ejemplo añadido
Ejemplo para cdecl
de el enlace :
push c
push b
push a
call function_name
add esp, 12 ;Stack clearing, 3 arguments take 12 bytes of space (on 32bit)
Así que después vuelve function_name
, la persona que llama borra los argumentos de la pila.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow