首页
社区
课程
招聘
[原创] Win11 VMP 源码编译
发表于: 2024-2-22 17:24 8154

[原创] Win11 VMP 源码编译

2024-2-22 17:24
8154

 VMP 源码编译

【摘要】

        本文展示Leak的VMP源码编译console与GUI的调试版,以及注册测试使用配置的图文过程。


【前言】

        完整的泄露已经两月有余,这里只简测。

        测试环境:Win11 64位系统,Visual Studio Community 2015(免费社区版),另安装VC2008的【en_visual_studio_2008_professional_x86_dvd_x14-26326.iso】里的64位编译工具x86_amd(如果不改变配置,解决方案中的VMProtectSDK工程会用到),【qt-opensource-windows-x86-msvc2015-5.6.0.exe】中的msvc2015_64(编译GUI版本需要,用于使用QT共享库模式,若要编译静态模式,需要另寻或自行编译msvc2015_static64),最终得到可用及可调试console与GUI的64位版。



第1节 部分三方比较

    对部分三方leak源代码做了部分比较,完整的是git上的 GitHub - jmpoep/vmprotect-3.5.1 ,其他一个【vmp】及【vmpsrc】是早前其他leak缺省版。

主要还是git上的vmprotect351与vmpsrc的差别。三方比较通过UltraCompare进行。


(1)mac平台文件

    vmpsrc独有的Info.plist 为mac平台的相关信息

(2)dll与inc

    vmpsrc多了许多NET相关的dll,初步估计对应于inc,本文测试未考究


(3)核心intel.cc及processors.cc

        相对早前leak版本,vmprotect351具有缺失的核心文件intel.cc、processors.cc,部分代码声明与定义有出入,需要修正,参见后述。

        下图中,vmpprotect351缺失的lang*.inc\.tmp等由lang.bat生成,缺失的version.h由version.bat生成。

(4)脚本测试样例

    缺失的*.exe应该是用于对应脚本功能的vmp防护测试实例,相关vmp防护配置*.vmp还保留



(5)Qt的moc文件

    缺失的MOC文件会由Qt编译工具的moc.exe对相应头文件编译产生


(6)其他

第2节 VMPProtectCon项目工程编译

    即console控制台版本


(1)类的非重载成员函数错误

    这是由于【IntelFunction类中Mutate成员函数】及【IntelObfuscation类中Compile成员函数】的声明与定义参数不一致产生,

    在定义中添加完整的参数定义即可,如下述图示


(2)缺失lib错误

    修正编译后,会出现上图中的VMProtectSDK64.lib链接缺失错误,这时候需要我们完成VMProtectSDK(visual studio 2008)的64位编译。

    这里没有改动原来编译工具配置,所以需要安装vc2008的64位编译工具。

可以下载VS2008的相关ISO安装镜像,要注意,如果默认安装,其可能会忽略我们需要的64位编译工具,如图,选中64位工具安装,




(3)con版本

    直接编译VMProtectSDK即可得到VMProtectSDK64.lib,再编译VMPProtectCon工程即可完成。

    如果不使用GUI版本,到此即可,当然,还需要提供测试用的注册配置,否则无法正常使用和对其他程序进行编译保护。

相关注册配置参考后续内容。


第3节 VMProtect项目工程编译

    即Qt的GUI版本


(1)Qt缺失错误

    直接编译,若没有Qt配置环境,直接编译或有下列错误。

    

(2)Qt共享库版本

        需要 https://download.qt.io/new_archive/qt/5.6/5.6.0/ 中下载其中的 msvc2015_64 版本。

        特别注意,如果安装默认路径C:\Qt,后续不需要改项目工程配置,否则需要做相应工程配置修改,

        这里安装非默认路径,相应工程配置修改参考后续说明。

    


(3)关键环境变量配置

    从VC项目工程以及相关用户宏属性配置可知,原配置用的是Qt5.6.0版本,QIDIR配置路径是默认的C:\Qt\Qt5.6.0\5.6




(4) 命令行启动变量 PATH 及 QTDIR

    若Qt不是5.6.0版本或不是默认路径,则需要在属性管理中作出相应修改,如下图所示。

    若要调试,最好在启动新命令行,在命令行中设置PATH,并在命令行中启动VS2015,这样,调试启动时,会自动找到Qt相关动态库,否则启动调试会出错。

    运行GUI程序也同理,需要在PATH中找到Qt相关动态库

set path=D:\Qt\Qt5.6.0_x64\5.6\msvc2015_64\bin;%path%               PATH中添加Qt动态库路径
"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio 2015.lnk"  启动VS2015


D:\vmprotect-3.5.1\bin\64\Debug\VMProtect.exe    执行编译得到的GUI版vmp


第4节 版本管理与注册配置


(1)版本管理

    其版本号是由 D:\vmprotect-3.5.1\core\version.bat 批文件管理的,

    如下图,我们将原来的 1.0.0.0 build 0修改位 【3.5.1 build 1024】,重新编译(非增量编译)生效


(2)注册配置

    根据VMP源码,要让源码版VMP正常工具,需要在编译结果exe同目录下提供注册配置信息

    以下是根据VMP源码拟出的一种可用测试配置,保存为【VMProtectLicense.ini】文件,与VMProtect.exe(或VMProtectCon.exe)同目录。

;VMProtectLicense.ini
[TestLicense]
AcceptedSerialNumber=SerialNumber
BlackListedSerialNumber=BlkSerialNumber
TimeLimit=-1
ExpDate=20481024
MaxBuildDate=20481024
KeyHWID=ABC
MyHWID=ABC
UserName=0day
EMail=0day@xday.com
;UserData[0] as productId, should in 
;  00 VPI_NOT_SPECIFIED
;  05 VPI_ULTM_PERSONAL = VPI_ULTM_WIN_PERSONAL
;  06 VPI_ULTM_COMPANY = VPI_ULTM_WIN_COMPANY
UserData=05


【附件】

    vmprotect-3.5.1-master.part01.rar 和 vmprotect-3.5.1-master.part02.rar 为git上的代码,7M分包。

    VMProtectLicense.ini 为注册测试使用配置。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 10
支持
分享
最新回复 (12)
雪    币: 4734
活跃值: (4281)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
非常感谢 收藏了
2024-2-22 17:47
0
雪    币: 3570
活跃值: (4709)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
好帖
2024-2-22 18:39
0
雪    币: 12332
活跃值: (5103)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4

学习了,多谢楼主分享哟
2024-2-22 20:26
0
雪    币: 222
活跃值: (1900)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
好贴。请问给编译好的程序加vmp壳时,如何把授权集成到加壳文件中?参照本论坛其它帖子,多次尝试,没有成功脱离.ini文件实现授权.
2024-2-22 20:37
0
雪    币: 2235
活跃值: (2171)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
期待静态编译教程。
2024-2-22 22:58
0
雪    币: 3070
活跃值: (30876)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
感谢分享
2024-2-23 09:47
1
雪    币: 2708
活跃值: (2128)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
能导出注册机就好了。
2024-2-23 10:12
0
雪    币: 175
活跃值: (2526)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
感谢, 收藏!!!
2024-2-26 15:00
0
雪    币: 21
活跃值: (761)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
这个可要收藏好!有时间研究!
2024-2-28 09:28
0
雪    币: 1341
活跃值: (1781)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
感谢分享,收藏学习
2024-3-27 17:23
0
雪    币: 58
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
12
赞。。。。。N个
2024-3-27 17:41
0
雪    币: 8764
活跃值: (5240)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
空了试一下。
2024-3-27 18:59
0
游客
登录 | 注册 方可回帖
返回
//