¿Cómo descompilo una función específica del kernel?
-
28-10-2019 - |
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?
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