-
-
[翻译]手把手静态分析FinSpy VM:第三部分,去虚拟化
-
发表于:
2018-3-19 10:25
6211
-
[翻译]手把手静态分析FinSpy VM:第三部分,去虚拟化
这是我关于静态分析FinSpy VM系列文章的第三部分也是最后一部分。第一部分对FinSpy的x86实现进行了反混淆处理 ,第二部分分析了VM,对特定样本的字节码格式编写了反汇编程序。现在我们的任务是重构虚拟化之前的x86代码。和以前一样,相关文件在这里。
添加了去虚拟化代码并大部分分析过的IDB
去虚拟化程序
具有各种程度简化的FinSpy VM字节码反汇编结果
去虚拟化代码的二进制文件
由于FinSpy VM是一种强度低效果差的保护,分析并不是很困难。我们分析的样本的字节码程序中超过一半的VM指令已经包含原始x86机器码。事实证明,FinSpy只能真正实现少数x86指令的虚拟化,并且这种简单的模式匹配对于重构原始代码来说非常有效。这也许是我所知道的最简单的值得称之为虚拟化混淆器的软件保护——这对于实践更复杂的软件保护来说是很好的例子。
和第一部分一样,我试图用逐步分析的教程的风格来编写。我们从分析FinSpy VM字节码反汇编的基本原理开始,并展示所有步骤(以及我写的代码)。希望我已经设法展现了观察的过程、设计中考虑的问题、采取的包括错误的步骤在内的行动,最重要的是,分析过程反复试错的本质。
这部分写得比预期更长,也更困难。事实上,把这个文档写成教程比起做这项工作要困难得多。我希望这一努力在教育价值方面有所回报。因为我个人不喜欢彼此之间没有很好的隔离的大段文档,所以我决定将去虚拟化过程和本文档分成许多阶段,每个阶段都在我自己的个人博客中。它们目前在线并可供阅读,链接就在下面。每个单独的部分链接到该阶段使用的代码和二进制文件。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2018-3-29 19:14
被houjingyi编辑
,原因: