SDProtector 1.12 外壳分析

来源:互联网 发布:影像中国软件下载 编辑:程序博客网 时间:2024/06/10 16:39

【目     标】:N/A
【工     具】:Ollydbg 1.1 IDA 4.7

【任     务】: 外壳分析
【操作平台】:Winxp sp2

【作     者】: LOVEBOOM[DFCG][FCG][CUG]
【相关链接】
: N/A
【简要说明】: 传说这个外壳比较强悍,我以前没时间分析的时间时候,用OD试了几次挂了,后面一直没有时间分析这个外壳,今天终于可以完成自己的心愿,拨开它的神秘面纱,看看这个壳是是不是真的这么神秘,这么强劲。不过说真的,等自己分析完了,第一个感觉就是上当,作者的写壳能力是我见过的最有待改进的。不过不管怎么说,什么事都是说容易做的时候难,也许有一天我自己写的时候也会出不少问题J.题外话:用Word写分析文章还是真不方便,抓下来的代码给自己的感觉就是乱乱的。但不用WORD也不好办,文件太长了,做成txt的打开不方便,做成html 的修改格式就麻烦,没办法,只能选个择中的方法。

加上这个外壳的分析,算起来就快到十个外壳完全分析了,恭喜下自己J,向20进军。关于文章的其它说明,文章已经不再是以前的教你按几次F9,按什么键等操作性文章,如果你只是想知道怎么脱壳,那么很抱歉文章不适用于你。

【详细过程】:

        壳的保护:

              这个外壳用的Anti-Debug还是比较多,可以大概的分为两部分,一部分是ODsice共用的反调试部分,另一部分是分别针对sice OD的,还好,这个壳对OD的检测还只是一般的水平。共用的反调试部分也是这个壳的灵魂部分:用时间差来检测调试器,不断的检测时间差(从另一角度来看,这也是这个壳的失败之处,对于稍微有经验的朋友来说,时间差他们没有起到多大的作用,只可能让壳的性能降低,浪费CPU资源。),这个壳的检测时间的方法为RDTSCGetProcessTimesGetTickcount.。另一部分中的针对Od的检测: 主要用ZwQueryInformationProcessIsDebuggerPresent,还有一个是多线程(多线程对SICE来讲没有很大的阻碍);针对sice的检测就比较多有常用的INT3擦除硬件断点(注:虽然这个对OD也有效,但作用并不大),防止单步调试检测,CreateFileA 检测(这个检测 同时会检测常用的调试器和调试器相关的东西,如Trw,icedump等等)ZwQuerySystemInformation检测驱动名(还会检测IceExt,感觉多余,因为iceext安装时可以自定义名字的)

         我自己是用OD分析,检测sice之类的对我来说就不重要了,重要的是公用检测和OD检测部分,好了,接下来开始慢慢分析,并从中找出跳过检测的方法。同前面的文章差不多,我喜欢用IDA来静态注释,那样看起来很方便。

       准备工作:

              开始文章之前你要对壳有个大概的了解,对汇编有一定的了解,对调试工具也要有一定的了解。我分析过几次之后发现这个外壳和其它外壳一样有,花指令基本上是用宏来写的,根据它的特性我随手写了个简单的清除花指令的脚本,因为我自己担心会影响到程序的,所以只是简单的处理了下花指令没有完全去除,不过这样已经很方便我们看代码,附件中的csdp.txt便为清楚花指令脚本。准备好了相关工作后,开始进入分析过程。

由于文章比较长,这里贴不下,要看完整文章的朋友请到看雪论坛上下载"SDProtector v1.12外壳完整分析(年终篇) "http://bbs.pediy.com/showthread.php?s=70f87c6c6003488ca89a56c00830baf8&threadid=19630.