【2-VMP源码泄露后的一些分析和用途】此文章归类为:2。
当谈及VMP(Virtual Machine Protect)源码时,我们必须理解它的基本作用和目的。VMP是一种用于软件保护的虚拟机解决方案,旨在通过虚拟化和加密技术来保护应用程序免受逆向工程和未授权访问的威胁。该源码通常由程序员用于保护其软件免受盗版和未经授权的修改。
VMP的作用
反逆向工程保护:VMP通过将原始代码转换为虚拟指令,使得对程序的逆向工程变得更加困难。这种虚拟化的指令是自定义的,与真实的指令不同,使得分析者难以理解和还原原始代码逻辑。
加密保护:VMP能够对程序进行加密,防止未经授权的访问。即使有人能够获取程序文件,但由于其加密特性,无法直接进行代码分析或修改。
防止调试和修改:VMP还能够检测和阻止程序被调试、修改或篡改,这有助于保护程序的完整性和安全性。
虚拟机混淆:通过将程序放置在一个虚拟环境中执行,VMP使得攻击者难以理解程序的真实执行逻辑,从而增加了程序的安全性。
VMP源码泄露后的一些槽点
鉴于源码完整的泄露,里面的引用更加明显了,特别是涉及使用了 GPL(GNU General Public License)协议的 DemanglerGnu
,libffi
。
(哪怕没源码,你也可以直接找到其中的符号,如图)
(官网最新的Demo版本仍旧有引用,并且这是强依赖)
Hex视图:

源码视图:

其中有两个以上的GPL,至于具体哪些库涉及了版权问题,自己看图。
在这里吐槽一下VMP的版权声明

(你为啥不开源呢?
此外,对于VMP的版权声明,存在一些争议,特别是在考虑到 DemanglerGnu
作为gcc的一部分,以GPL协议开源。GPL协议要求以GPL许可证发布的软件及其派生品,必须也采用GPL协议。因此,VMP源码的一部分可能也需要以GPL协议开放。
(个人认为使用vmp加密商业软件或许有版权风险)
VMP加壳流程分析
如下图:

这里是虚拟机编译的一个预览:

以及这依托的case:

还有让无数人头大的变异函数:

VMP源码的再利用
- 面向于linux方面的加壳:
众所周知,vmp windows版本默认是没有linux二进制加壳的,默认只有针对so的加壳,基于源码小改便可以进行linux加壳,包括调用其sdk的hwid函数,实现linux下的授权分发,如图:

接下来就是加壳:

运行:

一切完美运行,没有任何报错
- 针对Unity il2cpp的加壳:
这里是一个Demo,本人仅在本地测试
使用Golang+Next.Js(Wails)以及CGO链接VMP的Core
其中il2cpp scanner使用 的重构版本(简单实现一个RPC服务端来与GUI交互)
基于这些便可以实现如

(由于偷懒直接用了某游戏UA来测试,offset糊掉以免出事)
一样针对il2cpp函数的自动加壳
就此便是我对源码泄露后的一些个人见解,
本文为本人原创,首次发帖,内容不佳请多多指正。
在这里吐槽一句,vmp源码是真的贵,饭钱都给花光了
更多【2-VMP源码泄露后的一些分析和用途】相关视频教程:www.yxfzedu.com