首页
社区
课程
招聘
用Ollydbg手脱 幻影 V2.33 加壳的DLL
发表于: 2004-6-6 20:10 9122

用Ollydbg手脱 幻影 V2.33 加壳的DLL

fly 活跃值
85
2004-6-6 20:10
9122

                     
                          
               
                           
【目标程序】:幻影 V2.33加壳的EdrLib.dll。附件中含有输入表和UnPacked以供参考。
               
【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
         
【调试环境】:WinXP、Ollydbg1.10修改版、IdtTool、LordPE、ImportREC
            
―――――――――――――――――――――――――――――――――
【脱壳过程】:
         
         
               
关于用 幻影 加壳DLL的脱壳,直至如今还没有公开一篇教程。于是我琢磨着写了这点东西,聊以充数吧。
               
先运行 飞叶流枫 兄的IdtTool保存中断地址,调试出错后恢复IDT,免得重启。           
老规矩:用IsDebug 1.4插件去掉flyODBG的调试器标志。设置flyODBG忽略所有的异常选项。
               
其实幻影加壳DLL的脱壳难点就在于重定位表的处理,因为没有资料可以参考,所以只好自己分析了。
你可以先跟到OEP,然后在DLL需要重定位的地址下内存写入断点,从而得到幻影对DLL重定位数据的处理代码段。下面提供的简便方法是在这个基础上归纳、总结出来的,或许不适用于幻影的所有版本。
               
常听见有朋友说公开的教程大部分只是过程记录而已,没有破解思路,进而怀疑写教程的兄弟害怕观者学习。
不知上面的一段话可否算为 简单的思路?其实很多时候作者的思路皆蕴涵在其过程之中!关键是看你自己怎么去看罢了。
至于“害怕观者学习”等等说法更是无稽之谈了。整理出笔记是件比较辛苦的事,能够发布笔记的兄弟都是忙里偷闲劳神费力无私分享出自己的成果,如果存在防他人学习的意思又何苦写这些东西呀?
               
另外:幻影 的威力依然不看小觑,刚开始学习脱壳的朋友暂时别碰了,不小心则爱机重启没商量。
卖油翁曰:“唯手熟而”,世上事大多如此,熟练之后方能产生技巧,方能得到属于你自己的感觉。
               
―――――――――――――――――――――――――――――――――
一、得到 重定位表 信息
            
         
首先我们可以跟到OEP,具体可以参看我以前发的《1分钟寻找 幻影 V2.33 壳的OEP》。
随便找一处DLL需重定位的代码,如:
003B11DC     833D 60533B00 00    cmp dword ptr ds:[3B5360],0
003B11E0处的3B肯定是被重定位之后的,记住这个地址。
用Ollydbg重新载入DLL,再次开始我们的DLL脱壳之旅…… ……  GO GO GO! ^O^
               

003B7000     EB 20               jmp short EdrLib.003B7022//进入OD后停在这
003B7022     9C                  pushfd
003B7023     55                  push ebp
003B7024     57                  push edi
003B7025     56                  push esi
003B7026     52                  push edx
003B7027     51                  push ecx
003B7028     53                  push ebx
003B7029     9C                  pushfd
003B702A     E8 00000000         call EdrLib.003B702F
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
HE VirtualAlloc 时的堆栈:
               
0006F8B4    003B7100  /CALL 到 VirtualAlloc 来自 EdrLib.003B70FA
0006F8B8    00000000  |Address = NULL
0006F8BC    0002DA70  |Size = 2DA70 (186992.)
0006F8C0    00001000  |AllocationType = MEM_COMMIT
0006F8C4    00000004  \Protect = PAGE_READWRITE
               
0006F8B8    003D4215  /CALL 到 VirtualAlloc 来自 EdrLib.003D420F
0006F8BC    00000000  |Address = NULL
0006F8C0    00030629  |Size = 30629 (198185.)
0006F8C4    00102000  |AllocationType = MEM_RESERVE|MEM_TOP_DOWN
0006F8C8    00000040  \Protect = PAGE_EXECUTE_READWRITE
               
0006F8BC    003D4234  /CALL 到 VirtualAlloc 来自 EdrLib.003D422E
0006F8C0    7FF60000  |Address = 7FF60000
0006F8C4    00030629  |Size = 30629 (198185.)
0006F8C8    00101000  |AllocationType = MEM_COMMIT|MEM_TOP_DOWN
0006F8CC    00000040  \Protect = PAGE_EXECUTE_READWRITE
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
    
003D4234     72 03               jb short EdrLib.003D4239//第1次
               
7FF7D504     83C4 04             add esp,4//第2次
7FF7D507     EB 02               jmp short 7FF7D50B
mov di,word ptr ds:[esi]
cmp di,word ptr ds:[esi+2]
7FF80FB9     33C0                xor eax,eax
7FF80FBB     8BB5 FBCC4200       mov esi,dword ptr ss:[ebp+42CCFB]//直接F4到这里!
//[ebp+42CCFB]=[7FF864E2]=00006000 ★ 这个00006000就是重定位表的RVA!
7FF80FC1     83FE 00             cmp esi,0
7FF80FC4     74 60               je short 7FF81026
//可以使这里跳转,避开重定位!★
7FF80FC6     03B5 CBCA4200       add esi,dword ptr ss:[ebp+42CACB]
7FF80FCC     66:8B3E             mov di,word ptr ds:[esi]//找到这里
7FF80FCF     66:3B7E 02          cmp di,word ptr ds:[esi+2]
7FF80FD3     74 51               je short 7FF81026
//重定位处理完毕后则跳转
7FF80FD5     8B3E                mov edi,dword ptr ds:[esi]
7FF80FD7     83FF 00             cmp edi,0
7FF80FDA     74 4A               je short 7FF81026
7FF80FDC     03BD CBCA4200       add edi,dword ptr ss:[ebp+42CACB]
7FF80FE2     8B4E 04             mov ecx,dword ptr ds:[esi+4]
7FF80FE5     83E9 08             sub ecx,8
7FF80FE8     83F9 00             cmp ecx,0
7FF80FEB     74 39               je short 7FF81026
7FF80FED     D1E9                shr ecx,1
7FF80FEF     83C6 08             add esi,8
7FF80FF2     66:8B06             mov ax,word ptr ds:[esi]
7FF80FF5     66:25 00F0          and ax,0F000
7FF80FF9     66:3D 0030          cmp ax,3000
7FF80FFD     75 1C               jnz short 7FF8101B
7FF80FFF     66:33C0             xor ax,ax
7FF81002     66:8706             xchg word ptr ds:[esi],ax
//注意:这里把重定位表清0!如果没在7FF80FC4处跳转的话则需要先把重定位表DUMP出来,脱壳后再粘贴回去!★
7FF81005     66:25 FF0F          and ax,0FFF
7FF81009     8B9D 0FCD4200       mov ebx,dword ptr ss:[ebp+42CD0F]
7FF8100F     291C07              sub dword ptr ds:[edi+eax],ebx
7FF81012     8B9D CBCA4200       mov ebx,dword ptr ss:[ebp+42CACB]
7FF81018     011C07              add dword ptr ds:[edi+eax],ebx
7FF8101B     83C6 02             add esi,2
7FF8101E     49                  dec ecx
7FF8101F     83F9 00             cmp ecx,0
7FF81022     75 CE               jnz short 7FF80FF2
7FF81024     EB A6               jmp short 7FF80FCC//循环处理
7FF81026     61                  popad
//这里下硬件断点,或者直接F4到这里。ESI=003B63B0
7FF81027     C3                  retn
7FF7D504     83C4 04             add esp,4//来到7FFXXXXX地段
7FF7D507     EB 02               jmp short 7FF7D50B
    
7FF80FC4     74 60               je short 7FF81026
//修改为:jmp short 7FF81026

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

收藏
免费 9
支持
分享
最新回复 (8)
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
2
UnPacked-EdrLib[幻影 V2.33].rar  包含文件:
            
              
树文件
EdrLib.dll
EdrTest.exe
UnPacked-EdrLib[幻影 V2.33].dll


       :D
点击下载:UnPacked-EdrLib[幻影 V2.33].rar!
2004-6-6 20:13
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
好一个DLL系列,学习ing
2004-6-6 20:18
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
4
我的Dbpe教程里的不明飞行物nop掉就可以去掉reloc
里边有reloc RVA
2004-6-6 20:22
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
5
最初由 forgot 发布
我的Dbpe教程里的不明飞行物nop掉就可以去掉reloc
里边有reloc RVA


UFO 看不清呀
早知道就不用如此费劲了
2004-6-6 20:29
0
雪    币: 108
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
学习ing!!
2004-6-6 20:44
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
fly好历害哦!!!学习中~~
2004-6-6 20:55
0
雪    币: 446
活跃值: (758)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
8
只要是Fly的贴,都是精品,
只是是Fly的贴,我都收藏~!
2004-6-6 21:35
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
9
最初由 fly 发布



UFO 看不清呀
早知道就不用如此费劲了

我开始由于D.Boy的奇怪代码懵了,后来hying跟都没跟就看出来是reloc...我@%#%@#$%@$%
2004-6-6 21:42
0
游客
登录 | 注册 方可回帖
返回
//