代码保护软件VMProtect加壳脱壳原理总结

news/2024/7/5 3:33:01

VMProtect是一种很可靠的工具,可以保护应用程序代码免受分析和破解,但只有在应用程序内保护机制正确构建且没有可能破坏整个保护的严重错误的情况下,才能实现最好的效果。

VMProtect通过在具有非标准体系结构的虚拟机上执行代码来保护代码,这将使分析和破解软件变得十分困难。除此之外,VMProtect还可以生成和验证序列号,限制免费升级等等。

下载VMProtect最新试用版

VMProtect正版授权在线订购享受最低价,仅售801元起!还不赶紧加入你的订购清单?>>更多详情可点击咨询购买

1.与传统的加壳工具不同,不是简单的把目标进行压缩、内存解压运行,而是修改目标源码,让目标的部分指令在vmp创建的虚拟环境下运行,虚拟环境中无操作数比较指令、条件跳转和无条件跳转指令;

2.被修改替换的目标指令最终形成的字节码有前后相关性,即你改变其他任意一个字节会影响到所有被vm虚拟化的指令

3.vmp的虚拟机其实是一个字节码解释器,循环的读取指令并执行,并且只有一个入口和一个出口

4.虚假跳转和垃圾指令, vmp会使用大量的虚拟跳转和垃圾指令将原有简单的代码变得复杂

5.vmp是基于堆栈的虚拟机,虚拟机指令不是显示的读取参数,而是把要使用的参数压入堆栈,而后直接从堆栈中读取

6.vmp指令
1)算数运算和移位运算
2)堆栈操作
3)系统相关
4)逻辑运算,这个最复杂,vmp中只有一个逻辑运算指令nor, 它可以模拟not and or xor 四个逻辑运算指令

7.vmp寄存器轮转

mvp将所有的寄存器都放在一个堆栈的结构vm_context中, 结构中的每一项代码一个寄存器或临时变量
在程序运行过程中, vm_context结构中保存的寄存器不是固定的,每当执行完一个操作或一个指令结构中的项与真实寄存器之间的映射关系会发生变化,就像一个齿轮随机的转动了一下, 转动过后原有的映射关系全部改变了

8.字节码加密和随机效验
随机效验比较牛B, vmp会在编译好的字节码中加入自己的一些指令(专属于vmp自动的指令), 每一次执行都会对一段代码随机生成hash值, 然后与另一个随机数相加, vmp要求相加的结果必须为0, 否则会出错.

如果您对该加密/解密软件感兴趣,欢迎加入加密/解密QQ交流群:740060302


http://www.niftyadmin.cn/n/3032417.html

相关文章

ArcEngine+VC6二次开发之添加ESRI MapControl不支持此接口的解决办法

ArcEngineVC6二次开发 添加ESRI MapControl不支持此接口的解决办法 系统开发环境如下所示: ArcGIS Engine 9.3 RuntimeSDK VC6.0 一、创建一个VC工程 使用AppWizard来创建MFC工程(选择File->New->Project Workspace菜单, 这时弹出创建向导对话框&a…

FastReport VCL报表工具创建样式集教程

FastReport VCL是用于 Delphi、C Builder、RAD Studio 和 Lazarus 的报告和文档创建 VCL 库。它提供了可视化模板设计器,可以访问 30 多种格式,并可以部署到云、网站、电子邮件和打印中。 立即点击下载FastReport VCL v6.9最新版 以下代码演示了创建样…

HDU-1069-Monkey and Banana

链接:https://vjudge.net/problem/HDU-1069#authorprayerhgq 题意: 一组研究人员正在设计一项实验,以测试猴子的智商。他们将挂香蕉在建筑物的屋顶,同时,提供一些砖块给这些猴子。如果猴子足够聪明,它应当能…

长连接与短连接——JDK的HttpClient、ApacheHttpClient及OkHttpClient类比——Feign产品优化

目录 O、长连接与短链接 dubbo用长连接。 一、JDK的HttpClient 1.1、是否缓存复用是动态处理的: 1.2、HttpURLConnection、HttpClient、KeepAliveCache三个类的简单关系为: 1.3、链接缓存:继承自HashMap的实现。map的key也是特殊定义的…

wince 串口调试信息输出

不管在WinCE5.0还是在WinCE6.0中,我们在调试驱动或者应用的时候都会用到打印函数。在驱动里面,我们可能会用DEBUGMSG(..),RETAILMSG(..),还有NKDbgPrintfW(..)。在我们使用这些打印函数调试我们的程序之前,我们需要实现…

5. 内部类

内部类 在外部类中,内部类定义位置与外部类成员所处的位置相同,因此称为成员内部类。 1、实例内部类 即未被static修饰的成员内部类。 //外部类 class OuterClass {public int data1 1;private int data2 2;public static int data3 3;public Ou…

@Bean 注解

Configuration 以及其中的 Bean 注解 Configuration 注解: Target(ElementType.TYPE) Retention(RetentionPolicy.RUNTIME) Documented Component public interface Configuration {String value() default ""; } 从定义来看, Configuration 注解是用 Component 注解…

poj 3613(最短路)

题意&#xff1a;求解经过不多于某边数的最短路 思路&#xff1a;矩阵连乘&#xff0c;乘的次数就是不多于某边数的最短路&#xff0c;题目给出的顶点需要映射处理 View Code 1 #include<iostream>2 #include<map>3 #include<stdio.h>4 #include<string.…