dr=
的结果?> dr rax = 298; dr rdx = 42; dr=
rax 0x0000012a rbx 0x00000000 rcx 0x00000000
rdx 0x0000002a rsi 0x00000000 rdi 0x00000000
r8 0x00000000 r9 0x00000000 r10 0x00000000
r11 0x00000000 r12 0x00000000 r13 0x00000000
r14 0x00000000 r15 0x00000000 rip 0x00005850
rbp 0x00000000 rflags rsp 0x00000000
希望将
rax
和rdx
读为十进制。#1 楼
尽管radare2提供了大量命令来处理寄存器(请参阅dr?
),但是以十进制模式查看寄存器的值是非常棘手的。也就是说,我将向您展示两种简单的方法(命令),您可以选择两种方法来实现自己的目标。我们将从执行您提到的命令开始,以更改
rax
和rdx
的值:[0x7f49250e4e06]> dr rax = 298
0x00000000 ->0x0000012a
[0x7f49250e4e06]> dr rdx = 42
0x00000000 ->0x0000002a
[0x7f49250e4e06]>
1。仅打印一个寄存器
这是更优雅的解决方案。从问题的第一部分开始,我了解到您希望以十进制模式打印所有寄存器,但最后只引用
rax
和rdx
。在这种情况下,以下命令可以为您显示十进制模式下特定寄存器的值:[0x7f49250e4e06]> ?vi rax
298
[0x7f49250e4e06]> ?vi rdx
42
我使用的命令是
?vi
,它是?
。命令?
及其子命令负责数学表达式的求值。通过执行???
,可以获得其帮助。 ?vi
的帮助描述为:[0x7f49250e4e06]> ???
...
| ?vi rsp-rbp show decimal value of math expr
...
2。将所有寄存器打印为json
与第一个解决方案不同,此解决方案虽然不太美观,但会向您显示所有寄存器。在以下解决方案中,我们将利用以下事实:通过将
j
附加到命令,radare可以为几乎每个命令提供JSON格式的输出。是的,这包括用于显示寄存器的命令。我们还将利用JSON输出的数字值通常为十进制这一事实。 [0x7f49250e4e06]> drj~{}
{
"rax": 298,
"rbx": 139952134190912,
"rcx": 2,
"rdx": 42,
"r8": 231,
"r9": 18446744073709551488,
"r10": 2,
"r11": 2,
"r12": 139952134190912,
"r13": 2,
"r14": 139952134227496,
"r15": 0,
"rsi": 60,
"rdi": 0,
"rsp": 140737461504296,
"rbp": 0,
"rip": 139952131034630,
"rflags": 582,
"orax": 231
}
我附加了
~{}
以便格式化命令的JSON结果。如您所见,寄存器的值位于十进制,包括我们修改后的
rax
和rdx
。这样,您可以享受JSON格式的输出,该输出将以十进制显示寄存器的值。