首页
社区
课程
招聘
[转帖]Debugger and Devirtualizer for VMProtect with source code
发表于: 2015-8-24 11:25 4299

[转帖]Debugger and Devirtualizer for VMProtect with source code

2015-8-24 11:25
4299
By xSRTsect
Perhaps It was about time I should share my tool with you guys. This is a Debugger and Devirtualizer for VMP virtualized code. Notice that When I mean devirtualizer, I mean it shows what machine instructions it executes (not the actual x86 original code). Allows you to debug and place breakpoints. Please try it, and if you like it, please develop it further.

原帖在:[DevirtualizeMe] VMProtect 2.13.5

还没仔细看,功能上大致和zdhysd的“VMP分析插件v1.4”类似,不清楚是否有分析插件那样的“分析虚拟程序”功能。
也没有Deathway的Oreans插件具有的还原虚拟指令为x86指令的功能。
应该对这方面感兴趣的人有所帮助。

[课程]Android-CTF解题方法汇总!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 16444
活跃值: (2463)
能力值: ( LV9,RANK:147 )
在线值:
发帖
回帖
粉丝
2
很好,感谢大大分享.最喜欢源码了.
2015-8-24 11:34
0
雪    币: 90
活跃值: (80)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
终于有开源的VM分析引擎了
2015-8-24 13:13
0
雪    币: 347
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这个要看看
2015-8-24 13:21
0
雪    币: 167
活跃值: (1574)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
5
赞,收藏一份。
2015-8-24 14:13
0
雪    币: 40
活跃值: (1147)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
什么鸟玩意,以为用在od上的呢
2015-8-24 16:08
0
雪    币: 10867
活跃值: (2843)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
看标题差点看成VMProtect source code
2015-8-24 17:54
0
雪    币: 107
活跃值: (326)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
强帖留名。。。。。。。。。。。。。
2015-8-24 21:34
0
雪    币: 231
活跃值: (2631)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
9
不晓得怎么用的
2015-8-24 22:06
0
雪    币: 27
活跃值: (354)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
好给力,感谢楼主分享。
2015-8-25 18:01
0
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
谢谢分享,还开源了,呵呵
2015-8-25 18:29
0
雪    币: 627
活跃值: (663)
能力值: ( LV9,RANK:270 )
在线值:
发帖
回帖
粉丝
12
简单说明一下。

原来那个帖子的作者用MASM写了个测试程序(见附件中的 crackme\devirtualizeme_vmp_2.13.5.exe )。
程序有7个函数,数字键1~7用来执行它们。每个函数用VMProtect的不同选项组合进行保护,目的在于学习理解VMP虚拟机的工作方式,及选项怎么影响生成的代码。
整个程序非常简单,没有加壳,只需要专注各函数的虚拟化部分。
这7个函数几乎是相同的,各约有20条汇编指令,界面也是相同的,弹出同样的对话框。唯一的差异就是各个对话框的"Control value"不同。

我们的任务就是解出各"Control value"的算法,我回帖中给出了前3个,与后来楼主公布的答案基本吻合:
[FONT="Courier"]1 - Only mutation with no additional options (仅代码变异,无其他选项)
2 - Virtualization with no additional options (虚拟化,无其他选项)
3 - Virtualization with the VM integrity check option (虚拟化,带"VM Integrity Check"选项)
...[/FONT]

第一个函数,对VMP代码熟悉的话比较简单,也就是个经验的问题。人工识别相对容易,写代码来反变形、过滤出有效代码则是另一回事。
其他虚拟化的函数需要借助工具。先用“VMP分析插件v1.4”尝试:“分析虚拟机”时,有2~3个Handlers无法识别。补好后,虚拟机分析成功,“分析虚拟程序”失败。
估计是插件里,有的地方硬编码写死了,解码错误,进行不下去。后来写了个小东西来跟踪每条执行的虚拟指令。

请注意"VM Integrity Check"选项,实际上就是VMProtect对用户代码部分的“随机校验”。因为是“随机”,不易察觉,校验未通过,不会出提示,程序直接崩溃。
关于“文件校验”和“内存校验”,我回在t4y的另一个帖子“[InlineMe] VMProtect IsValidImageCRC()”里。
讲VMProtect的SDK API VMProtectIsValidImageCRC()函数究竟是个什么东西。感兴趣的可看看,不打算再“翻译”回中文了。
后两种校验以前讨论的人比较多;“随机校验”,印象中Safengine的作者曾提到过(UpK的某个帖子,伤感中……)。
这样VMProtect的各种校验就齐了,这是在Inline Patch(内存补钉)或Repack时必须解决的问题。

因为“VMP分析插件v1.4”不可用,所以特别感谢xSRTsect的分享。
每个人的方法都可能不同,我们可以从他人那里学到我们需要的东西。
2015-8-26 11:14
0
游客
登录 | 注册 方可回帖
返回
//