首页
社区
课程
招聘
[样章2]《加密与解密(第三版)》--13.5 DLL文件脱壳(重定位表修复部分)
发表于: 2008-3-16 10:42 122627

[样章2]《加密与解密(第三版)》--13.5 DLL文件脱壳(重定位表修复部分)

2008-3-16 10:42
122627
第13章 脱壳技术
13.1 基础知识
13.1.1 壳的加载过程
13.1.2 脱壳机
13.1.3 手动脱壳
13.2 寻找OEP
13.2.1 根据跨段指令寻找OEP
13.2.2 用内存访问断点找OEP
13.2.3 根据堆栈平衡原理找OEP
13.2.4 根据编译语言特点找OEP
13.3 抓取内存映像
13.3.1 Dump原理
13.3.2 反DUMP技术
13.4 重建输入表
13.4.1 输入表重建的原理
13.4.2 确定IAT的地址和大小
13.4.3 根据IAT重建输入表
13.4.4 ImportREC重建输入表
13.4.5 输入表加密概括
13.5 DLL文件脱壳
13.5.1 寻找OEP
13.5.2 Dump映像文件
13.5.3 重建DLL的输入表
13.5.4 构造重定位表
13.6 附加数据
13.7 PE文件的优化
13.8 压缩壳
13.8.1 UPX外壳
13.8.2 ASPack外壳
13.9 静态脱壳
13.9.1 外壳Loader的分析
13.9.2 编写静态脱壳器
13.10 加密壳
13.10.1 ASProtect
13.10.2 Thmedia的SDK分析
DLL文件的脱壳与EXE文件步骤差不多,所不同的是,DLL文件多了个基址重定位表等要考虑。

在2003年出版的《加密与解密》(第二版)中以UPX,PECompact为例讲述了DLL重定位重建的方法,由于本人的思路限制,当时只是从UPX,PECompact自身特点找思路解决这问题,即先分析UPX,PECompact对重定位表处理算法,然后写工具逆算法还原重定位表,如UPXAngela.exe等工具。这种思路的通用性不好,针对不同的壳和版本,要重写工具,并且逆算法可能不完美,从而存在bug。

后来,askformore在“重建重定位表脚本”一文中,提出了一种更通用性的解决办法,利用外壳重定位相关数据时,会根据外壳转储的重定位表确定要重定位的RVA,完成代码重定位工作。将这些要重定位的RVA提取出来,再将这些RVA根据重定位表的定义重新生成一份新的重定位表。shoooo也曾提到过这个思路。于是,在第三版重写这部分时,根据这个思路写了一款工具来完成这个重建功能,详见附件的ReloREC。另外,ReloREC重构重定位表的算法代码,参考了ccfer在看雪论坛.珠海金山2007逆向分析挑战赛 第二阶段第三题 提交的代码。在此一并表示感谢!
003DE7F5   .  58              pop     eax
003DE7F6   .  61              popad
003DE7F7   .  8D4424 80       lea     eax, dword ptr [esp-80]
003DE7FB   >  6A 00           push    0
003DE7FD   .  39C4            cmp     esp, eax
003DE7FF   .^ 75 FA           jnz     short 003DE7FB
003DE801   .  83EC 80         sub     esp, -80
003DE804   >- E9 372AFFFF     jmp     003D1240  //跳到OEP
003D1266     A1 58B43D00        mov     eax, dword ptr [3DB458]
003DE79E  mov     al, byte ptr [edi]              ;指向UPX自己加密过的重定位表
003DE7A0  inc     edi                                  ;指针移向下一位
003DE7A1  or      eax, eax                            ;EAX=0?结束标志
003DE7A3  je      short 003DE7C7               
003DE7A5  cmp     al, 0EF
003DE7A7  ja      short 003DE7BA                   
003DE7A9  add     ebx, eax                          ;EBX的初值为(0xFFC+基址)
003DE7AB  mov     eax, dword ptr [ebx]             ;EBX指向需要重定位的数据,取出放到EAX
003DE7AD  xchg    ah, al
003DE7AF  rol     eax, 10
003DE7B2  xchg    ah, al
003DE7B4  add     eax, esi                          ; ESI指向UPX0区块的VA,本例=3D1000
003DE7B6  mov     dword ptr [ebx], eax           ;重定位
003DE7B8  jmp     short 003DE79C              
003DE7BA  and     al, 0F
003DE7BC  shl     eax, 10
003DE7BF  mov     ax, word ptr [edi]
003DE7C2  add     edi, 2
003DE7C5  jmp     short 003DE7A9            
003DE7C7  mov     ebp, dword ptr [esi+E044]        ;改好ESI为401000后,按F4到这里

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (98)
雪    币: 50161
活跃值: (20610)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
UPX外壳可以使用UPX自身来去除,这样壳脱得最完美。本节只是为了讨论重定位表技术,用UPX为例演示。碰到变形的UPX壳,可以试试UPXFIX_by_DiKe(http://bbs.pediy.com/showthread.php?t=52140  ),它可以重构UPX外壳,处理后,用原版UPX  –d命令脱壳了。

附件“加密与解密(第二版)upx重定位表修复.pdf ”是《加密与解密(第二版)》相关内容,仅供思路上的参考。
上传的附件:
2008-3-16 12:04
0
雪    币: 247
活跃值: (10)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
3
啥时候书出来啊???

买!打死也要买!
2008-3-16 12:54
0
雪    币: 247
活跃值: (10)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
4
建议坛主在论坛搞个调查,看看论坛上有多少人要买这本书
估计一下需求
这样进展会顺利点。。。
2008-3-16 13:06
0
雪    币: 266
活跃值: (52)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
5
昨天晚上我已经拿到第三版了。。。

早上才发觉是一个梦
2008-3-16 15:40
0
雪    币: 334
活跃值: (22)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
好好好!!!
2008-3-16 16:14
0
雪    币: 134
活跃值: (84)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
7
太诱人了,呵呵
2008-3-17 20:45
0
雪    币: 164
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
很是勾引人呐
2008-3-18 17:28
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
一定购买,学习。
2008-3-19 02:02
0
雪    币: 9036
活跃值: (5286)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jgs
10
一二三,一个都不能少!强烈支持!
2008-3-20 00:04
0
雪    币: 143
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
肯定买,看雪的书有多少买多少。没时间看的话就当收藏好了
2008-3-20 00:13
0
雪    币: 228
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
我也要一定要想法办法买到手
2008-3-23 12:57
0
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
期待电子版。
2008-3-23 13:59
0
雪    币: 107
活跃值: (1738)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
14
600多页的估计也得100+吧   电子书看的很累人的 我还是喜欢精装的 呵呵
2008-3-23 14:05
0
雪    币: 217
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
不知老大什么时候能上市啊!支持!!
2008-3-23 18:51
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
什么时候能买到??
2008-3-23 20:13
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
想把一二三版都买了
2008-3-23 20:20
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
老大快等不及了。。。快放书。。。
2008-3-25 16:02
0
雪    币: 200
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
建意看雪老大可以邮购!
2008-3-27 15:41
0
雪    币: 88
活跃值: (115)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
支持大大,希望可以邮购~~~
2008-3-27 15:55
0
雪    币: 233
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
支持,等待上市。
2008-3-27 16:38
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
谢谢! 新手报道
2008-3-27 17:52
0
雪    币: 411
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
支持。期待上市。
2008-4-2 11:01
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
看雪的书肯定买.
2008-4-10 10:05
0
雪    币: 309
活跃值: (15)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
25
什么时间才能看到书啊??
2008-4-10 18:53
0
游客
登录 | 注册 方可回帖
返回
//