在Alam 中,您可以找到反汇编程序之间的经典区别。作者概括地解释了两种众所周知的反汇编程序:
所述线性扫描技术从代码的第一字节开始,并且在时刻直到结束拆卸一个指令。[...]
该递归遍历技术依赖于程序的控制流,并按照该程序的控制流解码字节。[...]
随后,作者介绍了distorm,并发表了如下声明:
这两种技术都有一些不足。为了克服这些缺陷, 一个好的反汇编程序会结合这两种技术。一种用于非商业用途的开源反汇编程序是 distorm。
阅读distorm的文档后,我无法确认这最后一句话。在我看来,distorm 似乎像经典的 Linear-Sweep 版本一样工作,并且还会与虚假指令和混淆(参见1)作斗争。它称自己为“流反汇编器”,我无法完全阐明这个表达式。
有了这些事实,我有两个问题:
distorm真的是作者所说的线性扫描和递归遍历的结合吗?
您对“流反汇编器”的正式理解是什么?
0第 47 页,Alam、Shahid 等人。“变形恶意软件分析和实时检测的框架。” 计算机与安全 48 (2015):212-233。