吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3717|回复: 23
上一主题 下一主题
收起左侧

[其他原创] VMP比较正确的编译教程

  [复制链接]
跳转到指定楼层
楼主
失去灯塔的孤帆 发表于 2023-12-13 21:05 回帖奖励
本帖最后由 失去灯塔的孤帆 于 2023-12-13 21:28 编辑

一、编译环境

1.1 编译整体配置

采用VS2022社区版+MSVC2017_xp+QT5.6.0+WDK7.1(编译DDK需要,不需要DDK的可以不用下载)

1.1 VS2022安装

1.1.1 除常规勾选桌面C++以外,需要勾选win xp支持和支持相应的MSVC版本。教程采用msvc2017和xp支持。

1.1.2 安装好xp支持会同步安装win7.1A SDK,不用另行安装。

1.2 Qt安装与配置

1.1.1 QT5.6.0下载 根据需求选择32位或者64位。选择5.6.0原因是VMP原项目采用的就是5.6.0,以及支持XP。高版本QT不支持XP。教程采用64位即:qt-opensource-windows-x86-msvc2015_64-5.6.0.exe

1.1.2 QT5.6.0 下载后直接默认安装,安装完毕即可,注意:不需要设置系统环境变量和安装VS QT插件。

1.3 WDK7.1安装

1.3.1 WDK7.1下载 编译DDK需要,不需要DDK的可以不用下载

1.4 VMP源码

1.4.1  VMP源码采用论坛里分享的,感谢@FleTime的分享。源码帖子链接

二、编译过程

2.1 开始编译(Debug版本,动态链接QT)

2.1.1 打开VMP工程,出现提示升级和Net版本不匹配,笔者选择取消。然后手动更改MSVC版本为2017_xp。

2.1.2 首先编译Common两个工程。其中Core会报错。

错误1、编码报错:双击打开错误打开文件,然后点击:文件——高级保存选项——以"Unicode-代码页1200"保存。提示:错误指向相同的文件只需要保存一次即可,不用每个错误都操作。没有高级保存选项,在工具——自定义设置。具体百度。
warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失

错误2、重载定义:根据函数声明补充定义函数的参数
error C2511: “void IntelFunction::Mutate(const CompileContext &,bool)”:“IntelFunction”中没有找到重载的成员函数
补充后的的定义:
cpp void IntelFunction::Mutate(const CompileContext &ctx, bool for_virtualization, int index)
cpp void IntelObfuscation::Compile(IntelFunction *func, size_t index, size_t end_index , bool for_virtualization)
至此Common工程编译成功。

2.1.3 编译win_runtime、VMProtectSDK、VMProtecCon三个工程。顺利编译,不再展开说明。

2.1.4 编译VMProtect

2.1.4.1 修改QT路径。

在VS属性管理器(非右键项目-属性。视图-属性管理器)展开VMPProtect-Debug|X64,右键"qt_debug64"属性-用户宏,将QT路径修改成自己安装的路径。

至此VMProtect Debug版本可顺利编译。将core目录下的VMProtectLicense.ini文件和编译好的VMProtect.exe放一起,即可显示已授权版本。(QT文件自行补充)只是玩一玩的看到这里就可以结束了。

2.1.5 编译DDK

2.1.5.1 修改WKD路径,同样在属性管理器修改Driver的WDK inlude路径为自己安装的路径。默认路径则不用修改。

2.1.5.2 MSVC选择用MSVC2017或者msvc2017XP即可顺利编译

2.1.6 .Net编译

2.1.6.1 SDK和.NetCore正常编译,不展开说明。

2.1.6.2 Runtime编译

原VMP作者采用的是.net4.0,笔者升级到4.8后报错如下:
Your project does not reference ".NETFramework,Version=v4.8" framework. Add a reference to ".NETFramework,Version=v4.8" in the "TargetFrameworks" property of your project file and then re-run NuGet restore.
解决方法:

右键.NetCore项目-属性,没错就是.NetCore。在目标框架中补充"net48;"。.Net的别名见微软说明。修改后出现新的错误:
Your project file doesn't list 'win-x64' as a "RuntimeIdentifier". You should add 'win-x64' to the "RuntimeIdentifiers" property in your project file and then re-run NuGet restore.
解决方法:
关闭VS,找到.NetCore的项目文件。路径如下:\runtime\VMProtect.Runtime。以编辑的方式打开。在属性中添加RuntimeIdentifier的定义。
<RuntimeIdentifier>win-x64</RuntimeIdentifier>

重新打开VS,Runtime编译可顺利编译成功。

2.1.7 Misc——Tests中的的UnitTestProject编译报错:

error CS0030: 无法将类型“object”转换为“System.TypedReference”
解决方法:
笔者不懂.Net,Gpt给的解决方法:把(TypedReference)args[0]改为__makeref(args[0])
重新编译即可。

2.2 编译Ultimate版本(静态链接QT)

2.2.1 VMP工程中的Ultimate版本使用的是静态编译的QT,网上没找到现成的。只能自行编译。由于QT协议问题,本文不提供静态QT文件。具体教程请自行摸索。QT源码下载]

2.2.2 静态编译QT注意事项

2.2.2.1 要支持xp:SDK需要使用win7.1A,vs2022安装后路径如下:C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\,分别设置nmake环境中的bin、include、lib为win7.1A的。
2.2.2.2 config编译选项时,需要编译带opengl的QT(-opengl desktop),支持xp平台( -target xp)
2.2.2.3 编译踩到的大坑:config有增量选项时,不一定会生效,需要重新解压。
2.2.2.4 使用nmake编译大概需要15GB的硬盘空间,编译时间大概2小时。

2.2.3 静态QT编译后参照上文中2.1.4.1 修改QT路径。

2.2.4 编译VMProtect 三方库报错如下:

..\third-party\libffi\libffi64.lib”是使用比创建其他对象所用编译器旧的编译器创建的;请重新生成旧的对象和库
解决方法:采用msvc_2017_xp编译器编译,libffi源码在github上。
替换libffi64后,至此VMProtect Ultimate静态编译成功。

三、VMP许可集成

3.1 生成自定义序列号

3.1.1 使用编译好的VMProtect打开.vmp文件,.vmp路径:\core\vmprotect.vmp。在项目-添加-许可,添加自定义的信息,然后保存即可。

3.1.2 以编辑的方式打开.vmp文件,找到复制刚才添加的序列号,新建一个文件保存。

3.1.3 删除.vmp文件的以下lua代码段

 -- 2223 - Testing Purposes and Demo watermark Customer ID
        local watermark = watermarks:itemByName("2223")
        if (watermark) then
                add_watermark:xproc(version_watermark_command:address(), watermark:value())
        else
                error("Testing Purposes and Demo watermark was not found in the database");
        end

没删在对VmpProtectCon加壳会提示函数地址占用。

    AddFunction("__scrt_common_main_seh(void)")

3.2 VMProtect加壳并集成许可

3.2.1在目录下打开命令行,使用VMProtectCon进行加壳。暂时需要带VMProtectLicense.ini。

VMProtectCon的参数如下:
VMProtect_Con File [Output File] [-pf Project File] [-sf Script File] [-lf Licensing Parameters File] [-bd Build Date (yyyy-mm-dd)] [-wm Watermark Name] [-we]
正式cmd命令如下,添加-key参数,原因:.vmp的lua对-key解析将序列号并集成到文件。
VMProtectCon.exe VMProtectCon.exe VMProtectConVmp.exe -pf vmprotect.vmp -key key.txt

3.2.2 使用加壳并许可的VMProtectCon.exe对VMProtect.exe进行加壳并集成许可

VMProtectCon.exe VMProtect.exe VMProtectVmp.exe -pf vmprotect.vmp -key key.txt

四、最终效果:带许可的静态编译的ultimate版VMProtect

免费评分

参与人数 21吾爱币 +34 热心值 +20 收起 理由
hsctest + 1 + 1 我很赞同!
ck6102 + 1 + 1 我很赞同!
mmffddyy + 1 + 1 我很赞同!
x1na0v0 + 1 + 1 我很赞同!
chased + 1 谢谢@Thanks!
Hmily + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
不爱everyone + 1 + 1 谢谢@Thanks!
笙若 + 1 + 1 谢谢@Thanks!
wushaominkk + 5 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
冷月孤心 + 1 + 1 我很赞同!
hszt + 1 + 1 目前唯一一个跟着弄编译成功的,感谢
qqycra + 2 + 1 用心讨论,共获提升!
yhym599 + 1 + 1 谢谢@Thanks!
zhczf + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
MallocRiver + 1 + 1 鼓励转贴优秀软件安全工具和文档!
soughing + 1 + 1 用心讨论,共获提升!
让导弹飞 + 1 + 1 我很赞同!
研究技术 + 2 + 1 我很赞同!
onlyxiu + 1 + 1 我很赞同!
2217936322 + 2 + 1 谢谢@Thanks!
jgs + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
metoo2 发表于 2023-12-14 09:53
感谢分享!
不过"由于QT协议问题,本文不提供静态QT文件"这句话怎么理解?自己编译的库也不能够提供?
推荐
shys 发表于 2023-12-14 12:10
本帖最后由 shys 于 2023-12-14 12:12 编辑

感谢楼主分享教程;VMProtectCon.exe VMProtectCon.exe VMProtectConVmp.exe -pf vmprotect.vmp -key key.txt
执行出现:[Error] Script error: [string "function CommandByReference(func, address)..."]:46: version_watermark not found
core的processors.cc 没有对应的函数
沙发
jgs 发表于 2023-12-13 22:21
3#
研究技术 发表于 2023-12-13 22:27
感谢楼主的详细教程。。
4#
cq2002 发表于 2023-12-13 22:29
感谢无私分享。正好学习一下
5#
bema 发表于 2023-12-13 22:36
感谢楼主分享,学习学习
头像被屏蔽
6#
moruye 发表于 2023-12-13 23:13
提示: 作者被禁止或删除 内容自动屏蔽
7#
soughing 发表于 2023-12-14 00:16
谢谢楼主分享心得,收藏,学习。
8#
lml0126 发表于 2023-12-14 06:29
详细,都来试一下
9#
sdieedu 发表于 2023-12-14 06:31
成品来一个吧
10#
ABs123 发表于 2023-12-14 07:29
第一次看到编译vmp属实给我震惊到了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 09:05

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表