获取radare2中特定字节的内存地址

逆向工程 雷达2
2021-06-14 22:50:27

在 pwnlib 中,可以搜索特定字节,例如 0x66 字节如下:

print(next(p.elf.search(b'f')))

这反过来导致以下输出:

4195268

有了这个值,就可以将其作为radare2中的地址进行检查:

pd 1 @ 4195268

        0x004003c4      666c           insb byte [rdi], dx

它正确地指代包含所需“f”(0x66)的字节序列。但是,这既不是物理地址也不是虚拟地址:

[0x00400520]> ?v 4195268
        0x4003c4
[0x00400520]> ?p 4195268
        0x000003c4

而且我无法直接从radare2获取它。相反,在 r2 中搜索字节会导致引用虚拟地址,而不是引用 ELF 类从 pwntools 返回的值。

[0x00400520]> /x 66

0x004003c4 hit10_0 66

那么,它实际上是什么地址呢?以及如何在radare2 中获得pwntools 返回的相同值?

谢谢!

1个回答

一直使用十六进制值只会使人变得愚蠢。

0x4003C4 -> 4195268 (dec)

在radare2中,您可以访问以不同数字系统给出的内存