吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 789|回复: 12
收起左侧

[讨论] 关于VMProtect3.5源码的变异能否使用内部的2.x虚拟机

[复制链接]
Motu 发表于 2024-8-2 11:44
本帖最后由 Motu 于 2024-8-2 12:48 编辑

新人第一次发帖,哪里写的不好见谅
vmp的源码也是出来好久了,各种功能也是被研究和开发出来了.....
事情起因也很简单,在core/intel.cc文件中有如下代码
------------------------分割符-------------------------
void IntelVirtualMachineList::Prepare(const CompileContext &ctx)
{
        size_t i;
        IntelOpcodeList visible_opcode_list;
        OperandSize cpu_address_size = ctx.file->cpu_address_size();

        VirtualMachineType type =
#ifdef DEMO
                true
#else
                ((ctx.options.flags & cpUnregisteredVersion) != 0 || ((ctx.options.vm_flags & 1) != 0))
#endif        
                ? vtClassic : vtAdvanced;
------------------------分割符-------------------------

VirtualMachineType type表示虚拟机的类型
在vmp从2.x进化到3.x的时候,其内部仍然保留了原来2.x的虚拟机生成代码
----vtclassic表示的就是其仍保留的2.x虚拟机结构
----vtAdvanced表示的就是3.x的虚拟机结构

------------------------分割符-------------------------
在core/core.cc中有一个bool Core::Compile()函数,负责编译的初始化,其中有关于虚拟机数量的定义
        options.vm_count =
#ifdef DEMO
                true
#else
                ((options.flags & cpUnregisteredVersion) != 0 || (options.vm_flags & 2) != 0)
#endif        
                ? 1 : 10;
------------------------分割符-------------------------
也就是这一段,也是对Demo版本进行了特殊对待,如果是Demo版本就把虚拟机数量设置为1个
------------------------分割符-------------------------
然后如果把虚拟机数量设置成1,然后虚拟机版本选择vtclassic,然后选择虚拟加密,原本17kb的程序加密完仅仅27kb,仅仅增大10kb,
所以这就延伸了一个奇思妙想,能否把他的变异替换成1个2.x的虚拟机进行加密,然后虚拟的时候使用正常的10个3.x虚拟机
这样变异的函数有了很大的保护强度,性能损失也很少~

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| Motu 发表于 2024-8-2 15:25
Hmily 发表于 2024-8-2 15:13
和这个差不多,当时有个隐藏功能,开启后就是加出来这个感觉。

我想修改现有的这份源码让最后vmp对代码的保护只有两个选项"微虚拟"和"虚拟"
去掉变异和超级,然后原本的Mutate只在内部使用,
再把源码里现有2.x的虚拟机进行阉割,让他有更快地执行速度,再给2.x的虚拟机只分配1个让她代替原来VMP的"变异"功能,也就是变成了我上面提到的"微虚拟"
然后"虚拟"就正常使用10个3.x的虚拟机,也就是原本的加密方式

点评

wwh1004大佬当时发的精简看看是否有参考价值:  详情 回复 发表于 2024-8-2 15:34
 楼主| Motu 发表于 2024-8-2 14:01
Hmily 发表于 2024-8-2 13:49
可以把编译去掉,直接试试只有虚拟化看看大小,2.x的时候有过这么diy的,生成后用来分析虚拟机很方便。

试过了,修改flags把所有虚拟机的保护全部去掉,然后用1个2.x虚拟机差不多就增大了9kb,稍等我上个附件可以看一下,因为当前的vmp的变异,感觉强度还是太低,基本就是插入垃圾指令然后把非常少一部分的指令进行等价变形,基本上稍微分析一下就出来了,但是直接用3.x的虚拟机就又会导致执行效率太低,所以我想的就是把vmp加密函数的时候那个变异换成1个2.x的虚拟机,然后虚拟就正常用10个3.x的虚拟机
Hmily 发表于 2024-8-2 11:59
 楼主| Motu 发表于 2024-8-2 12:42
Hmily 发表于 2024-8-2 11:59
强度不就来源于新的虚拟机架构?

我的想法是把vmp的变异替换成一个非常弱的2.x虚拟机,然后其他的虚拟按照正常的3.x虚拟机结构进行加密

点评

可以把编译去掉,直接试试只有虚拟化看看大小,2.x的时候有过这么diy的,生成后用来分析虚拟机很方便。  详情 回复 发表于 2024-8-2 13:49
Hmily 发表于 2024-8-2 13:49
Motu 发表于 2024-8-2 12:42
我的想法是把vmp的变异替换成一个非常弱的2.x虚拟机,然后其他的虚拟按照正常的3.x虚拟机结构进行加密

可以把编译去掉,直接试试只有虚拟化看看大小,2.x的时候有过这么diy的,生成后用来分析虚拟机很方便。
 楼主| Motu 发表于 2024-8-2 14:05
Motu 发表于 2024-8-2 14:01
试过了,修改flags把所有虚拟机的保护全部去掉,然后用1个2.x虚拟机差不多就增大了9kb,稍等我上个附件可以 ...

https://www.123pan.com/s/sBh9Td-4blf.html

点评

和这个差不多,当时有个隐藏功能,开启后就是加出来这个感觉。  详情 回复 发表于 2024-8-2 15:13
这个看起来就是2.x的好像。  详情 回复 发表于 2024-8-2 15:09
艾莉希雅 发表于 2024-8-2 14:40
20240802143943.jpg
之前不是有个人弄了个winmm.dll来搞这个,有没有用我就不知道了

点评

3.x gui 加出来2.x?  详情 回复 发表于 2024-8-2 15:10
Hmily 发表于 2024-8-2 15:09
Motu 发表于 2024-8-2 14:05
https://www.123pan.com/s/sBh9Td-4blf.html

这个看起来就是2.x的好像。
Hmily 发表于 2024-8-2 15:10
艾莉希雅 发表于 2024-8-2 14:40
之前不是有个人弄了个winmm.dll来搞这个,有没有用我就不知道了

3.x gui 加出来2.x?
Hmily 发表于 2024-8-2 15:13
Motu 发表于 2024-8-2 14:05
https://www.123pan.com/s/sBh9Td-4blf.html
[LCG新年礼物之二]VMProtect.Ultimate.V2.09.CracKed.By.LCG
https://www.52pojie.cn/thread-129044-1-1.html


和这个差不多,当时有个隐藏功能,开启后就是加出来这个感觉。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 13:07

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表