吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 12068|回复: 13
收起左侧

[转贴] 用OllyDBG手脱ASPack加壳的DLL

[复制链接]
Hmily 发表于 2015-7-11 22:21
OllyDbg手脱ASPack加壳的DLL   fly
http://www.unpack.cn/thread-56-1-1.html


【目标程序】:ASPack加壳的EdrLib.dll。附件中含有输入表和UnPacked以供参考。        
            
【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
         
【调试环境】:WinXP、OllyDBG、LordPE、ImportREC
            
—————————————————————————————————
脱壳过程】:         
         
                           
一、重定位表RVA + OEP

[Asm] 纯文本查看 复制代码
003B7001     60                  pushad//进入OD后停在这
003B7002     E8 03000000         call EdrLib.003B700A


提供一个简便寻找ASPack加壳DLL的重定位处理代码段的方法!
Ctrl+S在“整个段块”搜索命令序列:         

[Asm] 纯文本查看 复制代码
mov ecx,dword ptr ds:[esi+4]
sub ecx,8
shr ecx,1


找到在003B71F6处!我们在其上的003B71DA处下断,F9运行,中断。   

[Asm] 纯文本查看 复制代码
003B71C8     8785 35050000       xchg dword ptr ss:[ebp+535],eax
003B71CE     8B95 22040000       mov edx,dword ptr ss:[ebp+422]
003B71D4     8B85 2D050000       mov eax,dword ptr ss:[ebp+52D]
003B71DA     2BD0                sub edx,eax
//这里其实就是检测与映像基址是否相符,和ASProtect的方法一样。不符则重定位处理!★
003B71DC     74 79               je short EdrLib.003B7257
//可以在这里改标志位Z=1,使其跳转,这样脱壳后就不需要修改基址了。 ★
003B71DE     8BC2                mov eax,edx
003B71E0     C1E8 10             shr eax,10
003B71E3     33DB                xor ebx,ebx
003B71E5     8BB5 39050000       mov esi,dword ptr ss:[ebp+539]
//[ebp+539]=003B754C=00006000 ★ 这个00006000就是重定位表的RVA!
003B71EB     03B5 22040000       add esi,dword ptr ss:[ebp+422]
003B71F1     833E 00             cmp dword ptr ds:[esi],0
003B71F4     74 61               je short EdrLib.003B7257
//重定位处理完毕后这里就跳转       在003B7257处下断
003B71F6     8B4E 04             mov ecx,dword ptr ds:[esi+4]
//找到这里
003B71F9     83E9 08             sub ecx,8
003B71FC     D1E9                shr ecx,1
003B71FE     8B3E                mov edi,dword ptr ds:[esi]
003B7200     03BD 22040000       add edi,dword ptr ss:[ebp+422]
003B7206     83C6 08             add esi,8
003B7209     66:8B1E             mov bx,word ptr ds:[esi]
003B720C     C1EB 0C             shr ebx,0C
003B720F     83FB 01             cmp ebx,1
003B7212     74 0C               je short EdrLib.003B7220
003B7214     83FB 02             cmp ebx,2
003B7217     74 16               je short EdrLib.003B722F
003B7219     83FB 03             cmp ebx,3
003B721C     74 20               je short EdrLib.003B723E
003B721E     EB 2C               jmp short EdrLib.003B724C
003B7220     66:8B1E             mov bx,word ptr ds:[esi]
003B7223     81E3 FF0F0000       and ebx,0FFF
003B7229     66:01041F           add word ptr ds:[edi+ebx],ax
003B722D     EB 1D               jmp short EdrLib.003B724C
003B722F     66:8B1E             mov bx,word ptr ds:[esi]
003B7232     81E3 FF0F0000       and ebx,0FFF
003B7238     66:01141F           add word ptr ds:[edi+ebx],dx
003B723C     EB 0E               jmp short EdrLib.003B724C
003B723E     66:8B1E             mov bx,word ptr ds:[esi]
003B7241     81E3 FF0F0000       and ebx,0FFF
003B7247     01141F              add dword ptr ds:[edi+ebx],edx
003B724A     EB 00               jmp short EdrLib.003B724C
003B724C     66:830E FF          or word ptr ds:[esi],0FFFF
//这里把许多重定位数据变为FFFF ★ NOP掉!
003B7250     83C6 02             add esi,2
003B7253     E2 B4               loopd short EdrLib.003B7209
003B7255     EB 9A               jmp short EdrLib.003B71F1//循环处理
         
003B7257     8B95 22040000       mov edx,dword ptr ss:[ebp+422]//这里下断,ESI=003B63B0
003B725D     8BB5 41050000       mov esi,dword ptr ss:[ebp+541]
003B7263     0BF6                or esi,esi
003B7265     74 11               je short EdrLib.003B7278


当我们中断在003B7257处时,重定位处理完毕。此时ESI=003B63B0,就是重定位表的结束地址啦。
得到重定位表信息:
RVA=00006000,大小=003B63B0-003B6000=000003B0         
         
现在我们去OEP吧,呵呵。Ctrl+B 在当前位置下搜索Hex值:61 75,即popad、jnz         

[Asm] 纯文本查看 复制代码
003B73AF     61                  popad//找到这里,下断!
003B73B0     75 08               jnz short EdrLib.003B73BA
003B73B2     B8 01000000         mov eax,1
003B73B7     C2 0C00             retn 0C
003B73BA     68 C9113B00         push EdrLib.003B11C9
003B73BF     C3                  retn//飞向光明之巅! ^O^


[Asm] 纯文本查看 复制代码
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。

—————————————————————————————————
二、输入表 + PE修正
            
            
随便从程序找一个API调用,如:
003B10FD     FF15 20403B00       call dword ptr ds:[3B4020]; kernel32.GetVersion
在转存中跟随3B4020,上下看到许多函数地址,很明显的可以找到IAT开始和结束的地址:      

[Asm] 纯文本查看 复制代码
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,注意DLL已经重定位,去掉“使用来自磁盘的PE部首”的选项!            
选中Ollydbg的loaddll.exe的进程,然后点“选取DLL”,选择EdrLib.dll,填入RVA=00004000、大小=000000C8 ,点“Get Import”,得到输入表。改OEP=000011C9,FixDump!
                        
用LordPE修正dumped_.dll的重定位表RVA=00006000、大小=000003B0,保存之。
再用LordPE修正dumped_.dll的基址为003B0000,OK,脱壳完成啦。
如果在003B71DC处跳过了重定位处理,则不需要修改基址。      
                     
         
—————————————————————————————————   

                              
         ,     _/
        /| _.-~/            \_     ,        青春都一晌
       ( /~   /              \~-._ |\
       `\\  _/                \   ~\ )          忍把浮名
   _-~~~-.)  )__/;;,.          \_  //'
  /'_,\   --~   \ ~~~-  ,;;\___(  (.-~~~-.        换了破解轻狂
`~ _( ,_..--\ (     ,;'' /    ~--   /._`\
  /~~//'   /' `~\         ) /--.._, )_  `~
  "  `~"  "      `"      /~'`\    `\\~~\   
                         "     "   "~'  ""

     UnPacKed By 巢水工作坊——fly [OCN][FCG][NUKE][DCM]
                2004-06-01  23:00

免费评分

参与人数 1热心值 +1 收起 理由
caleb110 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

meiyoudao 发表于 2015-7-11 22:23
top 1   
caleb110 发表于 2015-7-11 22:32
ghostlg 发表于 2015-7-11 23:07
smile1110 发表于 2015-7-11 23:30
俺之前都是搜xlhg来着,貌似大家也都是这样子搜,基本第二处下断就是了
Monitor 发表于 2015-7-12 01:14
Top 5  既然H大转过来的就一定要看
www52pojiecn 发表于 2015-8-3 09:48
先mark一下,慢慢看
动物凶猛 发表于 2015-8-4 00:00
完全看不懂
周星星2016 发表于 2018-1-24 13:00
慢慢看,一时还是不太懂
冰布 发表于 2018-1-24 14:44
支持大佬666666
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-21 19:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表