13.5 dll文件脱壳

13.5 dll文件脱壳

ID:15923921

大小:124.50 KB

页数:7页

时间:2018-08-06

13.5 dll文件脱壳_第1页
13.5 dll文件脱壳_第2页
13.5 dll文件脱壳_第3页
13.5 dll文件脱壳_第4页
13.5 dll文件脱壳_第5页
资源描述:

《13.5 dll文件脱壳》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、标题:【样章2】《加密与解密(第三版)》--13.5DLL文件脱壳(重定位表修复部分)作者:kanxue时间:2008-03-16,10:42链接:http://bbs.pediy.com/showthread.php?t=61334软件安全系列图书——《加密与解密》(第三版)目录第13章脱壳技术13.1基础知识13.1.1壳的加载过程13.1.2脱壳机13.1.3手动脱壳13.2寻找OEP13.2.1根据跨段指令寻找OEP13.2.2用内存访问断点找OEP13.2.3根据堆栈平衡原理找OEP13.2.4根据编译语言特点找OEP13.3抓取内存映像13.3.1Dump原理13.3

2、.2反DUMP技术13.4重建输入表13.4.1输入表重建的原理13.4.2确定IAT的地址和大小13.4.3根据IAT重建输入表13.4.4ImportREC重建输入表13.4.5输入表加密概括13.5DLL文件脱壳13.5.1寻找OEP13.5.2Dump映像文件13.5.3重建DLL的输入表13.5.4构造重定位表13.6附加数据13.7PE文件的优化13.8压缩壳13.8.1UPX外壳13.8.2ASPack外壳13.9静态脱壳13.9.1外壳Loader的分析13.9.2编写静态脱壳器13.10加密壳13.10.1ASProtect13.10.2Thmedia的SDK分

3、析13.5DLL文件脱壳说明DLL文件的脱壳与EXE文件步骤差不多,所不同的是,DLL文件多了个基址重定位表等要考虑。在2003年出版的《加密与解密》(第二版)中以UPX,PECompact为例讲述了DLL重定位重建的方法,由于本人的思路限制,当时只是从UPX,PECompact自身特点找思路解决这问题,即先分析UPX,PECompact对重定位表处理算法,然后写工具逆算法还原重定位表,如UPXAngela.exe等工具。这种思路的通用性不好,针对不同的壳和版本,要重写工具,并且逆算法可能不完美,从而存在bug。后来,askformore在“重建重定位表脚本”一文中,提出了一种更

4、通用性的解决办法,利用外壳重定位相关数据时,会根据外壳转储的重定位表确定要重定位的RVA,完成代码重定位工作。将这些要重定位的RVA提取出来,再将这些RVA根据重定位表的定义重新生成一份新的重定位表。shoooo也曾提到过这个思路。于是,在第三版重写这部分时,根据这个思路写了一款工具来完成这个重建功能,详见附件的ReloREC。另外,ReloREC重构重定位表的算法代码,参考了ccfer在看雪论坛.珠海金山2007逆向分析挑战赛第二阶段第三题提交的代码。在此一并表示感谢!声明:本文以第三版“13.5DLL文件脱壳”一文和其他章节临时整理组织,稍有简化,可能有部分地方用词和描述不是

5、太连贯。加壳的DLL处理重定位表有以下几种情况:1)完整的保留了原重定位表;2)对原重定位表进行了加密处理;等等像ASPack,ASProtect等壳属于第1种情况,没有加密重定位表,脱壳后,只需找到重定位的地址和大小即可。像UPX,PECompact等壳属于第2种情况,必须重建重定位表,这也是本文所要讨论的,本文以UPX为例来讲述一下重定位的重建。用UPXv3.01将EdrLib.dll文件加壳,用PE工具查看其PE信息。EntryPoint:E640hImageBase:400000h13.5.1寻找OEP当DLL被初次映射到进程的地址空间中时,系统将调用DllMain函数,

6、当卸载DLL时也会再次调用DllMain函数。也就是说,DLL文件相比EXE文件运行有一些特殊性,EXE的入口点只在开始时执行一次,而DLL的入口点在整个执行过程中至少要执行两次。一次是在开始时,用来对DLL做一些初始化。至少还有一次是在退出时,用来清理DLL再退出。所以DLL找OEP也有两条路可以走,一是载入时找,另一方法是在退出时找。而且一般来说前一种方法外壳代码较复杂,建议用第二种方法。UPX壳比较简单,往下翻翻,就可看到跳到OEP的代码:代码:003DE7F5.58popeax003DE7F6.61popad003DE7F7.8D442480leaeax,dwordptr

7、[esp-80]003DE7FB>6A00push0003DE7FD.39C4cmpesp,eax003DE7FF.^75FAjnzshort003DE7FB003DE801.83EC80subesp,-80003DE804>-E9372AFFFFjmp003D1240//跳到OEP13.5.2Dump映像文件停在OEP后,运行LordPE,在进程窗口选择loaddll.exe进程,在下方窗口中的EdrLib.dll模块上单击右键,执行“dumpfull”菜单命令,将文件抓取并保

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。