首页
社区
课程
招聘
[原创]Vmprotect3.5.1 壹之型 — 暗月·宵之宫
2022-2-19 00:52 34029

[原创]Vmprotect3.5.1 壹之型 — 暗月·宵之宫

2022-2-19 00:52
34029

在很久很久以前,,神奇的nooby有了个天才的想法,通过修改themida的引擎,使其强制输出了没有混淆和加密的程序,很轻松的就分析完了外壳逻辑和vm的逻辑,盖亚。
图片描述
通过nooby的想法,我们也将vmp3.5.1的引擎进行了修改,使其强行输出了没有混淆和vm后的代码,便于我们分析外壳和handler的逻辑,今天先来看看vmp的反调试原理,先将vmp配置成如下,避免其他功能的干扰。
图片描述
保护后得到了非常干净的程序。
图片描述

 

图片描述
如图,这时的入口不再是骇人的 push 0xXXXXXX / call xxxxxx
而是

1
2
3
4
5
6
7
int start()
{
  if ( (unsigned int)sub_4F4664() == 1 )
    return mainCRTStartup();
  sub_4F44EC();
  return 0xDEADC0DE;
}

sub_4F4664()是一个非常大的函数,vmp整个外壳的逻辑所在,内存保护,导入表保护,资源保护,压缩等等就是在这个函数中处理的。
第一步,先获取ntdll的版本信息
图片描述
根据ntdll的版本初始化一些HardCode,后面会用到
图片描述
接着我们直奔诸葛亮三轮车,vmp自己封装了一个从模块的导出表直接得到地址的函数,这种方式在shellcode中比较常见。
图片描述
比较完善,还还考虑了转发的情况
图片描述
接着通过GetExportAddress和上面通过ntdll定位的syscall序号进行反调试检测。
图片描述
vmp分别通过了
IsDebuggerPresent,CheckRemoteDebuggerPresent, NtQueryInformationProcess,以及ZwSetInformationThread进行用户态反调试,vmp在调用函数之前,会检测头部是不是0xCC,然后直接报错。
还有就是直接syscall直接调用比较有效。

 

图片描述
那么,剩下的贰之型·珠华弄月再说..


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2022-2-19 02:50 被冰鸡编辑 ,原因:
收藏
点赞11
打赏
分享
打赏 + 50.00雪花
打赏次数 1 雪花 + 50.00
 
赞赏  Editor   +50.00 2022/03/14 恭喜您获得“雪花”奖励,安全圈有你而精彩!
最新回复 (40)
雪    币: 36
活跃值: (1105)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xiaomajia 2022-2-19 01:24
2
0
冰鸡师傅真厉害,一般引擎是不加密的,直接分析console就能翻到
雪    币: 1745
活跃值: (2661)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
稳拿第一 2022-2-19 09:13
3
0
大佬厉害! 请教下大佬如何修改vmp的引擎!
雪    币: 6
活跃值: (980)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lookzo 2022-2-19 09:16
4
0
good idea看vmp分析从来没有这么清楚过, 哈哈
雪    币: 5884
活跃值: (3815)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
pxhb 2 2022-2-19 12:04
5
1
思路很好,是不是可以举一反三去弄其他壳了, 怎么改引擎有没有人抛砖呢
雪    币: 6
活跃值: (2890)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
咖啡_741298 2022-2-19 12:18
6
0
6b
雪    币: 8044
活跃值: (4335)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
sunsjw 1 2022-2-19 13:23
7
0
值得我辈学习。希望能多分享这样有营养的文章。
雪    币: 2739
活跃值: (2366)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xiwushgya 2022-2-19 14:49
8
0
太厉害了,都是大神级人物
雪    币: 7300
活跃值: (3758)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
海风月影 22 2022-2-19 15:47
9
1
bin呢?
放个bin出来不是更好?
雪    币: 4016
活跃值: (5833)
能力值: ( LV7,RANK:102 )
在线值:
发帖
回帖
粉丝
fjqisba 2022-2-19 16:28
10
0
66666666
雪    币: 59
活跃值: (1481)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zbzb 2022-2-19 17:09
11
0
赞一个!
雪    币: 1790
活跃值: (2818)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
拍拖 2 2022-2-19 21:00
12
0
赞一个!期待后续文件及BIN文件。
雪    币: 177
活跃值: (1876)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xingbing 2022-2-21 12:31
13
0
期待放出VMP3.51版本。
雪    币: 11893
活跃值: (8064)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Genes 2022-2-21 13:53
14
0
无bin无真相[手动狗头]
雪    币: 6113
活跃值: (4016)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
黑洛 1 2022-2-26 18:09
15
0
放个bin!(伸手
雪    币: 180
活跃值: (122)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
雪中带风 2022-2-27 10:23
16
0
return 0xDEADC0DE 中 0xDEADC0DE 是什么东西
雪    币: 914
活跃值: (2173)
能力值: ( LV5,RANK:68 )
在线值:
发帖
回帖
粉丝
万剑归宗 1 2022-3-1 09:39
17
0
顾名思义,Dead Code
雪    币: 199
活跃值: (781)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
小夜的夜 2022-3-1 11:28
18
0
能放个bin就更好了
雪    币: 897
活跃值: (5917)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Alfik 2022-3-3 19:10
19
0
为该程序的早期版本制作一个通用补丁。
雪    币: 43
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
紫梦寒 2022-3-4 07:01
20
0
是不是可以举一反三去弄其他壳
雪    币: 254
活跃值: (160240)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
飘零丶 2022-3-4 14:32
21
1

楼主思路不错,学习了,顺便问一下,nooby的帖还能看到么,搜了下,没找到。研究了下,发现确实可以实现。期待楼主下一篇新作,无意班门弄斧,仅仅是感兴趣学习下而已。

回复很多人想要个bin,我发个初期研究成果吧,user-debug模式、VMP3.3、只去了VM没处理代码混淆的bin。

链接:https://pan.baidu.com/s/1T6pO311X5SrJ4Q2sXJSn8Q 

提取码:tsb9 

30天有效期,过期不补!have fun ~



雪    币: 897
活跃值: (5917)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Alfik 2022-3-4 18:28
22
0
飘零丶 楼主思路不错,学习了,顺便问一下,nooby的帖还能看到么,搜了下,没找到。研究了下,发现确实可以实现。期待楼主下一篇新作,无意班门弄斧,仅仅是感兴趣学习下而已。回复很多人想要个bin,我发个初期研究 ...
我们谈论的是保护器本身的原始补丁文件。
我们可以自己组装任何项目。
这对于生成虚拟指令的统计信息非常有用。
雪    币: 254
活跃值: (160240)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
飘零丶 2022-3-4 20:53
23
0
Alfik 我们谈论的是保护器本身的原始补丁文件。 我们可以自己组装任何项目。 这对于生成虚拟指令的统计信息非常有用。
哦 那我理解有误 抱歉。
雪    币: 1378
活跃值: (3067)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
风中小筑V 2022-3-4 21:16
24
0
思路真不错,  最后一张图片真恶心 
雪    币: 897
活跃值: (5917)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Alfik 2022-3-4 21:26
25
0
飘零丶 哦 那我理解有误 抱歉。
您的示例也非常好,但并未涵盖所有处理器指令。谢谢你的例子!
游客
登录 | 注册 方可回帖
返回