最终依赖环境:Windows 7 x64 Ultimate、Visual Studio 2019、Windows SDK8.1、qt-opensource-windows-x86-msvc2015_64-5.6.0、.NET Framework 4.8、QT Visual Studio Tools(v3.0.2最新版)
https://bbs.kanxue.com/thread-279796.htm

链接: bd3K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6H3j5h3&6Q4x3X3g2T1j5h3W2V1N6g2)9J5k6h3y4G2L8g2)9J5c8Y4y4Q4x3V1j5I4c8%4l9@1y4i4u0q4P5h3#2b7N6U0V1@1c8W2W2H3N6h3q4%4K9$3#2u0k6H3`.`. 提取码: 947c
windows 7 x64 sp1 环境搭建(虚拟机)

e42K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2S2L8r3W2H3j5h3&6Q4x3X3g2U0L8$3#2Q4x3V1k6K6i4K6u0r3k6g2k6t1P5r3D9&6M7q4k6h3e0q4p5`.
提取码: tt80
双击vs2019安装包后,提示如下错误

解决:按照上面操作的提示先安装一个 .NET Framework 4.6.2
e3cK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1L8%4c8F1k6i4c8Q4x3X3g2E0K9h3y4J5L8%4y4G2k6Y4c8Q4x3X3g2U0L8$3#2Q4x3V1k6W2L8W2)9J5k6s2g2K6i4K6u0r3k6r3!0%4L8X3I4G2j5h3c8Q4x3V1k6V1L8%4c8F1k6i4c8Q4x3X3c8X3M7X3q4E0k6i4N6G2M7X3E0Q4x3V1k6F1k6i4b7@1y4R3`.`.
下载离线版
当运行安装时,出现如下错误:

修复:下载适应操作系统补丁
3cbK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2U0j5i4c8S2L8r3!0Y4i4K6u0W2N6i4m8V1j5i4c8W2i4K6u0W2L8h3W2U0M7X3!0K6L8$3k6@1i4K6u0W2j5$3!0E0i4K6u0r3M7$3g2S2M7X3y4Z5i4K6u0W2j5i4y4H3P5q4)9K6c8Y4q4Q4x3@1c8C8j5U0b7@1y4K6b7@1x3e0V1`.

进行安装,然后根据提示重启计算机

接着安装 .NET Framework 4.6.2

2.3 .NET Framework 4.8
11aK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1L8%4c8F1k6i4c8Q4x3X3g2E0K9h3y4J5L8%4y4G2k6Y4c8Q4x3X3g2U0L8$3#2Q4x3V1k6W2L8W2)9J5k6s2g2K6i4K6u0r3k6r3!0%4L8X3I4G2j5h3c8Q4x3V1k6V1L8%4c8F1k6i4c8Q4x3X3c8X3M7X3q4E0k6i4N6G2M7X3E0Q4x3V1k6F1k6i4b7@1z5l9`.`.

下载后直接安装即可

安装成功

重新再安装VS2019,选项勾选如下





勾选以上,选择安装位置后,点击安装即可

VS2019安装成功

VS2019 Pro激活码:NYWVH-HT4XC-R2WYW-9Y3CM-X4V3Y
2.4 QT 5.6.0
安装QT,下载地址:437K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1L8%4N6F1L8r3!0S2k6q4)9J5k6i4q4@1i4K6u0W2K9h3!0Q4x3V1k6F1k6i4N6Q4y4h3k6S2M7X3y4Z5K9i4k6W2i4K6u0r3M7i4c8Q4x3V1j5#2i4K6u0W2y4W2)9J5c8U0g2Q4x3X3f1$3i4K6u0W2x3q4)9J5c8R3`.`.

安装时,这里直接默认,没做任何修改,直接下一步安装即可

2.5 SDK 8.1
下载地址:644K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1k6i4k6W2L8r3!0H3k6i4u0Q4x3X3g2E0K9h3y4J5L8%4y4G2k6Y4c8Q4x3X3g2U0L8$3#2Q4x3V1k6*7K9q4)9J5k6r3y4F1i4K6u0r3N6$3W2F1k6r3!0%4M7#2)9J5c8X3c8G2N6$3&6D9L8$3q4V1M7#2)9J5c8Y4y4V1K9#2)9J5k6r3q4J5j5$3S2A6N6X3g2Q4x3V1j5`.

下载完成后,无需做任何修改,直接安装即可

**2.6 Notepad++
下载地址:189K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6F1L8%4c8W2M7r3q4V1i4K6u0V1M7r3I4#2M7#2)9J5k6s2m8D9N6i4y4Q4x3X3g2G2M7X3N6Q4x3V1k6V1L8%4N6F1L8r3!0S2k6s2y4Q4x3V1j5`.
后续会用作配置文件等修改

2.7 QT Visual Studio Tools
这里直接在VS中安装(选择“扩展”>“管理扩展”>“在线”,搜索 Qt Visual Studio 工具)

或者直接下载v3.0.2版本
f8dK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1L8%4N6F1L8r3!0S2k6q4)9J5k6i4q4@1i4K6u0W2K9h3!0Q4x3V1k6G2k6X3k6A6j5$3W2S2L8q4)9#2k6Y4u0W2L8r3g2S2M7$3g2K6i4K6u0r3N6Y4y4S2k6r3c8A6L8W2)9J5c8R3`.`.

安装成功后,退出VS2019,提示如下,点击 Modify 等待完成即可


解压源码

找到vmprotect.sln,用vs2019加载后弹出如下界面,全部选择 【无升级】后点击确定即可

设置VS属性管理器,方便设置项目属性

切换到属性管理器,将每个项目属性设置为:

1. Windows SDK 版本:8.1
2. 平台工具集:Visual Studio 2015 – Windows XP (v140_xp)


修改编译模式:Debug _ x64

确定QT插件是否识别

如果没有识别到,手动指定即可


转化 VMProtect 项目

转化完成后,继续右键该项目,选择属性设置



遵循下面顺序编译原则:每个模块单独编译,修复所有报错
5.1 Common模块
Intel.cc:修复 Mutate函数

Intel.cc:修复 Compile函数

5.2 Misc模块
通过Notepad++将 /vmp/unit-tests/core_tests.cc 编码格式转换为 UTF-8 后保存
这个模块重新生成后,还遗留4个错误,暂时不管,先编译其它模块

5.3 MiniDumpFixer
无需修复
5.4 VMProtect.Runtime

单击VMProtect.Netcore模块进入csproj文件,修改如下内容:

5.5 VMProtect.SDK
无需修复
5.6 VMProtectSDK
无需修复
5.7 VMProtectCon
无需修复
5.8 Win_runtime
无需修复
5.9 VMProtect
查看报错信息,显示res.bat存在问题


当点击 *本地Windows调试器 *执行时,弹出如下错误

将VMProtect模块右键设置为启动项目,重新执行则正常运行

经测试,这个QT模块中的错误全部来源于没有相应的头文件导致
相关开源代码可参考 notepad-plus-plus
bf4K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6F1L8%4c8W2M7r3q4V1i4K6u0V1M7r3I4#2M7#2)9J5k6s2m8D9N6i4y4Q4x3V1k6F1L8%4c8W2M7r3q4V1i4K6u0V1M7r3I4#2M7#2)9J5k6s2m8D9N6i4y4Q4x3V1k6@1M7X3g2W2i4K6u0r3L8h3q4K6N6r3g2J5i4K6u0r3M7$3y4A6L8Y4c8A6L8r3I4S2i4K6u0r3M7i4c8Q4x3V1k6e0j5$3W2F1N6r3W2D9L8r3q4q4k6r3W2@1b7X3q4K6k6b7`.`.
7.1 PlatQT.h
保持和如下头文件一致即可。

7.2 PlatQT.cc

7.3 ScintillaEditBase.h

7.4 ScintillaEditBase.cc

7.5 ScintillaQt.h

7.6 ScintillaQt.cc

关于编码告警告处理
将以下源码文件通过Notepad++转换编码格式为:UTF-8
将gmock-matchers.cc源码文件通过记事本另存的方式转换为unicode格式进行替换

关于C4996警告处理
涉及该警告的主要是Misc模块下面的gtest/unit-tests/win_runtime.Tests三个文件

相应的模块上右键->属性->C/C++->预处理器->预处理器定义
添加宏:_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING

关于 目标框架“netcoreapp3.0”不受支持,将来不会收到安全更新 警告处理
单击VMProtect.Netcore模块,增加如下内容

关于 MSB8051 面向 Windows XP 的支持已被弃用,将来的 Visual Studio 版本不再提供该支持 警告处理

关于 D9030 “/Gm”与多处理不兼容;忽略 /MP 开关 警告处理

将 启用最小重新生成 修改为 否(/Gm-)

将/vmp/core/VMProtectLicense.ini 拷贝至/vmp/bin/64/Debug/目录

测试功能,加壳保护后程序依然正常运行


void
IntelFunction::Mutate(
const
CompileContext &ctx,
bool
for_virtualization,
int
index)
void
IntelFunction::Mutate(
const
CompileContext &ctx,
bool
for_virtualization,
int
index)
void
IntelObfuscation::Compile(IntelFunction *func,
size_t
index,
size_t
end_index,
bool
for_virtualization)
void
IntelObfuscation::Compile(IntelFunction *func,
size_t
index,
size_t
end_index,
bool
for_virtualization)
<
TargetFrameworks
>netstandard2.1;netcoreapp3.0;net20;net40;net48</
TargetFrameworks
>
<
RuntimeIdentifier
>win-x64</
RuntimeIdentifier
>
<
TargetFrameworks
>netstandard2.1;netcoreapp3.0;net20;net40;net48</
TargetFrameworks
>
<
RuntimeIdentifier
>win-x64</
RuntimeIdentifier
>
修复:
在源码
/
vmp
/
VMProtect
/
res.bat 文件中
将相对路径:
%
QTDIR
%
/
msvc2015_64
/
bin
/
rcc.exe
%
RC_DIR
%
application.qrc
-
o
%
rc_out
%
修改为绝对路径:
E:
/
Qt
/
Qt5.
6.0
/
5.6
/
msvc2015_64
/
bin
/
rcc.exe
%
RC_DIR
%
application.qrc
-
o
%
rc_out
%
修复:
在源码
/
vmp
/
VMProtect
/
res.bat 文件中
将相对路径:
%
QTDIR
%
/
msvc2015_64
/
bin
/
rcc.exe
%
RC_DIR
%
application.qrc
-
o
%
rc_out
%
修改为绝对路径:
[培训]科锐逆向工程师培训第53期2025年7月8日开班!