【问题标题】:Can radare2 print local variables by name?radare2 可以按名称打印局部变量吗?
【发布时间】:2017-05-13 09:09:20
【问题描述】:

当radare2分析一个函数时,它会给出局部变量名称,例如local_4h for ebp - 0x4。当它们的用途变得清晰时,它还提供了为这些变量赋予更有意义的名称的能力。但是,在变量重命名后,打印它们变得更加困难。当我看到诸如mov eax, dword [ebp - i] 之类的指令时,我必须这样做

  1. 看反汇编顶部找到var int i @ ebp-0xc这一行
  2. 输入pxw @ebp-0xc
  3. 从 16(!) 行输出中的第一行读取 i 的值
  4. 从最后一个命令转移后,在反汇编中再次找到我的位置

这不是很多的工作,但是当我查看包含许多变量的大量程序集时,它很快就会变得乏味。

作为后续问题,是否可以在每次执行在断点处停止时打印变量/位置,例如 GDB 的 display 命令?

【问题讨论】:

  • 这在逆向工程 wiki 中可能会做得更好。

标签: reverse-engineering disassembly


【解决方案1】:

不是pxw @ local_4h,而是afvda分析function variables d isplay),它列出了每一个或一个特定的变量:

[0x00400526]> afvd
var local_14h = 0x7fff2eab16ac  0x2eab17a000000001   ........
var local_20h = 0x7fff2eab16a0  0x00007fff2eab17a8   ........ @rsp rsi stack R W 0x7fff2eab21ec --> stack R W 0x74756f2e612f2e (./a.out) --> ascii
var local_8h = 0x7fff2eab16b8  0x0000000000000041   A....... ascii
var local_4h = 0x7fff2eab16bc  0x0040057000000000   ....p.@.

[0x00400526]> .afvd local_14h   # note the dot
var local_14h = 0x7fff2eab16ac  0x2eab17a000000001   ........

afvd name 返回 r2 命令以显示变量“名称”。开头的点执行命令。
请记住,您始终可以使用? 命令获取帮助:

[0x00400526]> afv?
|Usage: afv[rbs]
| afvr[?]                     manipulate register based arguments
| afvb[?]                     manipulate bp based arguments/locals
| afvs[?]                     manipulate sp based arguments/locals
| afvR [varname]              list addresses where vars are accessed
| afvW [varname]              list addresses where vars are accessed
| afva                        analyze function arguments/locals
| afvd name                   output r2 command for displaying the value of args/locals in the debugger
| afvn [old_name] [new_name]  rename argument/local
| afvt [name] [new_type]      change type for given argument/local
| afv-([name])                remove all or given var

实际上也有可能使用(几乎)与您的问题相同的语法。但是,变量名称必须事先添加为标志,并且每次输入函数时都必须这样做。

[0x00400526]> .afv*
[0x00400526]> pxw @ fcnvar.local_14h 
0x7fff2eab16ac  0x00000001 0x2eab17a0 [omitted]

【讨论】:

  • Radare2原生不支持pwx local_14h的原因是什么?关于这个问题的任何更新?
猜你喜欢
  • 1970-01-01
  • 2014-08-01
  • 2020-10-16
  • 1970-01-01
  • 1970-01-01
  • 2011-09-09
  • 2011-06-16
  • 1970-01-01
  • 2019-07-23
相关资源
最近更新 更多