首页
社区
课程
招聘
[求助]泄露的VMP源码中runtime如果重新编译并嵌入vmp主程序?
2023-12-19 20:13 10190

[求助]泄露的VMP源码中runtime如果重新编译并嵌入vmp主程序?

2023-12-19 20:13
10190

vmp主程序调用的壳runtime是core文件夹里面的几个inc,例如win_runtime64_dll.inc,这个inc文件是vmp加壳 win_runtime.dll(64位)的时候自动生成的。但是我测试了下,vs编译出win_runtime.dll(64位),然后用vmp加壳生成inc,再编译进vmp壳。vmp壳直接无法运行。。。。,要不就是vmp主程序加壳生成的文件无法运行。

求教正确的编译方式。


[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

收藏
点赞5
打赏
分享
最新回复 (25)
雪    币: 1790
活跃值: (2874)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
拍拖 2 2023-12-20 08:38
2
0
总算有人摸到关键点了。我只试验了32位的运行时库版本,用自己编译的win_runtime32.dll用core目录下的runtime.vmp生成对应的win_runtime32_dll.inc后编译VMPROTECT后对软件加壳会遇到一些问题。我这边遇到的最大问题是
一些类的函数体代码不超过5字节,导致进行保护时提示函数长度不够(用VS2015编译,原编译环境是VS2008,不知道是不是这个差别),跳过运行时库函数体代码不超过5字节的就可以编译通过,且运行
正常。
雪    币: 8861
活跃值: (2369)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
cvcvxk 10 2023-12-20 13:14
3
0
拍拖 总算有人摸到关键点了。我只试验了32位的运行时库版本,用自己编译的win_runtime32.dll用core目录下的runtime.vmp生成对应的win_runtime32_dll.inc后编译V ...
是VS2015过度优化的问题——哈哈哈
雪    币: 117
活跃值: (1504)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
coolspace 2023-12-20 13:18
4
0
拍拖 总算有人摸到关键点了。我只试验了32位的运行时库版本,用自己编译的win_runtime32.dll用core目录下的runtime.vmp生成对应的win_runtime32_dll.inc后编译V ...
函数长度不够的从保护列表里删掉即可。编译出来的vmprotect主程序可以运行,这个主程序加壳别的exe出来的成品文件能运行吗?那个才和runtime有真正关系,我是主程序加壳别人,被加壳的成品文件无法运行。
雪    币: 1412
活跃值: (4204)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
IamHuskar 4 2023-12-20 16:09
5
0
cvcvxk 是VS2015过度优化的问题——哈哈哈
以为你已经消失了呢。好久没看到回复了
雪    币: 577
活跃值: (47816)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小旺不正经 2023-12-20 17:51
6
0
厉害 
雪    币: 117
活跃值: (1504)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
coolspace 2023-12-21 16:22
7
0


我这测试,发现替换win_runtime32.dll.inc后,编译出来的vmp主程序,加壳的其他程序,都不能运行。V141forXP编译的。



雪    币: 117
活跃值: (1504)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
coolspace 2023-12-21 18:25
8
0

用自带的unit-tests测试了下,替换成自己编译的win_runtimexx.dll.inc后,对应的SEH的测试会出问题。


用回自带的inc文件就没事。所以看来还是有啥事。目前还没找到具体的原因。


PS:用的vs2022+qt5.6


PS2: 换vs2015测试了,一样不行。看来是其他地方的问题。


最后于 2023-12-21 20:24 被coolspace编辑 ,原因:
雪    币: 38
活跃值: (1823)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Olii 2023-12-21 20:37
9
0
coolspace 用自带的unit-tests测试了下,替换成自己编译的win_runtimexx.dll.inc后,对应的SEH的测试会出问题。用回自带的inc文件就没事。所以看来还是有啥事。目前还没找到具体的原因。 ...

我这是替换win_runtime32.dll.inc后,编译出来的vmp主程序,加密其他软件时,编译选项都不勾,只虚拟化函数可以运行,勾一个都运行不了,感觉还是runtime编译出来的函数有问题。

最后于 2023-12-21 20:38 被Olii编辑 ,原因: 补充
雪    币: 1412
活跃值: (4204)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
IamHuskar 4 2023-12-21 21:56
10
0
coolspace 用自带的unit-tests测试了下,替换成自己编译的win_runtimexx.dll.inc后,对应的SEH的测试会出问题。用回自带的inc文件就没事。所以看来还是有啥事。目前还没找到具体的原因。 ...
解决了大佬记得更新一下方案
雪    币: 4027
活跃值: (1724)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mfkiwl 2023-12-22 07:14
11
0
感觉这事不简单?
雪    币: 117
活跃值: (1504)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
coolspace 2023-12-22 18:44
12
0
还是没找到具体原因,不知有没有大牛已经发现解决方案了?
雪    币: 15
活跃值: (323)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
vaguem 2023-12-23 09:16
13
0
我用debug编译的,默认是禁用代码优化的,64试过了没问题啊
雪    币: 117
活跃值: (1504)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
coolspace 2023-12-23 10:35
14
0
vaguem 我用debug编译的,默认是禁用代码优化的,64试过了没问题啊

编译出来的win_runtime.dll,更新成win_runtime64.dll.inc,覆盖到core目录里面,之后再重编译vmprotect.exe,用这个vmprotect.exe加壳其他程序,,加壳出来的成品文件运行没问题?

最后于 2023-12-23 10:38 被coolspace编辑 ,原因:
雪    币: 185
活跃值: (506)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kkte 2023-12-23 10:47
15
0
runtime 和 vmprotect主程序 优化选项设置一致即可
雪    币: 38
活跃值: (1823)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Olii 2023-12-23 11:03
16
0
vaguem 我用debug编译的,默认是禁用代码优化的,64试过了没问题啊
我用vs2015和2022都不行
雪    币: 38
活跃值: (1823)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Olii 2023-12-23 12:26
17
0
破案了,兄弟们,啥都不用改,用vs2010打开 win_runtime.vcxproj,单独生成一个sln,我看win_runtime会依赖sdk,把sdk项目也加进去,修改两个项目平台工具集v100,,然后直接32 release 生成dll 再用runtime.vmp生成inc,最后编译vmp( debug x64 Visual Studio 2017 - Windows XP (v141_xp))  加壳其他软件,选项全开,完美运行
雪    币: 15
活跃值: (323)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
vaguem 2023-12-23 13:53
18
0
coolspace vaguem 我用debug编译的,默认是禁用代码优化的,64试过了没问题啊 编译出来的win_runtime.dll,更新成win_runti ...
是的,特意试过了,没半点问题,可能和上面兄弟说的,需要“优化选项设置一致”
雪    币: 117
活跃值: (1504)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
coolspace 2023-12-23 14:21
19
0
vaguem 是的,特意试过了,没半点问题,可能和上面兄弟说的,需要“优化选项设置一致”
必须用vs2010?2015不行?  
winruntime 这个工程默认打开了whole program optimization。关闭了不行
雪    币: 117
活跃值: (1504)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
coolspace 2023-12-23 15:08
20
0
见了鬼了,vs2015同样参数编译的就不行,换vs2010嘛事没有。
雪    币: 117
活跃值: (1504)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
coolspace 2023-12-23 15:17
21
0

用老板vs2010编译dll,再用新版编译exe。

最后于 2023-12-23 15:18 被coolspace编辑 ,原因:
雪    币: 117
活跃值: (1504)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
coolspace 2023-12-24 10:57
22
0

使用v100 toolset编译就没事,用其他更高版本的toolset如v141_xp编译就不行,还没发现设置选项差别在哪。


不知有谁通过调整vs2015或者vs2022里面的编译选项,使用v141_xp及以上的toolset能成功编译win_runtime并成功替换的?

最后于 2023-12-24 11:24 被coolspace编辑 ,原因:
雪    币: 59
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
wx_man_611 2023-12-25 09:54
23
0
Olii 破案了,兄弟们,啥都不用改,用vs2010打开 win_runtime.vcxproj,单独生成一个sln,我看win_runtime会依赖sdk,把sdk项目也加进去,修改两个项目平台工具集v100 ...
牛叉,感谢分享
雪    币: 5148
活跃值: (3240)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
樂樂 2023-12-25 12:10
24
0
大佬们 请问.inc文件怎么生成的?
雪    币: 117
活跃值: (1504)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
coolspace 2024-1-3 08:09
25
0
用runtime.vmp加壳win_runtime_32.dll自然就生成了inc
游客
登录 | 注册 方可回帖
返回