Radare2 中的 pd $s 和 pdf @@f 有什么区别

逆向工程 雷达2
2021-07-10 18:50:53

我试过四处寻找如何反汇编整个二进制文件。我发现,pd $s并且pdf @@f是最广泛推荐的 2 个命令。我可以理解后者的工作原理,但我不明白前者是如何工作的。

说明(从p?)的pd- “拆机Ñ操作码”
描述(从?$?)的$s- “文件大小”

因此,pd $s之间有什么区别pdf @@f使用哪个命令反汇编整个文件?

1个回答

pdf @@fisdisassembly function并迭代所有函数 ( @@f),所以很明显你需要有一些函数。如果您的功能没有被分析,那么您将无法反汇编这些功能。请参阅以下示例输出(截断)

❯ r2 /bin/ls
[0x000067d0]> pdf @@f //<- nothing printed as functions not analyzed
[0x000067d0]> aaa
[x] Analyze all flags starting with sym. and entry0 (aa)
...
[0x000067d0]> pdf @@f
Linear size differs too much from the bbsum, please use pdr instead.
...
Do you want to print 15755 lines? (y/N)

您可以清楚地看到,如果不分析二进制文件,pdf @@f.

另一方面,您可以在pd $s没有任何分析的情况下运行,它会开始打印反汇编,但它会忽略可能存在的任何文件结构。

❯ r2 /bin/ls
[0x000067d0]> pd $s
Do you want to print 142792 lines? (y/N)

那么使用哪一种呢?pdf @@f如果您知道该文件是某种二进制可执行文件格式,我会在分析后进行。如果您有“未知”数据并​​想查看字节是否有意义,因为操作码可能更好的选择是pd $s.