例如,kernen函数system_call
反编译为:
push %eax
...
call * 0xc03094c0(,%eax,,4)
这是如何在linux中完成的?
答案 0 :(得分:0)
你真的不需要反编译任何东西,因为它的linux。你可以看看来源。一个好的源浏览器是LXR。如果您需要帮助,请加入内核邮件列表,他们是非常好的人。
答案 1 :(得分:0)
我认为它可以像这样简单:
使用调试符号编译内核,或者如果您正在使用发行版的版本,请获取其调试包。然后运行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