HI~您好,欢迎您访问"北京金科合创软件官方网站",购买正版软件、海外正版软件商城就选金科软件(Goldk Software) 咨询热线:15210221926  金科软件-国内外正版软件服务商
您的位置: 首页>技术支持>Code Virtualizer

使用教程丨Code Virtualizer 的工作原理

发布时间:2022-12-05 15:44:33点击量:

虚拟化 x86 代码(32 位或 64 位)的整个过程可以分为以下几个阶段:
•读取要保护的敏感代码块:Code Virtualizer 将在编译后的应用程序中搜索开发人员在其源代码中插入的所有敏感块  
•为应用程序创建一个独特的虚拟机:Code Virtualizer 使用其多态引擎创建一个独特的虚拟机来解释转换后的虚拟操作码
•Convert original x86 opcodes into specific virtual opcodes : Code Virtualizer 会将原始 x86 操作码转换为特定操作码,这些操作码只能由先前生成的唯一虚拟机理解
•Destroy the original x86 opcodes and redirect the execution to the Virtual Machine:Code Virtualizer 破坏原始 x86 操作码并将块中的第一条指令重定向到虚拟机,执行虚拟操作码而不是原始 x86 操作码
Code Virtualizer 在 PE 文件的最后部分(或在Stealth Mode中您自己的代码中)创建唯一的虚拟机和虚拟操作码,使 PE 文件具有与原始格式完全相同的格式,并避免有人识别该代码Virtualizer 存在于应用程序内部。
针对逆向工程的代码虚拟器
代码虚拟化包括将二进制代码从特定机器转换为另一台机器可以理解的不同二进制代码。也就是说,来自特定机器的指令集被转换成不同机器可以理解的新指令集。下图表示从一个 Intel x86 指令块到另一台机器(特别是 RISC 32 位 CPU)的新指令集的转换:

Code Virtualizer 可以生成多种类型的虚拟机,每种虚拟机都有不同的指令集。这意味着可以将特定的 Intel x86 指令块转换为每台机器的不同指令集,从而防止攻击者识别 x86 指令转换后生成的任何虚拟操作码。下图展示了如何将 Intel x86 指令块转换为不同种类的虚拟操作码,以供不同的虚拟机模拟。
 

当攻击者试图反编译受 Code Virtualizer 保护的代码块时,他将找不到原始的 x86 指令。相反,他会发现一个全新的指令集,他或任何其他特殊的反编译器都无法识别。这将迫使攻击者经历极其艰苦的工作,以确定每个操作码是如何执行的,以及特定虚拟机如何为每个受保护的应用程序工作。Code Virtualizer 完全混淆了虚拟操作码的执行和对每个独特虚拟机的研究,以防止有人研究虚拟操作码是如何执行的。
 
下图表示原始编译应用程序的图像(在受保护之前)以及它在受 Code Virtualizer 保护时的转换方式:
 
 
如图所示,Code Virtualizer 需要将生成的虚拟机嵌入到受保护应用程序的末尾(或在隐身模式下嵌入您自己的代码中),以便在执行虚拟操作码时模拟它们。虚拟机的大小可以从 500Kb 到超过 3Mb 不等!(取决于所选的虚拟机架构)。您还可以压缩生成的虚拟机和虚拟化代码,以减小磁盘上最终应用程序的大小。

上一篇:返回列表

下一篇:使用教程丨Code Virtualizer 与其他压缩机/保护器的兼容性

微信公众号

  • 回到顶部
  • 15210221926
  • Goldk-AGE
  • 微信公众号