Pregunta

Por ejemplo, la función kernen system_call se descompila en:

push %eax
...
call * 0xc03094c0(,%eax,,4)

¿Cómo se hace esto en Linux?

¿Fue útil?

Solución

Creo que podría ser tan simple como esto:

Compile su kernel con símbolos de depuración, o si está usando la versión de su distribución, tome su paquete de depuración.Luego ejecute gdb vmlinux y escriba disas <function name> si desea ver una función de C.Excepto que system_call no es una función de C, por lo que GDB no lo buscará de la misma manera.Pero aún puede desmontar:

(gdb) info addr system_call
Symbol "system_call" is at 0xc0403964 in a file compiled without debugging.
(gdb) x/4i 0xc0403964
   0xc0403964:  push   %eax
   0xc0403965:  cld    
   0xc0403966:  push   %fs
   0xc0403968:  push   %es

Otros consejos

Realmente no necesitaría descompilar nada ya que es linux.Puedes mirar la fuente.Un buen navegador de fuentes es LXR .Únase a la lista de correo del kernel si necesita ayuda, son personas muy agradables.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top