使用 objdump 时,我看到以下反汇编代码:
8049436: 89 04 24 mov DWORD PTR [esp],eax
8049439: e8 52 f7 ff ff call 8048b90 <gtk_entry_get_text@plt>
804943e: 89 44 24 24 mov DWORD PTR [esp+0x24],eax
8049442: eb 01 jmp 8049445 <gtk_grid_new@plt+0x6c5>
8049444: 1d c7 04 24 0b sbb eax,0xb2404c7
8049449: 00 00 add BYTE PTR [eax],al
804944b: 00 e8 add al,ch
804944d: 0f f7 ff maskmovq mm7,mm7
8049450: ff eb jmp <internal disassembler error>
这是使用混淆技术使反汇编更难。当我检查 gdb 时,我在 0x8049445 看到了真正的代码:
(gdb) > x/10i 0x8049445
0x8049445: mov DWORD PTR [esp],0xb
0x804944c: call 0x8048b60 <raise@plt>
0x8049451: jmp 0x8049454
0x8049453: sbb eax,0xfff8a7e8
现在,我的问题是:是否可以告诉 objdump 出于反汇编的目的可以忽略 0x8049444 处的字节?一个明显的方法是实际修补文件,但还有另一种方法吗?
如果没有 objdump,是否还有其他工具可以做到这一点?尽管我更愿意使用 Linux 附带的基本工具,以便更好地熟悉这些工具。