动态计算基本块的快速方法是什么?

逆向工程 视窗 二元分析
2021-07-07 10:28:10

我正在尝试向静态分析器添加基本块计数。该分析器本身使用PIN作为此类作品的默认工具。

所以,我写了一个 pintool 来计算基本块。但是,当我尝试打开复杂的 PDF(例如使用 3D)或 Excel 时,大约需要 5 分钟才能继续。

我也在研究DynamoRIO,但仍然没有运气!

任何可以更快地计算基本块的解决方案?

2个回答

您的 pintool 是否在调用一次后从块中删除对检测函数的调用?如果您只想知道到达哪些块而不是它们的次数,这可以帮助经常调用的块的性能。

DynamoRIObbcount示例应该为您提供了一个很好的起点,假设您真的想计算基本块在运行时执行的次数。此示例插入的检测非常接近您可以实现的最低限度(它直接插入一个指向全局缓冲区的增量指令,并尝试在标志失效的位置执行此操作,因此它可以安全地覆盖它们而无需恢复它们)。