首页
社区
课程
招聘
[讨论]加了vmp的驱动文件.sys,怎么才能去掉壳子呢?
2024-1-28 08:36 3186

[讨论]加了vmp的驱动文件.sys,怎么才能去掉壳子呢?

2024-1-28 08:36
3186

exe或者dll文件,我都知道怎么搞,但是对加了vmp的.sys文件,应该怎么去掉壳子呢?下面这个加了vmp的驱动,彻底难住我了!


[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

最后于 2024-1-31 17:38 被kanxue编辑 ,原因:
上传的附件:
收藏
点赞0
打赏
分享
最新回复 (5)
雪    币: 119
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
学会规则 2024-1-29 10:33
2
0
所以 EXE 或者 DLL 该怎么脱掉 VMP 的壳? 不能用同一种方法吗?
雪    币: 222
活跃值: (143)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
ttaggg 2024-1-29 11:00
3
1
没脱过,只说个思路:
1. 找OEP
GsDriverEntry 就是OEP,一般在 INIT 节
2. oep处下断,windbg dump, .writemem 保存dump
3. 找 IAT内存区,跟普通 PE 一样。
4. 修复 IAT:
   驱动导入的函数一般都在 ntoskrnl或者 hal,记住这两个模块的内存区间。写个脱壳程序,判断 IAT 的地址落在哪个导入模块,然后重建导入表。
如果vmp 加了导入表保护,IAT 里的地址就在本模块,那就 unicorn 模拟执行 IAT 所在地址,跑飞的内存就是 iat的真实地址(一般在 hal和ntoskrnl)
5. 重定位的修复:
想办法让驱动加载两次,且加载到不同地址,每次在 OEP 断下来并 dump。对两次 dump 内存做二进制比较,地址不同的位置就是重定位的地址,然后重建重定位表。(如果只想想看看代码逻辑,那就不用修复重定位)。

最后,如果壳代码有反调试之类,得自己能绕过在 OEP 处能下断点。
雪    币: 12165
活跃值: (8150)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Genes 2024-1-29 15:41
4
0
其实,加载后直接dump出来,还是能够看个大概的,要是再详细的,那就要对壳下功夫了。
雪    币: 2650
活跃值: (4374)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zylrocket 2024-1-29 20:53
5
0
Genes 其实,加载后直接dump出来,还是能够看个大概的,要是再详细的,那就要对壳下功夫了。
可以加个好友?看私信
雪    币: 9
活跃值: (939)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
网络游侠 2024-1-31 17:14
6
0
ttaggg 没脱过,只说个思路: 1. 找OEP GsDriverEntry 就是OEP,一般在 INIT 节 2. oep处下断,windbg dump, .writemem 保存dump 3. 找 I ...
工具人流程了,哈哈,本来我想说的
游客
登录 | 注册 方可回帖
返回