如何使用 Radare2 打印 eax 值?

逆向工程 调试 雷达2 调试器
2021-07-09 20:53:33

我正在解决一个破解挑战,但我被卡住了。挑战执行多项jne测试。第一个测试是最简单的,但我没有到达打印eax值以了解cmp指令内容根据这段代码:

|    ; DATA XREF from sym.main (0x804848e)
|    0x08048497      b88a55ea8b     mov eax, 0x8bea558a
|    0x0804849c      45             inc ebp
|    0x0804849d      f4             hlt
|    0x0804849e      83c004         add eax, 4
|    0x080484a1      8a00           mov al, byte [eax]
|    0x080484a3      38c2           cmp dl, al
|,=< 0x080484a5      753d           jne 0x80484e4

如何打印eax值以了解指令中的比较内容?

0x080484a1 8a00 mov al, byte [eax]

根据这个问题,我尝试了0x080484a1但是当我输入命令时pxr 1 @ eax+0x4,什么也没出现。如果我输入命令pxr @ eax+0x4,则会出现以下代码:

0x080c288c  0x6f6c6165  ealo ascii
0x080c2890  0x00796768  hgy. ascii

打印的 ascii 与已比较的字符串链接ksuiealohgy

1个回答

不知道您为什么使用,pxr因为您可以使用px 1 @ eax+0x4. 但另一种选择是您可以运行此操作码,然后读取 的寄存器值al以获取该但是为了做到这一点,您需要改用调试器命令(当然您需要处于调试模式):

[0x7f5953803e90]> dr?
Usage: dr   Registers commands
| dr                     Show 'gpr' registers
<snip>

因此,要al在调试会话期间获取execute的值

[0x7f5953803e90]> dr al
0x00000090