首页
社区
课程
招聘
用Ollydbg手脱Packman V0.0.0.1加壳的DLL
发表于: 2005-3-5 21:47 10045

用Ollydbg手脱Packman V0.0.0.1加壳的DLL

fly 活跃值
85
2005-3-5 21:47
10045

用Ollydbg手脱Packman V0.0.0.1加壳的DLL
            
           
              
【软件简介】:Packman是昨天在exetools发布的压缩壳,压缩效果很棒。
            
【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
            
【调试环境】:WinXP、Ollydbg V1.10、PEiD、LordPE
            
―――――――――――――――――――――――――――――――――
【脱壳过程】:
         
         
PEiD的SiGn:
[Packman V0.0.0.1 -> Bubbasoft]
signature = 60 E8 00 00 00 00 58 8D ?? ?? ?? ?? ?? 8D ?? ?? ?? ?? ?? 8D ?? ?? ?? ?? ?? 8D ?? ?? 48
ep_only = true
―――――――――――――――――――――――――――――――――
一、脱壳的时机
            
            
003D7104    60              pushad
//进入Ollydbg后暂停在这
003D7105    E8 00000000     call EdrLib.003D710A
003D710A    58              pop eax
003D710B    8DA8 6EFFFFFF   lea ebp,dword ptr ds:[eax-92]

BP GetModuleHandleA
中断后取消断点,Alt+F9返回
此时就是Dump的最佳时机!所有代码已解压,输入表和重定位表都还没处理。
运行LordPE,完全dump出这个DLL

003D71ED    FF55 00         call dword ptr ss:[ebp]
003D71F0    56              push esi
//返回这里  ESI=003D442C
//输入表RVA=003D442C-当前基址003D0000=442C   ★
003D71F1    8B36            mov esi,dword ptr ds:[esi]
003D71F3    0BF6            or esi,esi
003D71F5    75 02           jnz short EdrLib.003D71F9
003D71F7    8BF7            mov esi,edi
003D71F9    03F3            add esi,ebx
003D71FB    03FB            add edi,ebx
003D71FD    EB 1B           jmp short EdrLib.003D721A
003D71FF    D1C1            rol ecx,1
003D7201    D1E9            shr ecx,1
003D7203    73 05           jnb short EdrLib.003D720A
003D7205    0FB7C9          movzx ecx,cx
003D7208    EB 05           jmp short EdrLib.003D720F
003D720A    03CB            add ecx,ebx
003D720C    8D49 02         lea ecx,dword ptr ds:[ecx+2]
003D720F    50              push eax
003D7210    51              push ecx
003D7211    50              push eax
003D7212    FF55 04         call dword ptr ss:[ebp+4]
003D7215    AB              stos dword ptr es:[edi]
003D7216    58              pop eax
003D7217    83C6 04         add esi,4
003D721A    8B0E            mov ecx,dword ptr ds:[esi]
003D721C    85C9            test ecx,ecx
003D721E    75 DF           jnz short EdrLib.003D71FF
003D7220    5E              pop esi
003D7221    83C6 14         add esi,14
003D7224    8B7E 10         mov edi,dword ptr ds:[esi+10]
003D7227    85FF            test edi,edi
003D7229    75 BC           jnz short EdrLib.003D71E7
//循环处理输入表

―――――――――――――――――――――――――――――――――
二、获取重定位表信息 + OEP

003D722B    8D8B 0000C0FF   lea ecx,dword ptr ds:[ebx+FFC00000]
//DumP后直接F4到这里
003D7231    B8 00600000     mov eax,6000
//EAX=6000就是输入表的RVA    ★
003D7236    0BC0            or eax,eax
003D7238    74 34           je short EdrLib.003D726E
//重定位表处理完毕则跳转
003D723A    03C3            add eax,ebx
//EAX=00006000+003D0000=003D6000
003D723C    EB 2A           jmp short EdrLib.003D7268

003D726E    61              popad
//F4到这里  EAX=003D63B0
//重定位表Size=003D63B0-003D6000=3B0    ★
003D726F    E9 90FEFFFF     jmp EdrLib.<ModuleEntryPoint>
003D7104    E9 C0A0FFFF     jmp EdrLib.003D11C9
//飞向光明之巅! ^O^

003D11C9    55              push ebp
//OEP    ★
003D11CA    8BEC            mov ebp,esp
003D11CC    53              push ebx
003D11CD    8B5D 08         mov ebx,dword ptr ss:[ebp+8]
003D11D0    56              push esi
003D11D1    8B75 0C         mov esi,dword ptr ss:[ebp+C]
003D11D4    57              push edi
003D11D5    8B7D 10         mov edi,dword ptr ss:[ebp+10]
003D11D8    85F6            test esi,esi
003D11DA    75 09           jnz short EdrLib.003D11E5

―――――――――――――――――――――――――――――――――
三、PE修正 + 完成脱壳

用LordPE修正dumped.dll的OEP RVA=000011C9、输入表RVA=0000442C、重定位表RVA=00006000、大小=000003B0,保存之。
有兴趣可以把输出表挪一下,省事就不动了,删除输出表后面的壳数据,用LordPE或者FileScanner优化一下。OK,脱壳完成。

―――――――――――――――――――――――――――――――――   
                                
         ,     _/
        /| _.-~/            \_     ,        青春都一晌
       ( /~   /              \~-._ |\
       `\\  _/                \   ~\ )          忍把浮名
   _-~~~-.)  )__/;;,.          \_  //'
  /'_,\   --~   \ ~~~-  ,;;\___(  (.-~~~-.        换了破解轻狂
`~ _( ,_..--\ (     ,;'' /    ~--   /._`\
  /~~//'   /' `~\         ) /--.._, )_  `~
  "  `~"  "      `"      /~'`\    `\\~~\   
                         "     "   "~'  ""
   
              UnPacked By :   fly
               2005-03-05 22:00


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

收藏
免费 7
支持
分享
最新回复 (9)
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
2
压缩包含有文件:


UnPacKeD.Packman.V.0.0.0.1.rar
EdrLib.dll
EdrTest.exe
UnPacked-EdrLib.dll
用Ollydbg手脱Packman V0.0.0.1加壳的DLL.txt


附件:DLL.Packman.rar
2005-3-5 21:47
0
雪    币: 301
活跃值: (300)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
3
辛苦了,支持一下
2005-3-5 22:10
0
雪    币: 12483
活跃值: (4200)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
收下学习
谢谢!
2005-3-5 23:38
0
雪    币: 161
活跃值: (231)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
好贴如美妇,我顶
2005-3-6 00:13
0
雪    币: 218
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
2005-3-6 08:13
0
雪    币: 5
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
7
最初由 fly 发布

PEiD的SiGn:
[Packman V0.0.0.1 -> Bubbasoft]
signature = 60 E8 00 00 00 00 58 8D ?? ?? ?? ?? ?? 8D ?? ?? ?? ?? ?? 8D ?? ?? ?? ?? ?? 8D ?? ?? 48
ep_only = true

........


请问fly大侠,你的特征码是怎样做出的?怎样才能确定打?号的位置?
2005-3-6 21:36
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
8
EP处代码,Ollydbg里面直接复制出来就行了
PEiD也有AddSig.dll插件
?? 表示不确定
2005-3-6 21:56
0
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
9
收下学习
谢谢!
2005-3-9 19:54
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
10
强!学习学习!
2005-3-10 23:12
0
游客
登录 | 注册 方可回帖
返回
//