安全中国首页 > 文章中心 > 脱壳技术
 
安全中国网友投稿专用上传FTP空间:
Ftp服务器:download.anqn.com
Ftp端口:21
用户名:anqn
密 码:anqn.com
 

HidePE 和 Ste@lth PE 1.01脱壳——HidePE和StealthPE主程序

更新时间:2008-5-28 0:06:50
责任编辑:高远
热 点:
下载地址:  http://tongtian.net/pediybbs/download.php?id=639
软件大小:  325.3 KB

【软件简介】:俄国人的东东。二点 兄弟介绍说“是PEID和FI等软件的克星”。

【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!

【调试环境】:WinXP、Ollydbg1.09、PEiD、LordPE、ImportREC

————————————————————————————————— 
【脱壳过程】:
          
         
其实PEiD 0.91能够查出这个东东正确的OEP。手脱很简单,偶再捏个软柿子吧。

用Ollydbg载入这个目标程序,不打声招呼就直接运行了,Ollydbg 一片空白,很是干净呀。   这可不行:设置Ollydbg  选项->调试设置->事件->标记首先暂停在->系统断点。

—————————————————————————————————
一、HidePE.exe 脱壳


77F7F571     C3                   retn//进入OD后停在这 系统启动断点!

下断:BP VirtualFree    F9运行,确定几个提示。断下,然后取消断点

77E59E34     55                   push ebp //断在这!Ctrl+F9执行到返回
77E59E35     8BEC                 mov ebp,esp
77E59E37     FF75 10              push dword ptr ss:[ebp+10]
77E59E3A     FF75 0C              push dword ptr ss:[ebp+C]
77E59E3D     FF75 08              push dword ptr ss:[ebp+8]
77E59E40     6A FF                push -1
77E59E42     E8 04000000          call kernel32.VirtualFreeEx
77E59E47     5D                   pop ebp
77E59E48     C2 0C00              retn 0C //返回至 0046A09B


0046A09B     E8 97000000          call HidePE.0046A137//F8带过,确定几个提示
0046A0A0     73 79                jnb short HidePE.0046A11B//跳

0046A11B     8BB5 38854000        mov esi,dword ptr ss:[ebp+408538]
0046A121     8BBD 3C854000        mov edi,dword ptr ss:[ebp+40853C]
0046A127     E8 280A0000          call HidePE.0046AB54//这个里面只有一个Ret
0046A12C     61                   popad
0046A12D     9D                   popfd
0046A12E     50                   push eax
0046A12F     68 84454500          push HidePE.00454584//  这就是OEP值  
0046A134     C2 0400              retn 4  //返回至 00454584  飞向光明之巅!


————————————————————————

00454584     55                   push ebp//在这儿用LordPE完全DUMP这个进程
00454585     8BEC                 mov ebp,esp
00454587     83C4 F4              add esp,-0C
0045458A     B8 F4434500          mov eax,HidePE.004543F4
0045458F     E8 C81CFBFF          call HidePE.0040625C
00454594     A1 C45D4500          mov eax,dword ptr ds:[455DC4]
00454599     8B00                 mov eax,dword ptr ds:[eax]
0045459B     E8 A418FFFF          call HidePE.00445E44


———————————————————————

运行ImportREC,选择这个进程。把OEP改为00054584,点IT AutoSearch,点“Get Import”,FixDump,正常运行!用PEiD看脱壳后的程序,Borland Delphi 4.0-5.0  呵呵


—————————————————————————————————
二、StealthPE.exe 脱壳


StealthPE.exe 用PEiD看是Ste@lth PE 1.01->BGCorp,再看看其区段名,呵呵,好几个壳的名字,其实这个东东是很弱的,icon_smile.gif  入口方式和ASPack是一样的。
 

77F7F571     C3                   retn//进入OD后停在这 系统启动断点!

下断:BP VirtualFree    F9运行,确定几个提示。断下。然后取消断点

77E59E34     55                   push ebp //断在这!
77E59E35     8BEC                 mov ebp,esp
77E59E37     FF75 10              push dword ptr ss:[ebp+10]
77E59E3A     FF75 0C              push dword ptr ss:[ebp+C]
77E59E3D     FF75 08              push dword ptr ss:[ebp+8]
77E59E40     6A FF                push -1
77E59E42     E8 04000000          call kernel32.VirtualFreeEx
77E59E47     5D                   pop ebp
77E59E48     C2 0C00              retn 0C


接着下断:BP GetProcAddress   F9运行,断下。然后取消断点

77E5A5FD     55                   push ebp //断在这!Ctrl+F9执行到返回
77E5A5FE     8BEC                 mov ebp,esp
   …… …… 省 略 …… ……
77E5A654     8B45 0C              mov eax,dword ptr ss:[ebp+C]
77E5A657     5F                   pop edi
77E5A658     5B                   pop ebx
77E5A659     C9                   leave
77E5A65A     C2 0800              retn 8 //返回至 004642FC


返回程序后是几个循环,不必浪费时间,直接向下找popad,在004643AA处,下断,F9运行,断在004643AA 


004642FC     85C0                 test eax,eax //返回这里!
004642FE     5B                   pop ebx
004642FF     75 6F                jnz short StealthP.00464370

00464370     8907                 mov dword ptr ds:[edi],eax
00464372     8385 F03F4400 04     add dword ptr ss:[ebp+443FF0],4
00464379     E9 32FFFFFF          jmp StealthP.004642B0//循环啦  直接向下找popad
0046437E     8906                 mov dword ptr ds:[esi],eax
00464380     8946 0C              mov dword ptr ds:[esi+C],eax
00464383     8946 10              mov dword ptr ds:[esi+10],eax
00464386     83C6 14              add esi,14
00464389     8B95 FC494400        mov edx,dword ptr ss:[ebp+4449FC]
0046438F     E9 EBFEFFFF          jmp StealthP.0046427F
00464394     8B85 AD394400        mov eax,dword ptr ss:[ebp+4439AD]
0046439A     50                   push eax
0046439B     0385 FC494400        add eax,dword ptr ss:[ebp+4449FC]
                                  //EAX=00051A28 + 00400000=00451A28  这就是OEP值  
004643A1     59                   pop ecx
004643A2     0BC9                 or ecx,ecx
004643A4     8985 E63C4400        mov dword ptr ss:[ebp+443CE6],eax
004643AA     61                   popad//找到这个 popad  
004643AB     75 08                jnz short StealthP.004643B5
004643AD     B8 01000000          mov eax,1
004643B2     C2 0C00              retn 0C

004643B5     68 281A4500          push StealthP.00451A28
004643BA     C3                   retn  //返回至 00451A28  飞向光明之巅!


———————————————————————
  
00451A28     55                   push ebp//在这儿用LordPE完全DUMP这个进程
00451A29     8BEC                 mov ebp,esp
00451A2B     83C4 F4              add esp,-0C
00451A2E     B8 A0184500          mov eax,StealthP.004518A0
00451A33     E8 2448FBFF          call StealthP.0040625C
00451A38     A1 942E4500          mov eax,dword ptr ds:[452E94]
00451A3D     8B00                 mov eax,dword ptr ds:[eax]
00451A3F     E8 1825FFFF          call StealthP.00443F5C


———————————————————————

运行ImportREC,选择这个进程。把OEP改为00051A28,点IT AutoSearch,点“Get Import”,FixDump,正常运行!


—————————————————————————————————
三、试炼品   用HidePE和StealthPE加壳


1、用HidePE加壳的Win98的记事本 脱壳


用LordPE看用HidePE加壳的Win98的记事本: 基地址RVA=00400000  入口点地址=0000D000

77F7F571     C3                   retn//进入OD后停在这 系统启动断点!

下断:BP 40D000   F9运行,确定几个提示。断下。

0040D000     0BC0                 or eax,eax //断在这!
0040D002     0BC0                 or eax,eax
0040D004     0BC0                 or eax,eax
0040D006     0BC0                 or eax,eax
0040D008     0BC0                 or eax,eax
0040D00A     0BC0                 or eax,eax
0040D00C     0BC0                 or eax,eax
0040D00E     0BC0                 or eax,eax
0040D010     BA CC104000          mov edx,Notepad.004010CC
0040D015     FFE2                 jmp edx

004010CC     BA 17D04000          mov edx,Notepad.0040D017
004010D1     FFE2                 jmp edx

0040D017     BA CC104000          mov edx,H-Notepa.004010CC
0040D01C     B8 558BEC83          mov eax,83EC8B55
0040D021     8902                 mov dword ptr ds:[edx],eax
0040D023     83C2 03              add edx,3
0040D026     B8 83EC4456          mov eax,5644EC83
0040D02B     8902                 mov dword ptr ds:[edx],eax
0040D02D     83C2 FD              add edx,-3
0040D030     FFE2                 jmp edx   ; Notepad.004010CC


004010CC     55                   push ebp//在这儿可以DUMP了
004010CD     8BEC                 mov ebp,esp
004010CF     83EC 44              sub esp,44
004010D2     56                   push esi
004010D3     FF15 E4634000        call dword ptr ds:[<&KERNEL32.GetCommandLineA>]


————————————————————————
2、用StealthPE加壳的 Window 按钮突破专家.exe 脱壳


试了好几个程序均没有加壳成功,找了个 Window 按钮突破专家.exe 加壳成功
用LordPE看用HidePE加壳的 突破专家.exe : 基地址RVA=00400000  入口点地址=00004800

77F7F571     C3                   retn//进入OD后停在这 系统启动断点!

下断:BP 404800   F9运行,确定几个提示。断下。

00404800     BA 00104000          mov edx,突破.00401000//断在这!
00404805     FFE2                 jmp edx

00401000     BA 07484000          mov edx,突破.00404807
00401005     FFE2                 jmp edx

00404807     BA 00104000          mov edx,突破.00401000
0040480C     B8 6A00E819          mov eax,19E8006A
00404811     8902                 mov dword ptr ds:[edx],eax
00404813     83C2 03              add edx,3
00404816     B8 19010000          mov eax,119
0040481B     8902                 mov dword ptr ds:[edx],eax
0040481D     83C2 FD              add edx,-3
00404820     FFE2                 jmp edx  ; 突破.00401000 // 飞向光明之巅!


00401000     6A 00                push 0 //在这儿可以DUMP了
00401002     E8 19010000          call <jmp.&KERNEL32.GetModuleHandleA>
00401007     6A 00                push 0
00401009     68 1E104000          push 突破.0040101E
0040100E     6A 00                push 0
00401010     6A 65                push 65
00401012     50                   push eax
00401013     E8 14010000          call <jmp.&USER32.DialogBoxParamA>


晕倒,HidePE和StealthPE 差不多呀,都是一个作者,看样子是在ASPack基础上改装的 


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

    

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

               2003-12-14  19:46

 
相关文章
一日一文章
 
一日一软件
一日一动画