使用radare2调试

逆向工程 x86 雷达2
2021-06-19 15:24:15

我正在使用radare2反汇编一个x86二进制文件:

$ r2 ./mynbinary
[0x00001000]> aaa
...
[0x00001000]> pdf
            ;-- section..text:
            ;-- section.LOAD1:
            ;-- rip:
/ (fcn) entry0 53
|   entry0 ();
|           ; UNKNOWN XREF from 0x00001000 (entry0)
|           0x00001000      e800000000     call loc.suite              ; [15] m-r-x section size 53 named LOAD1
            ;-- suite:
|           ; CALL XREF from 0x00001000 (entry0)
|           0x00001005      48b968656c6c.  movabs rcx, 0x3332316f6c6c6568
...

正如你所看到的,它工作得很好。

现在,我正在做同样的事情,在同一个二进制文件上,但使用 -d 选项来调试二进制文件

[0x7ff5a7183210]> aaa
...
[0x7ff5a7183210]> pdf
p: Cannot find function at 0x7ff5a7183210

我不知道为什么它在调试中不起作用......

谢谢

1个回答

问题是地址0x7ff5a7183210不是二进制文件的一部分,而是运行代码的内核代码的一部分。所以运行aaa不会在那里创建任何函数。您需要在代码中创建断点(即运行db main),并且只有当您的断点被击中时,您才能运行pdf,它应该向您显示反汇编。