VMProtect编译成功过程梳理
本帖最后由 我爱胡萝卜 于 2023-12-10 01:04 编辑话不多说,先上成果图:
整天两天,全是bug,不是这里问题就是那里问题,还是见都没见过的。
整个项目就是默认论坛里的那个直接打开就好了。
大概说一下:首先说一下环境问题:我是VS2019 +QT5.60 + Windows SDK 8.1 +.net4.5
先说VS里面的:
由于初始项目默认我打开的时候是显示Visual Studio 2015 - Windows XP (v140_xp)所以我们最好跟他差不多就行了。
开始:我们运行VS的visual studio installer: 点击修改 在单个组件里面搜2015安装的时候我们可以看到组件里面只有: vs2015 不带xp环境;我们勾上他。
安装1: 勾选上vs2015 C++工具集
虽然2015的没xp环境,但是C++的xp依赖库可以用vs2017中的搜索 2017
安装2:安装一个vs2017 xp支持组件
安装3:接下来需要下载一个Windows 8.1 sdk,因为需要支持xp,不能用Windows 10 sdk,我觉得应该是这样,建议下载。
微软sdk下载官网。ht--tps://developer.microsoft.com/zh-cn/windows/downloads/sdk-archive/
安装好了就可以重启。
我们点击视图->其他窗口->属性管理器,方便设置属性现在就可以给项目设置属性了:右键项目,属性
全部都设置一下设置目标平台版本:8.1平台工具集:vs2015 xp其他都是默认。
现在说QT:
安装4: qt-opensource-windows-x86-msvc2015_64-5.6.0.exe QT在清华源下载
ht--tps://download.qt.io/new_archive/qt/5.6/5.6.0/
安装5:vs的QT插件:因为我的是vs2019,新版的vsaddin支持不好我选择qt-vsaddin-msvc2019-2.4.3.vsix
ht--tps://mirrors.tuna.tsinghua.edu.cn/qt/archive/vsaddin/2.4.3/
安装这个插件是因为下面这个项目需要用QT插件转化一下:
安装完记得把这个插件设置一下:别让他更新了。
然后我们就要设置环境变量,最好是设置:
安装好QT会有你设置的目录,我们复制能看到bin,include,lib这些目录的路径
我这里是F:\QT\5.15.2\msvc2015_64\5.6\msvc2015_64
环境变量里面新建,QTDIR:
设置好了我们给QT vs的插件配置一下:
因为有系统配置的原因就直接显示了:
没有也没关系,我们add,找到前面说的路径添加进去就好了。然后我们就对说的那个QT项目转化一下。
转化之后:右键这个项目,属性修改两个地方:
1. Qt Installation 这个要指定我们的QT版本
2.Qt Modules 选择 core gui widgets
以防万一我们把这个项目需要的依赖都设置一下:我的是:
F:\QT\5.15.2\msvc2015_64\5.6\msvc2015_64 下的include和lib
F:\QT\5.15.2\msvc2015_64\5.6\msvc2015_64\include;
F:\QT\5.15.2\msvc2015_64\5.6\msvc2015_64\lib;
附加包含目录也同样设置一下,可能这个设不设置都一样
还有连接器里面的附加依赖项:我们遵循原来初始项目的依赖他的就是qtmaind.lib;Qt5Guid.lib;Qt5Cored.lib;Qt5Concurrentd.lib;Qt5Widgetsd.lib;Qt5WinExtrasd.lib;Qt5Helpd.lib;%(AdditionalDependencies)
到这里关于项目属性的应该就设置好了。
如果哪里有问题我可以回答
下面是跟代码有关的:intel.cc里面的定义需要修改:
第一个函数是:IntelFunction::Mutate
第二个函数是:IntelObfuscation::Compile
修改成下面的就好了:原因就是定义里面的参数和声明里面的不一样,以前代码编写可能是声明如果写了默认值定义就不用写?
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 )
改了这两玩意core项目就没问题了;
下面是Qt的代码:
首先是PlatQt.h因为电进去都是报红的,我就直接不管那么多先消掉在说,就添加了很多头文件:
#include <QPaintDevice>
#include <QFont>
#include <QColor>
#include <QRect>
#include <QPixmap>
#include <qpainter.h>
#include <QListWidget>
#include <qtextcodec.h>
#include <qtextlayout.h>
#include <qpaintdevice.h>
#include <QPaintEngine>
#include <qdesktopwidget.h>
#include <qapplication.h>
#include <QMenu>
#include <QLibrary>
#include <QMessageBox>
#include <QTime>
#include "Platform.h"
然后是PlatQt.cc的
还有ScintillaEditBase.h的:
ScintillaEditBase.cc
ScintillaQt.h应该是没有动过;
ScintillaQt.cc的
下面是这个文件:
这个文件是res,bat生成的:
他是在项目的VMProtect文件夹里面
因为我每次编译这个项目,输出窗口都会说路径找不到
我就直接把原先res.bat里面的 %QTDIR%/msvc2015_64/bin/rcc.exe 改成 F:/QT/5.15.2/msvc2015_64/5.6/msvc2015_64/bin/rcc.exe 了
因为%QTDIR%就是环境变量里面那个QTDIR,我设置了都没用也不知道为什么
echo res.bat: generating QT resources...
SET RC_DIR=%~dp0
set rc_out=%RC_DIR%resources.cc
set rc=%rc_out%
set check_rc=0
if exist %rc_out% (
set rc_out=%RC_DIR%resources.cc.tmp
set check_rc=1
)
F:/QT/5.15.2/msvc2015_64/5.6/msvc2015_64/bin/rcc.exe %RC_DIR%application.qrc -o %rc_out%
call :ReplaceOld %check_rc% %rc_out% %rc%
goto :EOF
:ReplaceOld
setlocal enableextensions enabledelayedexpansion
if "%1" == "1" (
fc %2 %3 /B>>nul 2>&1
if !ERRORLEVEL! == 1 (
copy /y %2 %3>>nul 2>&1
del %2>>nul 2>&1
echores.bat: QT resources '%3' are updated
) else (
echores.bat: QT resources '%3' are up to date
)
) else (
echores.bat: QT resources '%3' are generated
)
endlocal
goto :EOF
问题大概就是这样了,论坛那个就是完整的。
github那个我之前编译不行也不知道为什么。
我记得的问题大概就这么多了,可能还有一些细节问题;
补充一个,打开项目的时候设置为x64,如果你要编译x32就用x32,那就另外的事了,相应的流程也差不多就是编译器切换一下,QT下载32位的。
--------------------------------------------------------
补充一下core_tests.cc这里,如果不是utf-8编码,这里会是乱码,也会导致报错
方法就是用好点的文本编辑器打开,全部复制粘贴进去就好了,俄文是这样的
--------------------------------------------------------
应大伙要求,整了个PDF
某些地方因排版导致逻辑不清 步骤看不太清楚,建议优化一下 wangyifan 发表于 2023-12-10 08:20
报错如图
右键生成解决方案看看,我记得其他项目都能行,最后就他难搞一点 老哥 排一下版吧,用markdown吧 bester 发表于 2023-12-9 17:01
老哥 排一下版吧,用markdown吧
刚才一直在改,我不知道为什么粘贴过来好好的就这样了。已经好了 前脚本发布,后脚闲鱼倒卖贩子就开始出售。。。真没屁子眼。。没德
就咱的残疾版的 x64dbg入门系列视频都难幸免。。。还好没出完整版的。{:301_988:} 这个是1.00版的?应该很老吧? 看的很难受。。。。在论坛内选择插入代码,用这功能 sai609 发表于 2023-12-9 17:15
看的很难受。。。。在论坛内选择插入代码,用这功能
哈哈哈,我不知道,我刚才一直在手动编辑,我再改改 感谢分享,可以按步骤搭建研究环境了 不如弄成pdf发上来