如何使用 Ghidra 处理 VM 混淆二进制文件?

逆向工程 拆卸 去混淆 吉德拉 虚拟机
2021-06-28 05:03:39

“VM 混淆二进制文件”是指包含一个或多个内部 VM 实现的二进制文件,以及一些可以在该 VM 上运行的字节码。这个二进制文件之所以这样的原因之一是混淆了字节码中的一些逻辑。我看到有人对 IDA Pro 提出了类似的问题该问题的答案表明,IDA Pro 不支持开箱即用地反汇编此类字节码,但有一个插件可以提供帮助。另一个问题更笼统,不特定于任何工具,如 IDA Pro、Ghidra 等。

注意:我问的不是二进制文件在虚拟机中运行的情况,例如 Virtual Box,因为它被怀疑是恶意软件,并且在虚拟机中运行它是一种保护形式关于如何使用 IDA Pro、radare2等对在虚拟机中运行的此类二进制文件进行逆向工程,已经提出了各种问题在感兴趣的情况下,我们讨论的是一个在内部实现自己的 VM 的二进制文件,而不是一些像 Virtual Box 这样的外部 VM。

因此,分解实现 VM 的二进制文件部分不是问题。手头的问题是字节码。Ghidra 本身并不支持字节码架构,所以我正在努力使用 sleigh 来指定它等;那是另一个问题。

当前的问题——假设我有一个完整的字节码反汇编器:

  1. 有没有一种很好的方法可以以编程方式确定代码可能正在实现 VM?

  2. 有没有一种很好的方法来以编程方式找出字节码的开始和结束位置?比如,在实现 VM 的代码中寻找模式?

  3. 我应该尝试使用 Ghidra 脚本来实现它吗?或者写一个 Ghidra 分析器?或者是其他东西?
0个回答
没有发现任何回复~