Skip to content

VMProtect 虚拟机加密

Posted by admin on June 28, 2010

传统的软件保护系统都有一个共同的弱点,即他们都不修改源代码。保护方式仅仅是通过“信封”原理将软件主体封装起来,然后通过一个装载器解压保护的软件主体,解压后的软件在内存中很容易被转储并被非法修改。破解者拥有一系列反编译工具可以破坏这种保护,网络上也有许多文章阐述如何脱壳常规的保护软件。

与传统保护方式不同,虚拟机(Virtual Machine, VM)加密可以修改软件产品的源代码,转换部分代码为在虚拟机上运行的字节码(bytecode),保护后的代码完全在虚拟机中执行;而虚拟机的指令系统又完全不同于现有的 x86 指令,这样一来,破解者就需要开发一整套的解析引擎来分析和反编译字节码。以现有的解密理论,破解者想要还原出源代码几乎是不可能的。

参考下面的图片,您可以更直观的理解 VM 虚拟机加密:

vm 虚拟机加密技术

通俗的讲,虚拟机就是使用一种全新的“语言”来翻译原来的代码,这种“语言”只有 VM 引擎才能够理解。在没有任何参考资料的前提下,破解者想要学会这种“语言”是非常困难的。可以看出,虚拟机加密是目前强度最高的保护方式之一,可以有效阻止代码还原及分析。不同于传统的外壳式的保护方式,虚拟机加密可以使被保护的程序与保护系统完全融为一体,无法分离,也不存在“脱壳”的说法。

如何使用 VM 虚拟机加密?

Zprotect 为您提供多种方式来使用 VM 加密:

  1. 使用加密标记.
    # include <stdio.h>
    # include “ZprotectSDK.h”
    void main()
    {
    ZProtect_VM_START      // VM 开始标记
    printf(“Hello World”);
    ZProtect_VM_END        // VM 结束标记;标记间的代码会被虚拟化。
    }
  2. 使用自动 VM 功能.
    激活 VISO 引擎后,您可以通过点击“代码保护”面板中“自动选择函数”按钮来自动识别需要虚拟化的函数。

Spread The Love, Share Our Article

  • Delicious
  • Digg
  • Newsvine
  • RSS
  • StumbleUpon
  • Technorati
  • Twitter

Related Posts

There are no related posts on this entry.

Comments

There are no comments on this entry.

Trackbacks

There are no trackbacks on this entry.