转载 2006年06月03日 13:54:00

Latest Version: 1.0 | Latest Release: | Release Date: 01-Jun-2006

Code Virtualizer is a powerful code-obfuscation system that helps developers protect their sensitive code areas against Reverse Engineering while requiring minimum system resources.

Code Virtualizer will convert your original code (Intel x86 instructions) into Virtual Opcodes that will only be understood by an internal Virtual Machine. Those Virtual Opcodes and the Virtual Machine itself are unique for every protected application, avoiding a general attack over Code Virtualizer.

Code Virtualizer can protect your sensitive code areas in any x32 and x64 native PE files (like executable files/EXEs, system services, DLLs , OCXs , ActiveX controls, screen savers and device drivers).

When an application is being created, the Compiler will compile the application source code into several object files made of machine language code. Afterward, the object files are linked together to create the final executable.

Figure 1: Compilation of your source code

When an attacker tries to crack a compiled application, he will use a decompiler tool which will decompile the machine language code into a more comprehensive code (like assembly code or a higher programming language), doing his research over the decompiled code.

Figure 2: Decompilation of your application

When the attacker has a good knowledge of the target application, he can modify the compiled application to alter its behavior. For example, the attacker could bypass the routine that checks for the trial period in an application and make it run forever, or, even worse, cause the application to behave as if it was registered.

Code virtualization consists of the transformation of binary code from a specific machine into a different binary code that is understood by another machine. That is, the instruction set from a specific machine is converted into a new instruction set which is understood by a different machine. The following picture represents the transformation from a block of Intel x86 instructions into a new instruction set for another machine (specifically a RISC 32-bit CPU):

Figure 3: Transformation from x86 to RISC 32-bit CPU

Code Virtualizer can generate multiple types of virtual machines with a different instruction set for each one. This means that a specific block of Intel x86 instructions can be converted into different instruction set for each machine, preventing an attacker from recognizing any generated virtual opcode after the transformation from x86 instructions. The following picture represents how a block of Intel x86 instructions is converted into different kinds of virtual opcodes, which could be emulated by different virtual machines.

Figure 4: Transformation from x86 to multiple Imaginary CPUs

When an attacker tries to decompile a block of code that was protected by Code Virtualizer, he will not find the original x86 instructions. Instead, he will find a completely new instruction set which is not recognized by him or any other special decompiler. This will force the attacker to go through the extremely hard work of identifying how each opcode is executed and how the specific virtual machine works for each protected application. Code Virtualizer totally obfuscates the execution of the virtual opcodes and the study of each unique virtual machine in order to prevent someone from studying how the virtual opcodes are executed.

Code Virtualizer can be embedded inside your Win32 and Win64 applications and device drivers with ease. You just need to select which areas in your source code are going to be protected by Code Virtualizer. The following example shows how you can protect a block of code in a C application.

  #include <stdio.h>
  #include "VirtualizerSDK.h"

  void main()
      VIRTUALIZER_START      // the area to protect starts here

      printf("Hello World");

      VIRTUALIZER_END       // end of area to protect

The VIRTUALIZER_START/VIRTUALIZER_END macros are dummy macros which do not interfere with the execution of the original application. It's only in protection-time when Code Virtualizer will recognize those areas of code and will covert them into unique virtual opcodes, which are then emulated by a virtual machine when the protected application is running.

The following picture represents the image of an original compiled application (before being protected) and how it's transformed when it's protected by Code Virtualizer:

Figure 5: Original Application versus Protected Application

As the image shows, Code Virtualizer needs to embed the generated virtual machine at the end of the protected application in order to emulate the virtual opcodes when they are going to be executed. The size of the virtual machine can vary from 10 Kb to 30 Kb (depending on the complexity level selected), making no impact in the final size of the protected application.

Code Virtualizer is a powerful technology that can prevent someone from inspecting your sensitive code, such as your routines that validate an entered serial key for registering your application. Also, Code Virtualizer slightly modifies the PE header of the protected application, meaning you could put a compressor or other software protector on top of Code Virtualizer with no problems.

If you are a device driver developer and felt neglected when there was no solution to protect your device drivers, Code Virtualizer offers you the same technology to do so (for either 32-bit and 64-bit drivers) in the same way as your applications and DLLs.

Try Code Virtualizer today and start inserting the latest software protection into your Win32/Win64 applications and device drivers!

Inside Code Virtualizer

Written by Scherzo    This article aim to explain how Code Virtualizer works. During the last month,...
  • iiprogram
  • iiprogram
  • 2008年08月26日 16:45
  • 1254

Oreans代码混淆,软件保护工具Code Virtualizer与Themida新版发布,下载戳这里!

近日,oreans旗下代码搅乱系统Code Virtualizer与windows软件保护系统Themida分别更新了v2.2.2与v2.4.6版本,需要的小伙伴立即下载体验吧! Code Virt...
  • HDrelease
  • HDrelease
  • 2017年03月14日 10:58
  • 615

Code Virtualizer keyfile by softworm

From bbs.pediy.com 
  • linhanshi
  • linhanshi
  • 2007年03月07日 00:17
  • 494

Code Virtualizer

  最新版本 1.2 | 最新 修订 | 推出日期 21-Aug...
  • linhanshi
  • linhanshi
  • 2006年08月21日 22:23
  • 2556


通过搜索资料发现大部分都是讲的Equalizer怎么使用,而同时出现的BassBoost和Virtualizer却鲜有人提起。在这里简单说下。 这两个类的意思分别是低音增强和虚拟化,具体什么音效作为...
  • u011487510
  • u011487510
  • 2015年06月24日 09:28
  • 1940

iOS开发笔记--添加第三方类库造成的linker command failed with exit code 1 (use -v to see invocation)的错误调试

linker command failed with exit code 1 (use -v to see invocation)这个错误貌似遇见并不止一次,当我想用某个第三方类库的时候(如SBJso...
  • errvv
  • errvv
  • 2016年01月22日 10:11
  • 655

linker command failed with exit code 1 (use -v to see invocation)删除sdk或者静态库之后,没清干净,导致路径下还有

linker command failed with exit code 1 (use -v to see invocation)删除sdk或者静态库之后,没清干净,导致路径下还有起因: 哎呦我去,...
  • cjb1224_0513
  • cjb1224_0513
  • 2016年11月11日 15:45
  • 714

iOS常见错误之 linker command failed with exit code 1(use -v to see invocation)

最近时常遇到这个问题,出现这个错误原因有三: 1、引用.h文件时不小心引用成.m文件了; 2、重复导入了一些文件; 3、一些必要的依赖库未导入;如果因为前两种原因,那么是细心问题,比较好解决,但...
  • qcx321
  • qcx321
  • 2016年10月31日 17:06
  • 2067

Xcode报错: linker command failed with exit code 1 (use -v to see invocation)

Xcode报错: linker command failed with exit code 1 (use -v to see invocation) 所有pod引入的第三方都not found; ...
  • zhanglizhi111
  • zhanglizhi111
  • 2017年03月22日 17:00
  • 2601

Xcode7 出现 linker command failed with exit code 1 (use -v to see invocation)解决方法

出现这种情况的原因有几种: 1.可能是 Xcode7  在新建工程是 Enable Bitcode 默认未 YES,把其改为 NO,就搞定了。(Build Settings -> Enable Bi...
  • Boyqicheng
  • Boyqicheng
  • 2015年12月07日 15:02
  • 1407