Code Virtualizer是一款专业的代码混淆工具。最强大好用的代码混淆软件Code Virtualizer。此实用程序专门为帮助开发人员保护代码区域免受逆向工程而设计,可以对代码数据进行加密并将其转换为其他用户无法读取和解释的格式,并且如果您的应用程序有代码虚拟化,则可以完全保护您在应用程序源代码区域中选择的代码。目标是防止某人监视您的应用程序的实现方式或实现某些重要的例程(例如,检查试用状态,许可证处理等的例程),该程序将足以保护这些合理的代码区域,使用此软件,您可以可以确保源代码不受逆向工程任务的影响,并实现压缩代码数据。它具有极其简单的用户界面,并且非常友好。为有需要的用户下载
常见问题:
我可以将我的加密狗系统与Code Virtualizer一起使用吗?
当然! Code Virtualizer可以帮助您保护敏感的代码区域,检查这些区域中是否存在加密狗,以及使您与加密狗进行交互的方式变得模糊。
当我使用Code Virtualizer保护并在顶部放置另一个保护器时,它会因某些保护器而失败吗?
Code Virtualizer稍加修改了应用程序的PE标头,这不会影响放在顶部的其他压缩器/保护器,它应该可以正常工作。
如果选择在最后一部分(受代码保护的位置)中添加Code Virtualizer代码,而重定位部分是最后一部分,则如果将保护器放在顶部,然后保护器会删除重定位部分(以减少受保护的EXE)文件大小)。要解决此问题,我们建议您在使用压缩器/保护器时启用“剥离重定位”选项,或选择不删除“重定位”部分。
如果要从外部分析工具中完全隐藏Code Virtualizer的存在,则可以在“保护代码位置”选项中选择“隐藏模式”。使用此选项,如果文件在以后受到保护或打包,则应该没有问题。
我可以使用Code Virtualizer保护我的.NET应用程序吗?
不,Code Virtualizer仅适用于本机应用程序。任何发出x86操作码的编译器(适用于32位或64位应用程序)都可以由Code Virtualizer保护。
我可以使用Code Virtualizer保护我的Win9x / Me(.vxd)驱动程序吗?
不能,Code Virtualizer只能保护32位或64位平台上基于NT的系统(NT,Windows 2000,Windows XP,Windows 2003,Windows x64 ...)的设备驱动程序。
保护宏时如何插入备注?
Code Virtualizer可以将任何x86代码(32位和64位)转换为特定的虚拟操作码。您必须记住一些说明,以确保您的虚拟化代码将作为原始代码执行:
·为了避免降低应用程序性能,应避免保护重复的迭代子句(FOR,WHILE,DO ...)
·由于编译器已优化为使用数据表直接跳转到代码中,因此受保护的敏感区域中的Switch / Case语句可能无法正常工作。请注意,您可以在每个不同的Case中包含要保护的块区域,以通过Switch / Case语句执行。请参考下面的链接以获取解决方案。
·在受保护的敏感区域中的异常处理可能无法正常工作。您应该避免保护try-except子句(或Visual Basic中的On Error Goto语句)周围的敏感区域。
测试受保护的应用程序
当您使用Code Virtualizer保护敏感代码区域时,您的应用程序应以
原始应用程序,但是如果您不遵循上述任何说明,则您的应用程序可能会在相关敏感块中崩溃。 您可以通过选择/取消选择要保护的代码虚拟化面板块并再次重新保护应用程序来确定哪个敏感块有问题。
给设备驱动程序开发人员的说明
如果您在某些敏感区域中未遵循上述说明进行保护,则驱动程序将在系统中生成异常,并可能生成保护错误。 为避免系统中的数据损坏,您应始终在虚拟机(例如VMWare,VirtualPC或任何其他PC模拟器)下测试设备驱动程序。
使用说明:
代码虚拟器的工作原理
x86代码(32位或64位)虚拟化的整个过程可以在以下阶段进行描述:
·读取要保护的敏感代码块:Code Virtualizer将在编译的应用程序中搜索开发人员在其源代码中插入的所有敏感块
·为应用程序创建唯一的虚拟机:Code Virtualizer使用其多态引擎来创建唯一的虚拟机,以解释转换后的虚拟操作码
·将原始x86操作码转换为特定的虚拟操作码:Code Virtualizer将原始x86操作码转换为特定的操作码,只有以前生成的唯一虚拟机才能理解
·销毁原始x86操作码并将执行重定向到虚拟机:Code Virtualizer销毁原始x86操作码并将块中的第一条指令重定向到虚拟机,执行虚拟操作码而不是原始x86操作码
Code Virtualizer在PE文件的最后部分(或以隐藏模式在您自己的代码中)创建唯一的虚拟机和虚拟操作码,以使PE文件的格式与原始格式完全相同,并避免任何人识别代码虚拟化该设备存在于应用程序中。
用于逆向工程的Code 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保护应用程序的第一步是选择要保护的应用程序。您可以直接在“输入文件名”字段中输入名称,也可以浏览文件夹以选择所需的文件。您也可以打开以前保存的项目。
选择要保护的应用程序后,您将看到有关已加载的应用程序的信息,例如大小,文件类型以及最重要的虚拟化功能数量。如果未找到要虚拟化的功能,则Code Virtualizer将拒绝任何保护应用程序的尝试。要了解如何插入要虚拟化的功能,请阅读插入敏感代码区域。
选择了要保护的应用程序并且Code Virtualizer识别了所有要虚拟化的功能后,您可以继续选择所需的保护选项。
虚拟机设置
可用的拟机
此面板显示可以在受保护的应用程序中使用的所有可用虚拟机。一些虚拟机是公共的,其他虚拟机是特定客户的专用。您可以通过info@oreans.com与我们联系,以了解有关自定义虚拟机的更多信息。
假设您使用TIGER虚拟机两次保护同一应用程序。每个受保护的实例将包含一个唯一的TIGER虚拟机,该虚拟机具有与先前实例不同的寄存器,指令处理程序,操作码表等。他们将共享TIGER体系结构的内部框架。破解者必须研究TIGER架构的内部骨架,然后尝试找到一种方法来攻击TIGER架构的所有不同变体。该程序包括当前所有基于虚拟机的软件保护程序(它们使用由它们定义的内部体系结构模型的变异/变体)。
我们希望更进一步,借助强大的虚拟机生成器工具创建多个虚拟机体系结构。比较两个不同的体系结构名称(例如TIGER和LION)等效于将Intel x86处理器与ARM处理器进行比较。每个人都是完全独立的,无需考虑另一个人就可以发展。
复杂度和速度栏显示一些有关给定虚拟机的执行速度和复杂度的统计信息。请注意,这些值可能会根据内部虚拟机修订版的不同而变化(在各个版本中增加或减少)。
CPU字段允许您指定将为给定虚拟机体系结构生成的副本数。即使使用相同的体系结构名称,生成的虚拟机也将包含不同的寄存器位置,不同的处理程序,不同的操作码表等。当您为给定虚拟机插入多个CPU时,某些保护措施
des和VM宏将使用任何生成的虚拟化中央处理器。
如果使用(旧的)VIRTUALIZER宏(而不是在宏中指定虚拟机的名称),则可以选择将使用哪些选定的虚拟机来保护未分配给任何特定虚拟机的VIRTUALIZER宏。
选择虚拟机的准则
对于应该选择哪个虚拟机以获得其应用程序所需的安全性,开发人员可能会感到困惑。一些开发人员可能希望添加尽可能多的虚拟机和CPU,以大大提高其应用程序的安全性。这可能不会产生他们想要的效果。
1)只需插入一个虚拟机或其中的几个即可。如果插入多个虚拟机和CPU,它将在磁盘和内存上生成大型受保护的应用程序,因为某些虚拟机可能大于1Mb。请注意,如果您选择多个虚拟机并且未在下部的“虚拟化”面板中选择它们,则SecureEngine将不会在您的应用程序中插入这些虚拟机,因为它们不会受到保护以供使用(优化后的受保护应用程序的最终大小)
2)在应用程序中使用VIRTUALIZER宏时,应避免使用普通的VIRTUALIZER宏,并指定将保护特定宏的虚拟机体系结构(例如:“ VIRTUALIZER_TIGER_RED_START / END”),这将允许您使用复杂的虚拟机处理最敏感的代码和较轻量的虚拟机来处理需要虚拟化和高速执行的代码。
3)时不时考虑更新您的VIRTUALIZER宏,以指向其他或更新的虚拟机体系结构。如果您使用TIGER架构已有一段时间,则
保护宏
在“保护宏”面板中,您可以看到将为每个保护宏(VIRTUALIZER标记)保护的汇编代码。您还可以检查每个保护宏中是否引用了任何ANSI或UNICODE字符串,并确定是否要保护这些字符串(请参阅“其他选项”面板中的“虚拟化字符串”选项)
您也可以启用或禁用特定的受保护块。通常,您只需要在受保护的应用程序中找到有问题的块,这样取消选择的块就不会受到保护,这将导致应用程序以不同的方式运行或生成应用程序异常。如果您在保护特定宏时遇到问题,则应该这样做。
额外的选择
保护代码的位置
Code Virtualizer可以将保护代码插入应用程序的不同位置。通过选择一个或另一个位置,您可以或多或少地隐藏应用程序中Code Virtualizer的存在。
·插入最后一部分:保护代码将插入到应用程序PE标头的最后一部分。
·插入新的部分:不会修改应用程序的PE部分。 Code Virtualizer将在您的应用程序中创建一个新部分来插入保护代码。
·隐藏模式:对于完全希望在其应用程序中隐藏Code Virtualizer的用户,此选项是首选选项。基本上,您必须在应用程序代码中创建一个“可用”空间,将在其中插入保护代码。在“ StealthMode”子文件夹中,您可以找到有关如何使用不同的编程语言在自己的代码中创建可用空间的示例,以便您的应用程序可以支持“隐藏模式”功能。我们将很快增加对更多编译器的支持。
虚拟字符串
项将在VIRTUALIZER标记中找到对该字符串的所有引用,并将其从应用程序数据区域中销毁。当要从VIRTUALIZER标签内部访问该字符串时,保护代码将在另一个位置对其进行解密,并将其传递给您的应用程序。整个过程对您的应用程序完全透明。当您的应用程序引用其中任何一个时,请准备一个特定的字符串。
在“保护宏”面板中,您可以看到出现在每个宏中的ANSI和UNICODE字符串。
我们建议您选择ANSI
还是UNICODE,取决于您在VIRTUALIZER标记中使用的是ANSI还是UNICODE字符串。如果您的应用程序使用两种类型的字符串(非常少见),则应选择“ ANSI + Unicode字符串”选项。
压缩虚拟机
该选项将压缩(使用LZMA算法)代码虚拟器添加到所有虚拟机和受保护应用程序的虚拟化代码。磁盘上的保护代码将更小,最终受保护的应用程序不会增加太多。第一次调用任何保护宏时,将执行虚拟机的解压缩。 Code Virtualizer将检测到它具有自己的代码压缩并将继续解压缩。这意味着,第一次调用保护宏时,执行时间将受到很小的损失。
注意:启用隐藏模式时,压缩功能不可用。这是因为Code Virtualizer仅压缩其自己的代码(而不压缩您的应用程序代码),当将保护代码插入您自己的代码中间时,磁盘上的应用程序将不会缩减。只有在最后一个或新的部分中插入保护代码时,才能减小最终应用程序的大小。
重新定位
此选项将删除EXE文件的重定位部分,从而使受保护的应用程序更小。
伪堆栈模拟
仿真是应用程序的一个非常特定的选项,它假定将堆栈上未分配的值初始化为零。在某些PureBasic应用程序中会发生这种情况,只有在您的应用程序确实需要时才应启用它。
用户面本地化
您可以更改用户界面的语言。请注意,这仍然是实验性的,它可能不包含用户界面中最新更改的翻译。
保护您的应用
设置完所有保护选项后,如果要保护应用程序,只需按工具栏菜单中的“保护”按钮,就会出现上述窗口。要最终保护敏感代码,请按“保护”按钮,然后Code Virtualizer将生成具有特定操作码的多态虚拟机,以模拟应用程序中的原始代码。
软件功能:
便携式工具
一个便携式应用程序。您可以将其存储在USB闪存驱动器或其他便携式设备上,并随时随身携带。此外,您可以在没有管理权限的情况下运行它。
要获得其功能,只需打开可执行文件,因为该过程不包含任何设置。它将不会将条目写入Windows注册表,也不会将其他配置文件保留在目标PC上。它实际上将设置数据保存到存储设备。摆脱它意味着您可以简单地删除从Internet下载的文件。
像Vista的外观
Code Virtualizer提醒Vista查看并实现多个可固定面板,以快速访问配置参数。
软件包中包含帮助手册,但是在Windows 10上我们无法访问它。该功能包非常简单,因此您不会在调整过程中花费大量时间。
设置有关应用程序和加密数据的信息
Code Virtualizer为您提供有关程序名称和版本的详细信息,选择可执行文件(例如EXE,OCX,DLL,SCR),并指定保存目录或将文件保存到源文件夹。
您还可以查看有关文件大小,类型和最后修改日期的详细信息。可以将项目保存到计算机上的文件中,以备将来导入。
更重要的是,您可以配置多个虚拟机,调整保护宏(您可以直接从MAP文件读取数据),在最后/新部分插入保护代码或激活隐藏模式,虚拟化字符串,压缩代码,剥离重新定位并启用伪堆栈仿真模式。
总而言之,Code Virtualizer包括几个方便的混淆工具,可以帮助您抵抗逆向工程,以保护共享软件应用程序。
软件功能:
添加了对使用x64结构化异常处理的VM宏的支持
支持检测指向宏内部位置的宏标记以外的指针
支持Excelsior MAP文件的虚拟读取功能
支持将宏插入Golang编译的二进制文件(Windows,Linux,Mac i386 / amd64)
添加了DOLPHIN虚拟机
添加了EAGLE虚拟机
提高了生成内部虚拟机的速度
在MUTATE_ONLY宏中添加了对字符串虚拟化的支持
在用户界面中支持DPI扩展
使用多种混淆工具来保护共享的软件应用程序,这些工具可确保源代码免受反向工程任务和压缩代码数据的影响