我使用调试标头编译了cpython,我想使用radare2执行以下分析。

我遇到的问题是执行aaa(分析)部分需要花费永久时间(至少27小时)。

评论

好吧,您可以对其进行概要分析并提交错误报告:)

#1 楼

在启动时对二进制文件进行全面分析不是一个好习惯,雷达也不鼓励这样做。默认情况下,默认运行aaa是一项繁重的工作,在大多数情况下绝对不建议这样做或不需要这样做。

如radee博客的这篇高级文章所述:


代码分析不是快速的操作,甚至不是可预测的,也不是花费线性时间进行处理。与仅加载标头和字符串信息(如默认情况下那样)相比,这使开始时间非常繁琐。面对并以最佳方式解决它,可以节省CPU,内存以及为什么不节省:猫。


要使分析过程更高效,您可以从在radar中配置不同的分析配置变量开始。这些配置变量可以帮助您使分析过程适合您的程序和需求。一些有趣的变量是:

anal.afterjmp  
anal.depth  
anal.eobjmp  
anal.esil  
anal.hasnext  
anal.nopskip  
anal.from
anal.to


请参阅e??anal.命令以获取有关它们的详细说明。

对程序的分析不仅是执行一项操作,而是它-它是根据不同需求的不同分析而组合而成的。
radare实现了许多执行不同分析类型的命令。聪明地使用这些命令可以帮助您快速进行分析,并仅分析您认为最重要的部分:


通过前奏指令查找功能(aap) >通过跟踪调用(aac)识别功能
检测跳转表和指向代码段的指针(/V
分析操作码的绝对和相对引用(aa\r
查找对a特定地址(/r
模拟代码以标识新的指针引用(aae
使用二进制头信息查找公用函数(aas
假定函数是连续的(aat

总结起来,您应该考虑并计划最适合您的分析过程:


Radar2不是一个即点即用程序,它是一组正交工具和命令,可让您了解,分析,操纵和使用大量二进制类型。 ..只有经验和理解才能使您控制自己的工作。问题,请随时在github上打开一个问题。

评论


鉴于此答案已设置为正确的,知道您使用了哪些分析开关专门分析该二进制文件以及花费了多少时间会很有趣。

– newlog
17年12月12日上午11:46