-
-
[分享] 爱琴海CrackMe 第三道题的程序快速解密
-
发表于:
2017-6-11 04:04
4726
-
[分享] 爱琴海CrackMe 第三道题的程序快速解密
虽然没有做出来,也阻止不了我来分享。
看了其他几位大牛的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全局变量
做完题目后,我萌生了一个想法,对这个程序脱壳,还原它的本来面目。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!