彩票走势图

VMprotect源代码保护底层原理机制

原创|其它|编辑:郝浩|2012-11-13 16:36:16.000|阅读 2130 次

概述:VMProtect 是新一代的软件保护系统,不像其它常见的保护系统,VMProtect 可以修改应用程序的源代码。过对应用程序代源码的修改,来实现对软件的保护。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

代码保护利器VMProtect在线订购315特惠,个人授权专享折扣立即购买>>

VMP简单介绍

是一款虚拟机保护软件,是目前最为流行的保护壳之一,与其他类型保护软件不同的是,它使用的是虚拟机保护技术,侧重点在于保护所指定的函数,增加逆向分析的复杂度。

VMP逆向分析

  1. 虚拟机保护特征:

    • 将由编译器生成的本机代码(Native Code)转换成字节码(Bytecode)
    • 将控制权交由虚拟机,由虚拟机来控制执行
    • 转换后的字节码非常难以阅读,增加了破解的复杂性

    虚拟机其实就是一个字节码解释器,它循环的读取指令并执行,并且它只有一个入口和一个出口(vm_exit)。通过静态分析,我们可以分析出整个执行引擎的完整代码。

    将所有选项全部开启后的结果如图:

    这时大量的fakejcc(虚假跳转)和垃圾指令使原来十分简单的代码变得非常复杂。

    如果要对加了壳的程序做一些处理,比如设定一些规则,将虚假分支清除后,流程图就会和未加壳时一样清晰了。如果再清除掉垃圾指令,那就会更清晰了。经过处理后,新的流程图分析起来难度就会降低很多。如图:

  2. VMP的Handler

    VMP是基于堆栈的虚拟机(Stack-Based VirtualMachine),然而虚拟机指令并不显式的使用某个参数,而是先将参数压入堆栈,然后直接从堆栈中读取。例如:

    表达式:
    Add eax,ecx
    可以翻译为:
    Push ecx
    Push eax
    Add
    Pop eax

    无论push进来的是谁,Add指令总是读取并弹出堆栈中存放的值。

  3. VMP指令分类

    汇编指令在转换到虚拟机的指令体系的过程中,被最大限度的化简和归类了,VMP中的指令大体分五类:

    • 算术运算和移位运算
    • 堆栈操作
    • 内存操作
    • 系统相关(无法模拟指令)
    • 逻辑运算
  4. 逻辑运算指令

    Vmp中的逻辑运算只有一条指令:nor。这个指令在电路门中叫NOR门,它由三条指令组成,即not not and,与NAND门一样,用它可以模拟not and xor or这四条逻辑运算指令。

    转换公式 :
    P(a,b) = ~a & ~b
    not(a) = P(a,a)
    and(a,b)= P(P(a,a),P(b,b))
    or(a,b) = P(P(a,b),P(a,b))
    xor(a,b)= P(P(P(a,a),P(b,b)),P(a,b))

  5. 寄存器轮转

    VMP将所有寄存器都存放在了堆栈的结构中(VM_CONTEXT),结构中的每一项代表一个寄存器或者临时变量。但在运行过程中,其中的项所映射的真实寄存器都是不固定的,可以把它比作一个齿轮,每做完一个动作,部分项的映射就互换了一下位置,或者执行完一段指令,齿轮就按不固定的方向和度数转动一下,然后全部的项映射就改变了。VMP在生成字节码的过程中,维护了一份结构中每一项所映射的真实寄存器,但这只存在于编译过程,而在运行时是没有明确的信息的。这直接导致了分析和识别的难度。

  6. 字节码加密和随机效验

    VMP把解码算法分布到了Dispatch和每个Handler中,只有在取指令和取数据时才会解密,而每个解码的算法也都是不同的,并且它的Seed每次解密都会变化的。

    要写出字节码的逆算法不是不可以,但是复杂度太高,有些得不偿失。所以如果想要修改数据,还是使用HOOK的方式比较轻松。

    但是HOOK的方式得解决代码检测的问题,VMP注册版除了会加密字节码以外,还会随机对一段代码做检测,如果有错将无法运行。 VMP注册版中有一条叫指令( calchash),就是用来做检测的。VMP会在编译好的字节码中加一些自己的指令,每次执行都会随机对一段代码生成一个Hash结果,然后与另一个随机的数相加,结果必须为0,否则就会出错。如果要爆破或者修改VMP的代码,还需要处理这个过程。

综上所述:

是新一代的软件保护系统,不像其它常见的保护系统,VMProtect 可以修改应用程序的源代码。通过对应用程序代源码的修改,来实现对软件的保护。总而言之VMP 的设计原则就是用最简单的正向设计导致最难的逆向分析。本文仅介绍VMprotect软件保护的底层原理机制,以便大家对VMProtect的了解更加深入。

代码保护利器VMProtect在线订购315特惠,个人授权专享折扣立即购买>>


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP