最终依赖环境: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
链接: https://pan.baidu.com/s/1Gp45rEymPv94FYpuawkmIg 提取码: 947c
windows 7 x64 sp1 环境搭建(虚拟机)
https://www.alipan.com/s/eVHxk9pVVLQ
提取码: tt80
双击vs2019安装包后,提示如下错误
解决:按照上面操作的提示先安装一个 .NET Framework 4.6.2
https://dotnet.microsoft.com/en-us/download/dotnet-framework/net46
下载离线版
当运行安装时,出现如下错误:
修复:下载适应操作系统补丁
https://www.catalog.update.microsoft.com/search.aspx?q=kb4474419
进行安装,然后根据提示重启计算机
接着安装 .NET Framework 4.6.2
2.3 .NET Framework 4.8
https://dotnet.microsoft.com/en-us/download/dotnet-framework/net48
下载后直接安装即可
安装成功
重新再安装VS2019,选项勾选如下
勾选以上,选择安装位置后,点击安装即可
VS2019安装成功
VS2019 Pro激活码:NYWVH-HT4XC-R2WYW-9Y3CM-X4V3Y
2.4 QT 5.6.0
安装QT,下载地址:https://download.qt.io/new_archive/qt/5.6/5.6.0/
安装时,这里直接默认,没做任何修改,直接下一步安装即可
2.5 SDK 8.1
下载地址:https://developer.microsoft.com/zh-cn/windows/downloads/sdk-archive/
下载完成后,无需做任何修改,直接安装即可
**2.6 Notepad++
下载地址:https://notepad-plus-plus.org/downloads/
后续会用作配置文件等修改
2.7 QT Visual Studio Tools
这里直接在VS中安装(选择“扩展”>“管理扩展”>“在线”,搜索 Qt Visual Studio 工具)
或者直接下载v3.0.2版本
https://download.qt.io/official_releases/vsaddin/
安装成功后,退出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
https://github.com/notepad-plus-plus/notepad-plus-plus/tree/master/scintilla/qt/ScintillaEditBase
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
%
修改为绝对路径:
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)