VMProtect编译成功过程梳理

admin 2023年12月12日15:33:55评论75 views字数 3616阅读12分3秒阅读模式

作者坛账号:我爱胡萝卜

 

VMP源码编译

话不多说,先上成果图:

VMProtect编译成功过程梳理

 

整天两天,全是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++⼯具集

VMProtect编译成功过程梳理

 

虽然2015的没xp环境,但是C++的xp依赖库可以用vs2017中的搜索 2017

VMProtect编译成功过程梳理

 

安装2:安装一个vs2017 xp支持组件

VMProtect编译成功过程梳理

 

安装3:接下来需要下载一个Windows 8.1 sdk,因为需要支持xp,不能用Windows 10 sdk,我觉得应该是这样,建议下载。微软sdk下载官网。

ht--tps://developer.microsoft.com/zh-cn/windows/downloads/sdk-archive/

 

安装好了就可以重启。我们点击视图->其他窗口->属性管理器,方便设置属性

现在就可以给项目设置属性了:右键项目,属性

VMProtect编译成功过程梳理

VMProtect编译成功过程梳理

 

全部都设置一下

设置目标平台版本: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/

VMProtect编译成功过程梳理

 

安装5:vs的QT插件:因为我的是vs2019,新版的vsaddin支持不好我选择qt-vsaddin-msvc2019-2.4.3.vsix

https://mirrors.tuna.tsinghua.edu.cn/qt/archive/vsaddin/2.4.3/VMProtect编译成功过程梳理

 

安装这个插件是因为下面这个项目需要用QT插件转化一下:

VMProtect编译成功过程梳理

 

安装完记得把这个插件设置一下:别让他更新了。

VMProtect编译成功过程梳理

 

然后我们就要设置环境变量,最好是设置:

VMProtect编译成功过程梳理

 

安装好QT会有你设置的目录,我们复制能看到bin,include,lib这些目录的路径

我这里是F:QT5.15.2msvc2015_645.6msvc2015_64

VMProtect编译成功过程梳理

 

环境变量里面新建,QTDIR:

VMProtect编译成功过程梳理

 

VMProtect编译成功过程梳理

 

设置好了我们给QT vs的插件配置一下:

VMProtect编译成功过程梳理

 

因为有系统配置的原因就直接显示了:

VMProtect编译成功过程梳理

 

没有也没关系,我们add,找到前面说的路径添加进去就好了。

然后我们就对说的那个QT项目转化一下。

VMProtect编译成功过程梳理

 

转化之后:右键这个项目,属性

修改两个地方:1. Qt Installation 这个要指定我们的QT版本

2.Qt Modules 选择 core gui widgets

VMProtect编译成功过程梳理

 

以防万一我们把这个项目需要的依赖都设置一下:

我的是:F:QT5.15.2msvc2015_645.6msvc2015_64 下的include和lib

F:QT5.15.2msvc2015_645.6msvc2015_64include;

F:QT5.15.2msvc2015_645.6msvc2015_64lib;

VMProtect编译成功过程梳理

 

附加包含目录也同样设置一下,可能这个设不设置都一样

VMProtect编译成功过程梳理

 

还有连接器里面的附加依赖项:我们遵循原来初始项目的依赖

他的就是

qtmaind.lib;Qt5Guid.lib;Qt5Cored.lib;Qt5Concurrentd.lib;Qt5Widgetsd.lib;Qt5WinExtrasd.lib;Qt5Helpd.lib;%(AdditionalDependencies)

VMProtect编译成功过程梳理

 

到这里关于项目属性的应该就设置好了。如果哪里有问题我可以回答下面是跟代码有关的:

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的代码:

VMProtect编译成功过程梳理

 

首先是PlatQt.h

因为电进去都是报红的,我就直接不管那么多先消掉在说,就添加了很多头文件:

VMProtect编译成功过程梳理

 

#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的

VMProtect编译成功过程梳理

 

还有ScintillaEditBase.h的:

VMProtect编译成功过程梳理

 

ScintillaEditBase.ccVMProtect编译成功过程梳理

 

ScintillaQt.h应该是没有动过;

VMProtect编译成功过程梳理

 

ScintillaQt.cc的VMProtect编译成功过程梳理

 

下面是这个文件:

VMProtect编译成功过程梳理

 

这个文件是res,bat生成的:

他是在项目的VMProtect文件夹里面

VMProtect编译成功过程梳理

 

因为我每次编译

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位的。

VMProtect编译成功过程梳理

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

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

VMProtect编译成功过程梳理

 

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

VMProtect编译成功过程梳理

 

VMProtect Leaked Source Code Full

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

 

原文始发于微信公众号(吾爱破解论坛):VMProtect编译成功过程梳理

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月12日15:33:55
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   VMProtect编译成功过程梳理http://cn-sec.com/archives/2290076.html

发表评论

匿名网友 填写信息