有人将如何对受虚拟机保护的样本进行反向工程?问题是它不再是opcode,我不再知道它是bytecode,因为它是私有虚拟机,因此考虑到ida pro和其他工具无法正常工作,您将如何解决此问题,有些人可能会说找到OEP是有可能的,如果它是一个简单的打包机,在第一次命中时就可以完全将其自身开箱,但是这里不是这种情况。

我正在寻找有关解决方法的想法问题。

评论

如果您使用的是IDA Pro,则reverseengineering.stackexchange.com/questions/3969/…具有指向可能会有所帮助的插件的指针。

#1 楼

当样本受VM保护时,对代码本身进行逆向工程的唯一方法是从了解VM开始。

从我发现的结果来看,许多VM有两个共同点:


它们并不复杂(有时字节码指令本身只是被解码为x86指令-通常也包括一些VM指令)VM中的复杂性会很快降低性能。
它们通常很模糊。除了可以尝试的一些通用解决方案(即VMHunt)以外,通常还需要对VM进行反向工程,并了解VM如何解码字节码指令-以及每个VM指令的功能。然后,您可以使用该知识将字节码转换回其原始形式-在这一点上,您可以在IDA Pro中对其进行分析,等等。通常,最困难的部分是尽管混淆了理解VM的知识。

这可能是一个漫长/复杂的过程,我之前与代码虚拟化程序一起工作过,并鼓励您开始阅读我在x86virt上的一些工作:

Devirtualizer源代码:https://github.com。 com / JeremyWildsmith / x86devirt

文章解释过程:http://jeremywildsmith.com/?blog%2Fx86devirt

评论


好吧,我来看看

– Zixcool
19年6月1日在9:37

嗨,@杰里米(Jeremy),谢谢您的回答。您的博客URL不再可用吗?我看不到文章解释这一过程。

–auspicious99
20年5月2日,14:52

您好@ auspicious99,域当前已关闭,暂时可以使用IP:206.189.209.209/?blog%2Fx86devirt

–杰里米
20年5月2日,18:10

谢谢@Jeremy,可以用。看起来令人印象深刻。需要尽快进行深入研究。顺便说一句,您是否熟悉Ghidra?我们正尝试使用Ghidra反向工程VM混淆代码。我已经在reverseengineering.stackexchange.com/questions/24896/上问了一个问题

–auspicious99
20年5月3日,2:50