首页
社区
课程
招聘
[分享] 爱琴海CrackMe 第三道题的程序快速解密
发表于: 2017-6-11 04:04 4725

[分享] 爱琴海CrackMe 第三道题的程序快速解密

2017-6-11 04:04
4725

虽然没有做出来,也阻止不了我来分享。

看了其他几位大牛的writeup,很多反调试手段并没有特别指明。

可以参考风间仁的writeup,对反调试处理过程较为详细。http://bbs.pediy.com/thread-218241.htm

这道程序是使用VB语言写的,然后作者使用手工汇编对程序增加了几个反调试的处理。所幸的是只是做了VB程序入口前的反调试。

第一个反调试,修改程序入口

作者将程序入口修改为0x0,意味着在程序入口(EIP)在基址0x00400000处,在0x00400000处的汇编指令发现会跳转到0x00401090。

第二个反调试(不太合适),VB程序入口变形

VB程序的入口就是将程序控制权交给MSVBxx.dll,这个入口就是ThunRTMain。而在到达这个入口前,作者大量使用push +retn指令,使用非正常手段来控制程序流程。


第三个反调试 堆栈段寄存器

从.text:00408EC0 开始,利用pop SS + pushf + pop edi,判断TF标志,进行流程控制。

具体解释可以搜索加粗关键字


第四个反调试 OEP 程序入口

mov eax, dword ptr [eax],恰好是程序入口的第二个字节,如果没有修改程序入口地址,那么 eax=0,否则是10H,

再通过mov [4088E5],eax 隐秘地修改跳转指令的偏移。


第五个反调试 IsDebuggerPresent

这个比较常见,不叙述了


第六个反调试 修改VB程序的指令

我想说,这个无语。修改了三个加法指令,并互调两个VB全局变量


做完题目后,我萌生了一个想法,对这个程序脱壳,还原它的本来面目。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 1
支持
分享
最新回复 (2)
雪    币: 1355
活跃值: (339)
能力值: ( LV13,RANK:920 )
在线值:
发帖
回帖
粉丝
2
还少分析了时间反调试,DLL检测反调试,很有意思的
2017-6-11 08:21
0
雪    币: 187
活跃值: (70)
能力值: ( LV5,RANK:155 )
在线值:
发帖
回帖
粉丝
3
还漏了两个反调试
2017-6-11 11:35
0
游客
登录 | 注册 方可回帖
返回
//