我不知道目前有任何工具可以执行此操作,但在复杂或混淆的程序中似乎很有用。有想法,问题或评论吗?
#1 楼
基本思想并不是什么新鲜事物,而且之前已经做过好几次了。IDA还具有其鲜为人知的跟踪功能,该功能可以使用任何可用的调试后端,包括PIN(有关此消息的过时之处在这里)。
Lighthouse是最近出现的新手之一,它看起来非常漂亮。
您甚至可以使用Cheat Engine进行一些描述,我敢肯定还有很多其他我还没有听说过的工具。
但是,总会有创新的余地,因此,如果您找不到所需的东西,请不要让它阻止您自己制造。
评论
哇,灯塔看起来很棒!我将使用这些工具,并对该主题进行更多思考,以查看可能有哪些改进。谢谢。
–肖恩
18年7月31日在20:35
也检查这张旧纸上的一些漂亮的图片
–伊戈尔·斯科钦斯基♦
18年7月31日在21:01
是的,我熟悉/这项工作。
–肖恩
18年7月31日在21:08
这是一个不断发展的概念。一个基于Web的前端(具有可能与IDA集成的未来功能),其时标会滑动(例如:bl.ocks.org/cosmiclattes/6976316),在映射到以下位置时显示每个时间点的DLL调用堆栈层次结构一个函数调用图,显示相应时间的节点活动。这些信息的时序视图可能很有趣...
–肖恩
18年8月1日在20:46
#2 楼
您所描述的似乎似乎或至少非常类似于动态二进制检测,并且有很多工具可以执行此操作。 DynamoRIO,frida和Pin工具是三个广为人知的工具。如果您愿意使用静态仪器,那么angr是另一个不错的选择。
评论
似乎确实是我想象中的一部分。时髦。我可能是错的(诚然,我并没有太多使用这些工具),但我认为它们没有提供一种可视化数据流直至基本块级别的方法。只是文字?
–肖恩
18年7月31日在19:57
您可能对可视化是正确的。但是,我认为使用这种工具并不是大多数的努力。您应该考虑将所需的可视化效果添加到现有工具之一(最好具有易于扩展的界面?)。
– NirIzr
18年7月31日在20:01
感谢您的想法。我同意,可视化不是很性感,所以这不是大多数工作的重点。我当时正在考虑搭配IDA。
–肖恩
18年7月31日在20:08
其中一些工具具有一些IDA集成/插件。我相信他们会感谢您的贡献。
– NirIzr
18年7月31日在20:09
评论
据我了解,您想使用仿真器对二进制文件进行动态分析,并将结果添加到静态分析结果中以增强它(例如IDA静态分析),并且因为混淆的程序可能会误导大多数使用这种静态分析方法的反向工程师通过将内存中真正执行的二进制结果与静态分析结果相加,可以消除这些窍门,您可以同时区分程序集和图形两者,似乎动态二进制工具可以做到这一点,但为什么不使用unicorn-engine做到这一点呢?将结果添加到IDA静态分析中。github.com/deresz/funcap似乎与您想要的非常相似,有关此插件的更多信息recon.cx/2014/slides/FunCap.pdf和hex-rays.com/contests/2013/index.shtml#funcap从幻灯片Funcap –功能(2)构建运行时调用图|独角兽引擎支持的github.com/cseagle/sk3wldbg IDA Pro调试器插件| github.com/36hours/idaemu idaemu是IDA Pro插件-用于在IDA Pro中模拟代码。
是的,动态二进制仪器是我现在正在寻找的地方。 Funcap看起来很有趣,谢谢。我认为我正在考虑的是按API调用执行的程序的时序视图,并按顺序排列了函数执行的顺序。以前,我曾考虑使用IDA通过脚本从调试器中提取信息,但现在我认为,利用PIN或DynamoRIO会更好。我认为我正在考虑的显示器可能需要位于IDA的外部。使用bl.ocks.org/cosmiclattes/6976316
对DLL调用系列和函数调用图进行分组
我建议您将PIN用于动态二进制工具+ graphviz进行可视化,如果您想跟踪差异,例如查看程序所采用的执行路径,并查看两个不同执行之间的差异,则可以使用PIN + IDA。 github.io/blog/2013/08/31/…
我以前没有使用过PIN,昨天我在Linux VM上遇到了一些构建问题。仍在解决设置问题,可能与gcc有关。由于演示许可证的限制,目前我不得不离开IDA。寻找比graphviz更具交互性的东西。