开发者

How do I decompile a specific kernel function?

For example ,kernen function system_call decompiles to:

开发者_运维技巧push %eax
...
call * 0xc03094c0(,%eax,,4)

How's this done in linux?


I think it could be as simple as this:

Compile your kernel with debugging symbols, or if you're using your distro's version, grab its debug package. Then run gdb vmlinux and type disas <function name> if you want to look at a C function. Except that system_call isn't a C function, so GDB won't look it up the same way. But you can still disassemble:

(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


You wouldn't really need to decompile anything since its linux. You can just look at the source. A good source browser is LXR. Join the kernel mailing list if you need help, they are very nice people.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜