VMProtect编译成功过程梳理
2023-12-12 11:45:26 Author: mp.weixin.qq.com(查看原文) 阅读量:3 收藏

作者坛账号:我爱胡萝卜

VMP源码编译

话不多说,先上成果图:

整天两天,全是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

https://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=%~dp0set rc_out=%RC_DIR%resources.ccset rc=%rc_out%set check_rc=0if 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:ReplaceOldsetlocal enableextensions enabledelayedexpansionif "%1" == "1" ( fc %2 %3 /B>>nul 2>&1 if !ERRORLEVEL! == 1 ( copy /y %2 %3>>nul 2>&1 del %2>>nul 2>&1 echo res.bat: QT resources '%3' are updated ) else ( echo res.bat: QT resources '%3' are up to date )) else (echo res.bat: QT resources '%3' are generated)endlocalgoto :EOF

问题大概就是这样了,论坛那个就是完整的。github那个我之前编译不行也不知道为什么。

我记得的问题大概就这么多了,可能还有一些细节问题;

补充一个,打开项目的时候设置为x64,如果你要编译x32就用x32,那就另外的事了,相应的流程也差不多就是编译器切换一下,QT下载32位的。

--------------------------------------------

补充一下core_tests.cc这里,如果不是utf-8编码,这里会是乱码,也会导致报错

方法就是用好点的文本编辑器打开,全部复制粘贴进去就好了,俄文是这样的


VMProtect Leaked Source Code Full

https://www.52pojie.cn/thread-1866430-1-1.html

PDF版本进左下角原文下载。

-官方论坛

www.52pojie.cn

👆👆👆

公众号设置“星标”,不会错过新的消息通知
开放注册、精华文章和周边活动等公告


文章来源: https://mp.weixin.qq.com/s?__biz=MjM5Mjc3MDM2Mw==&mid=2651139907&idx=1&sn=75f706adfaf3f6e6d5cfcabf70898b77&chksm=bd50bf178a2736019790c89531f76ea9e36eb7d1e71b4eee4f970e723e4d20af9f3dcff45433&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh