Как декомпилировать определенную функцию ядра? - PullRequest
1 голос
/ 23 марта 2011

Например, функция kernen system_call декомпилируется в:

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

Как это делается в Linux?

Ответы [ 2 ]

0 голосов
/ 23 марта 2011

Я думаю, это может быть так просто:

Скомпилируйте ваше ядро ​​с помощью символов отладки или, если вы используете версию своего дистрибутива, скачайте его пакет отладки. Затем запустите gdb vmlinux и введите disas <function name>, если вы хотите посмотреть на функцию C. За исключением того, что system_call не является функцией C, поэтому GDB не будет искать ее так же. Но вы все равно можете разобрать:

(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
0 голосов
/ 23 марта 2011

На самом деле вам не нужно ничего декомпилировать, так как это Linux.Вы можете просто посмотреть на источник.Хороший исходный браузер - LXR .Присоединяйтесь к списку рассылки ядра, если вам нужна помощь, они очень хорошие люди.

...