静态反汇编和动态反汇编有什么区别?

逆向工程 艾达 拆卸 ollydbg 反汇编者
2021-06-16 09:21:38

听说IDA Pro之类的工具是静态反汇编工具,OllyDbg之类的工具是动态反汇编工具。

但是从这些工具的使用经验来看,我认为在拆卸过程中这些工具之间没有任何区别

基本上您需要做的就是将二进制文件加载到 IDA 或 OllyDbg 中,它们将使用某些递归反汇编算法来反汇编二进制文件并为您提供输出。

我错了吗..?那么静态反汇编和动态反汇编有什么区别..?

谢谢!

2个回答

你在这里混了。没有动态反汇编和静态反汇编之类的东西,而是动态的

动态程序分析是通过在真实或虚拟处理器上执行程序来执行的计算机软件分析。

二进制文件的静态分析

静态程序分析是在没有实际执行程序的情况下对计算机软件进行的分析

上面提到的工具有什么不同的反汇编引擎,它们有时会产生不同的结果,主要来自结合了反汇编技术的二进制文件。

我实际上不认为有任何混淆。事实上,存在两种反汇编技术:静态和动态。此处提供的定义来自 2003 年关于代码混淆的出版物:http : //www.cs.arizona.edu/solar/papers/CCS2003.pdf

  • 静态反汇编是在反汇编过程中不执行被反汇编的文件。

  • 动态反汇编是在某些输入上执行文件并且外部工具(调试器,...)监视执行以识别正在执行的指令的地方。

此链接 ( http://www.maqao.org/publications/madras_techreport.pdf ) 提供了一些反汇编程序和二进制仪器使用的技术的有趣报道。虽然它并不详尽,也没有直接回答您的问题,但您会找到更多参考资料进行检查。

关于动态和静态二进制分析,这两种技术主要用于分析应用程序。目的是获取有关热点、内存访问模式、...

  • 静态分析通常是基于无需执行该分析程序。它主要基于查找模式,计算内存引用,......关于静态程序分析的维基百科页面,在我看来,不完整,但仍然是一个很好的阅读。

  • 动态分析,在另一方面,涉及执行程序并需要基本块,如循环,功能仪表,...该仪器由一个基本块的入口和出口,这将根据测量的时间插入探针的某个指标(CPU 周期、以微秒为单位的时间,...)。分析后收集的信息通常用于优化应用程序,方法是使用合适的展开因子执行循环展开,如果可能的话进行矢量化(SSE、AVX、Altivec 等)等。

许多工具都执行后一种技术:英特尔的 VTune、MAQAO、DynInst、gprof、...

我自己写了一个GCC插件,你可以在我的 Github 上的/yaspr/zebuprof路径下找到,它在源代码级别进行检测并执行静态和动态分析。

我希望这可以澄清一些事情。