我不知道afl实际输出了什么。这些文档令人惊讶地没有提供信息。

因此,我在第一列中有地址,在最后一列中有符号。第二,第三和第四列是什么?

示例:

:> afl
0x08048000   29 988  -> 937  segment.LOAD0
0x080483dc    3 35           func_5
0x08048410    1 6            sym.imp.fgets
0x08048420    1 6            sym.imp.fclose
0x08048430    1 6            sym.imp.fwrite
0x08048440    1 6            sym.imp.puts
0x08048450    1 6            loc.imp.__gmon_start
0x08048460    1 6            sym.imp.exit
0x08048470    1 6            sym.imp.__libc_start_main
0x08048480    1 6            sym.imp.fopen
0x08048490    1 6            sym.imp.fileno
0x080484a0    1 6            sym.imp.ptrace
0x080484b0    1 33           entry0
0x080484e0    1 4            func_3
0x080484f0    4 42           func_4
0x08048642    4 51           func_1
0x08048675   10 83           func_2
0x080486c8    4 194          main


#1 楼

首先,我将直接回答您的问题:


第二列:函数中基本块的数量
第三列:函数的大小(以字节为单位)
第4列:函数的名称

您可能已经使用“ 4th”来标识“->”之后的数字。在这种情况下,如果有“->”,则左边的数字是函数的范围,而右边的数字是函数的大小。仅当范围和大小不同时才会发生。


但是现在有了更通用的方法。正如您所注意到的,radare2的某些命令不会向您显示表的列标题,就像afl命令的示例一样。那么,您可以怎么显示这些信息呢?

使用JSON输出

简单地,使用输出的JSON表示。可以将大多数radare2的信息性命令附加一个j,以将输出格式化为JSON。添加〜{}以使用JSON缩进来格式化输出以提高可读性:

例如:我们提供了一个简单的JSON输出,其中包含每个值的标头(键)。使用与没有j的输出相对应的标题名称,您可以轻松理解每一列是什么。它会以详细模式和易于理解的表格列出二进制文件的功能:

标头名称。

评论


非常有用,谢谢。您能否说明afll上的线条着色是什么意思?

–rgcalsaverini
18年6月26日在10:21

afll。真漂亮!

–rustyMagnet
19年12月10日在16:01