我试过四处寻找如何反汇编整个二进制文件。我发现,pd $s
并且pdf @@f
是最广泛推荐的 2 个命令。我可以理解后者的工作原理,但我不明白前者是如何工作的。
说明(从p?
)的pd
- “拆机Ñ操作码”
描述(从?$?
)的$s
- “文件大小”
因此,pd $s
和之间有什么区别pdf @@f
?使用哪个命令反汇编整个文件?
我试过四处寻找如何反汇编整个二进制文件。我发现,pd $s
并且pdf @@f
是最广泛推荐的 2 个命令。我可以理解后者的工作原理,但我不明白前者是如何工作的。
说明(从p?
)的pd
- “拆机Ñ操作码”
描述(从?$?
)的$s
- “文件大小”
因此,pd $s
和之间有什么区别pdf @@f
?使用哪个命令反汇编整个文件?
pdf @@f
isdisassembly 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
.