首页
社区
课程
招聘
用Ollydbg手脱UPX加壳的DLL
发表于: 2004-5-30 21:59 27972

用Ollydbg手脱UPX加壳的DLL

fly 活跃值
85
2004-5-30 21:59
27972
                        
     
               
           
【目标程序】:UPX加壳的EdrLib.dll。附件中还有输入表、重定位数据、UPXAngela以及UnPacked以供参考。        
            
【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
         
【调试环境】:WinXP、Ollydbg1.10C、WinHex、LordPE、UPXAngela、ImportREC
            
―――――――――――――――――――――――――――――――――
【脱壳过程】:
         
         
         
其实这篇东东只是《加密与解密》第2版中关于UPX脱壳的Ollydbg脱壳翻版。
Ollydbg1.10C加UPXAngela脱UPX的DLL很是方便呀,呵呵。
―――――――――――――――――――――――――――――――――
一、得到重定位表RVA和OEP
            
         
  
003B8100     807C24 08 01        cmp byte ptr ss:[esp+8],1//进入OD后停在这
003B8105     0F85 7D010000       jnz EdrLib.003B8288

            
不用跟踪,Ctrl+S 在当前位置下搜索命令序列:
xchg ah,al
rol eax,10
xchg ah,al
add eax,esi

            
找到在003B826D处,在其上mov al,byte ptr ds:[edi]的003B825E处下断,F9运行,断下
            
003B825E     8A07                mov al,byte ptr ds:[edi]
//EDI=003B7318-当前基址003B0000=00007318  ★ 这就是重定位表的RVA
003B8260     47                  inc edi
003B8261     09C0                or eax,eax
003B8263     74 22               je short EdrLib.003B8287
//重定位数据处理完毕则跳转
003B8265     3C EF               cmp al,0EF
003B8267     77 11               ja short EdrLib.003B827A
003B8269     01C3                add ebx,eax
003B826B     8B03                mov eax,dword ptr ds:[ebx]
003B826D     86C4                xchg ah,al//找到这里
003B826F     C1C0 10             rol eax,10
003B8272     86C4                xchg ah,al
003B8274     01F0                add eax,esi
003B8276     8903                mov dword ptr ds:[ebx],eax
003B8278     EB E2               jmp short EdrLib.003B825C
003B827A     24 0F               and al,0F
003B827C     C1E0 10             shl eax,10
003B827F     66:8B07             mov ax,word ptr ds:[edi]
003B8282     83C7 02             add edi,2
003B8285     EB E2               jmp short EdrLib.003B8269

            
在003B8287处下断,F9运行,断下,重定位数据处理完毕
当我们在003B8287处中断下来时,EDI=003B74EA,就是重定位表结束的地址
            
003B8287     61                  popad
//此时EDI=003B74EA  ★
003B8288     E9 3C8FFFFF         jmp EdrLib.003B11C9
//飞向光明之点巅!

            
003B11C9     55                  push ebp//OEP ★
003B11CA     8BEC                mov ebp,esp
003B11CC     53                  push ebx
003B11CD     8B5D 08             mov ebx,dword ptr ss:[ebp+8]
003B11D0     56                  push esi
003B11D1     8B75 0C             mov esi,dword ptr ss:[ebp+C]
003B11D4     57                  push edi
003B11D5     8B7D 10             mov edi,dword ptr ss:[ebp+10]
003B11D8     85F6                test esi,esi
003B11DA     75 09               jnz short EdrLib.003B11E5

            
用LordPE选中Ollydbg的loaddll.exe的进程,在下面的列表里选择EdrLib.dll,然后完整脱壳,得到dumped.dll。
            
            
―――――――――――――――――――――――――――――――――
二、输入表
            
            
随便从程序找一个API调用,如:
003B10FD     FF15 20403B00       call dword ptr ds:[3B4020]; kernel32.GetVersion

在转存中跟随3B4020,上下看到许多函数地址,很明显的可以找到IAT开始和结束的地址:
            
003B3FF0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
003B4000  1D 51 C4 77 1C 3A C4 77 3E E7 C4 77 CC D2 C4 77  .Q.w.:.w>..w...w
             
003B40B0  CE 7C E5 77 05 74 E5 77 F9 81 E5 77 EB 41 E4 77  .|.w.t.w...w.A.w
003B40C0  66 C8 E5 77 3E 18 F6 77 00 00 00 00 00 00 00 00  f..w>..w........

            
开始地址=003B4000
结束地址=003B40C9
            
运行ImportREC,注意:去掉“使用来自磁盘的PE部首”的选项!
            
选中Ollydbg的loaddll.exe的进程,然后点“选取DLL”,选择EdrLib.dll,填入RVA=00004000、大小=000000C8 ,点“Get Import”,得到输入表。改OEP=000011C9,FixDump!
            
            
―――――――――――――――――――――――――――――――――
三、重定位表修复 + PE修正
            
            
UPX破坏了重定位表。在第一步我们已经得到重定位表的地址了,用WinHex打开dumped_.dll,复制7318-74EA之间的16进制数值,另存为fly.bin
运行 看雪 老师写的辅助修复UPX加壳DLL重定位表的工具UPXAngela.exe,打开fly.bin,很快的提示pediy.bin文件创建成功!
         
从dumped_.dll找块空白代码,如自UPX1段的6000处开始。够用就行,pediy.bin中的数据长度为3B0。
用WinHex把pediy.bin中的16进制数值全部复制、写入到dumped_.dll的6000处。
用LordPE修正dumped_.dll的重定位表RVA=00006000、大小=000003B0,保存之。
            
再用LordPE修正dumped_.dll的基址为003B0000,OK,脱壳完成啦。
               
            
―――――――――――――――――――――――――――――――――   
                                
         ,     _/ 
        /| _.-~/            \_     ,        青春都一晌
       ( /~   /              \~-._ |\
       `\\  _/                \   ~\ )          忍把浮名 
   _-~~~-.)  )__/;;,.          \_  //'
  /'_,\   --~   \ ~~~-  ,;;\___(  (.-~~~-.        换了破解轻狂
 `~ _( ,_..--\ (     ,;'' /    ~--   /._`\ 
  /~~//'   /' `~\         ) /--.._, )_  `~
  "  `~"  "      `"      /~'`\    `\\~~\   
                         "     "   "~'  ""

   

     Cracked By 巢水工作坊――fly [OCN][FCG][NUKE][DCM]

                2004-05-30  21:21
                        

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 10
支持
分享
最新回复 (67)
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
2
:D

EdrLib.dll[UPX]+UnPacked.rar 包含文件:
            
   
   
EdrLib.dll
EdrTest.exe
UnPacked-EdrLib.dll
树文件.txt
fly.bin
pediy.bin
UPXAngela.exe


附件修正下载:

附件:Dll_UPX.rar

2004-5-30 22:02
0
雪    币: 10500
活跃值: (2159)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
哈哈 学习中。。。
2004-5-30 22:19
0
雪    币: 223
活跃值: (106)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
学习!
2004-5-30 22:55
0
雪    币: 261
活跃值: (230)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
5
我对fly大哥很佩服,敬仰之情悠然而生
收到学习:) :)
2004-5-31 15:04
0
雪    币: 261
活跃值: (230)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
6
不好意思
UPXAngela我找不到也
哪位大哥帮我一下吧
2004-5-31 15:11
0
雪    币: 2319
活跃值: (565)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
7
学习  ~~
2004-5-31 15:21
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
8
最初由 hunter_boy 发布
不好意思
UPXAngela我找不到也
哪位大哥帮我一下吧


UPXAngela 在上面的压缩包里应该有吧
2004-5-31 15:44
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
9
对于dll来说,upx比aspr某些版本恐怖多了:D
2004-5-31 17:04
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
请斑竹提供UPXAngela 下载
2004-6-2 11:50
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
11
最初由 脱脱 发布
请斑竹提供UPXAngela 下载


请下载上面的附件,已放入UPXAngela.exe
2004-6-2 12:01
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
Ollydbg版的,收藏
2004-6-2 17:05
0
雪    币: 261
活跃值: (230)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
13
感谢中...
2004-6-2 17:05
0
雪    币: 226
活跃值: (100)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
好!真是行云流水,破得那么顺畅,看起来舒服.
2004-6-2 18:00
0
雪    币: 149
活跃值: (1171)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
不能下载了.能不能提供一个可以下载的
2004-6-2 18:43
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
LeA
16
教程的修复重定位表修复是不是写错了啊?

UPX破坏了重定位表。在第一步我们已经得到重定位表的地址了,用WinHex打开dumped_.dll,复制[[[[7318-74EA]]]]之间的16进制数值,另存为fly.bin
运行 看雪 老师写的辅助修复UPX加壳DLL重定位表的工具UPXAngela.exe,打开fly.bin,很快的提示pediy.bin文件创建成功!

应该改成这样才对!!
2004-6-2 20:09
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
17
的确是笔误了,感谢 LeA 兄弟的提醒  :D
已经修正
2004-6-2 23:09
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ywb
18
好!
2004-6-3 20:05
0
雪    币: 108
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
谢谢,收下了!!
2004-6-6 20:55
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
不能下载了 能否在提供一下?谢谢!急需
2004-10-27 14:35
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
21
2004-10-27 15:24
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
学习了一下午,麻烦斑竹能否给个 UPX加壳的EdrLib.dll 文件 没有对照操作 还很陌生,先谢谢了 在线等
2004-10-28 03:10
0
雪    币: 218
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
:D
2004-10-28 12:49
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
烦斑竹能否给个 UPX加壳的EdrLib.dll 文件 没有对照操作 还很陌生,先谢谢了 在线等
2004-10-29 13:57
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
25
EdrLib.dll

附件:EdrLib.rar
2004-10-29 14:04
0
游客
登录 | 注册 方可回帖
返回
//