好友
阅读权限25
听众
最后登录1970-1-1
|
材鸟
发表于 2017-7-10 16:08
本帖最后由 材鸟 于 2017-7-10 16:23 编辑
目前常见的保护壳,多为VMProtect,Safengine。其主要保护核心为“代码虚拟化”功能
功能主要将被保护的代码抹去后以其独特的体系去执行被抹去的代码【注:相当于一句chinese的句子里面插入了English,或者other外语,以一种不被理解的字义来代替原始文字】,常称之为:VMCODE,被VM的代码
下文共以两例讲解这套“独特的体系”
(一例为论坛用户suno 所发帖子demoVMcrackme)(一例自写CrackMe+VMProtect)
例一http://www.52pojie.cn/forum.php?mod=viewthread&tid=572327
感谢suno ,先以此贴demo讲解【请一定将帖子看完,最好动手一试再来看】
首先可以看到CrackMe要求输入NAME KEY进行注册。
输入错误信息可以看到会弹出信息框提示 Wrong OD载入,找按钮的派发事件(不解释,这都不会就没必要继续看了)
1
可以看到账号密码验证都CALL了401060,MesageBox TEXT参数为固定地址4014F4
2
账号验证CALL处步进看看
3
一般到这里可能都懵了What the fk shit?
4
这就是一段被VM的代码了,现在进入的代码段可以称呼为VM代码虚拟机(原指令已经不可视化,由代码虚拟机将原指令实现执行)现在需要分析代码虚拟机得出原始指令,修改实现破解。这里说一下这个VM代码虚拟机的结构
5
那么看完后明白了,现在要破解就需要找到比较账号密码的Handler,将其修改就OK。现在怎么找?看堆栈 4017C4,执行完Handler后他还是会VMretn回去的,下断
6
选项-调试设置
7
设置一下,CTRL+F11 然后断在4017C4,现在跟踪功能已经记录了,账号验证CALL的代码(不过是被VM的)
8
这是账号验证所执行的”代码块”
9
很明显,第一条就是dispatch第二条进去看看
10
先定义一下,方便理解[EBP-F]=A [EBP-1C]=B [EBP-14]=C [EBP-10]=D [EBP-B]=F [EBP-18]=XAdd a,4Mov b,aInc [c]Mov al, [c]Mov D,alMov F,DMov X,DMov [B],D *一条MOV的HANDLER 。 并不是类似test cmp的命令 下一条
11
也是MOV一堆参数之类的下一条
12
Sub Sete Sets sub改变标志位,sete sets保存标志位 相当于test cmp之类指令的HANDLER很明显这是一条比较的HANDLER。401196先记录下来。下一条
13
不是比较的,略过下一条
14
不是比较的,略过下一条
15
有一条cmp,不过并不是比较的HANDLER下一条
16
也不是比较的HANDLER下一条
17
VM RETN~ 那么比较的HANDLER就是401196,调试一下看看
18
账号验证处,断下。CTRL+G 401196. F4
19
35比0?在4011AB再按一下F4
20
32比0?继续F4
21
70比0?继续F4
22
正在对账号进行验证~不过这个0是什么鬼?就是说并没有正确的账号咯?不管他,也不打算逆推,直接在4011AB改 SUB EAX,EAX,将VM中进行比较的HANDLER改成比较什么都说对, - -
23
OK!(因为密码比较也是经过这条HANDLER的,可以自己去调试看看,我已经改成他说什么都对了,密码比较经过也说对,所以OK)
例二自写一个CrackMe ,然后加个VM
01
02
03
04
OK,源码都贴上了,CM就不介绍了。直接OD载入,找按钮派发事件
05
剩下的有人看再补上去吧, 乱 ~ 懒~
word.zip
(1.73 MB, 下载次数: 117)
打包.rar
(1.69 MB, 下载次数: 102)
|
免费评分
-
查看全部评分
本帖被以下淘专辑推荐:
- · 学习及教程|主题: 1131, 订阅: 1123
- · 杂七杂八|主题: 1074, 订阅: 320
- · 破解教程|主题: 126, 订阅: 213
- · 优秀逆向文|主题: 238, 订阅: 93
- · 教程类|主题: 265, 订阅: 43
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|