有没有办法用 Radare 输出获取标题?

逆向工程 雷达2
2021-07-08 12:01:12

当我使用类似的命令时fs,我会得到类似的输出

0    0 * strings
1    6 * symbols
2   14 * sections
3    0 * relocs

我很清楚左边是一个代表标志空间的递增数字。我不清楚右边的数字是多少;fs被定义为

Usage: fs [*] [+-][flagspace|addr] # Manage flagspaces
2个回答

正如@blabb 所说,这个数字代表每个标志空间中的标志数量。

所以对于你的例子:

0    0 * strings
1    6 * symbols
2   14 * sections
3    0 * relocs
  • 标志空间“字符串”有 0 个标志
  • 标志空间“符号”有 6 个标志
  • 标志空间“部分”有 14 个标志
  • 标志空间“relocs”有 0 个标志

但更一般地,您的问题的标题询问是否有“一种方法可以使用 Radare 输出获取标题?”,答案是yes

获取标题

一些radare 的信息性命令(打印信息)向您显示键值输出。ie打印程序入口点命令为例

[0x00400530]> ie
[Entrypoints]
vaddr=0x00400530 paddr=0x00000530 baddr=0x00400000 laddr=0x00000000 haddr=0x00000018 type=program

1 entrypoints

您可以看到每个值都打印有其键(vaddr、paddr、type 等)。

其他命令不会向您显示标题,就像您使用该fs命令的示例一样那么你能做些什么来显示这些信息呢?简单地说,使用输出JSON表示。大部分radare2 的信息性命令都可以附加 aj以将输出格式化为JSON

因此,例如,打印fsj将向您显示 JSON 中的标志空间。我将添加~{}JSON缩进格式化输出以提高可读性:

[0x00400530]> fsj~{}
[
  {
    "name": "strings",
    "count": 5,
    "selected": true
  },
  {
    "name": "symbols",
    "count": 36,
    "selected": false
  },
  {
    "name": "sections",
    "count": 82,
    "selected": false
  },
  {
    "name": "relocs",
    "count": 6,
    "selected": false
  },
  {
    "name": "imports",
    "count": 6,
    "selected": false
  }
]

如您所见,radare 为我们提供了一个简单的 JSON 输出,其中包含每个值的标头(键)。通过这种方式,您可以轻松地发现与没有j.

您是否在查询特定标志空间的计数?

[0x01012d6c]> fs
0 2105 . strings
1    1 . symbols
2    8 * sections
3  381 . relocs
4  381 . imports
5    0 . resources
[0x01012d6c]> fs symbols; f| wc -l
1
[0x01012d6c]> fs sections  ; f | wc -l
8
[0x01012d6c]> fs imports  ; f | wc -l
381
[0x01012d6c]>