吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5121|回复: 6
收起左侧

[分享] PECompact v2.986 Retail试炼壳简单分析

[复制链接]
evilangel 发表于 2009-4-8 12:29
本帖最后由 evilangel 于 2009-4-8 12:42 编辑

不懂得如何给软件加试炼壳,只是简单加了下,加壳方式如下

加壳选项.gif

OD载入,忽略所以异常
停在

01001000 >  B8 C8AF0101     mov     eax, 0101AFC8                   //EP入口
01001005    50              push    eax
01001006    64:FF35 0000000>push    dword ptr fs:[0]
0100100D    64:8925 0000000>mov     fs:[0], esp
01001014    33C0            xor     eax, eax
01001016    8908            mov     [eax], ecx

///////////////////////////////////////////////////////////
跟以前的类似
下断点:BP VirtualFree
先运行一次 断在

7C809B04 >  8BFF            mov     edi, edi
7C809B06    55              push    ebp
7C809B07    8BEC            mov     ebp, esp
7C809B09    FF75 10         push    dword ptr [ebp+10]
7C809B0C    FF75 0C         push    dword ptr [ebp+C]
7C809B0F    FF75 08         push    dword ptr [ebp+8]
7C809B12    6A FF           push    -1
7C809B14    E8 09000000     call    VirtualFreeEx
7C809B19    5D              pop     ebp
7C809B1A    C2 0C00         retn    0C
////////////////////////////////////////////////////////////
不取消断点,alt+f9返回

002D1255    5F              pop     edi                              ; 0081408E
002D1256    5E              pop     esi
002D1257    8BC3            mov     eax, ebx
002D1259    5B              pop     ebx
002D125A    C9              leave
002D125B    C2 0C00         retn    0C

////////////////////////////////////////////////////////////
右键---查找---二进制字符串   输入   89 02

下面的地方
       


002D1C51    50              push    eax                              ; NOTEPAD-.01007AA0
002D1C52    FF75 FC         push    dword ptr [ebp-4]                ; //上面一行函数压栈
002D1C55    FF93 4D1F0010   call    [ebx+10001F4D]                   ; //MAGIC CALL,F2下断,F9运行断在这儿
002D1C5B    5A              pop     edx
002D1C5C    85C0            test    eax, eax
002D1C5E  ^ 0F84 6FFFFFFF   je      002D1BD3
002D1C64    8906            mov     [esi], eax                       ; //函数给地址
002D1C66    8902            mov     [edx], eax                       ; //如果加密给加密的地址
002D1C68    83C2 04         add     edx, 4
002D1C6B    83C6 04         add     esi, 4
002D1C6E  ^ EB AC           jmp     short 002D1C1C
002D1C70    33C0            xor     eax, eax
002D1C72    5E              pop     esi
002D1C73    5F              pop     edi
002D1C74    5B              pop     ebx
002D1C75    C9              leave
002D1C76    C2 1000         retn    10

//////////////////////////////////////////////////////////////////
断下后  取消断点, 002D1C55 这一行 F7  进入

002D091D    55              push    ebp
002D091E    8BEC            mov     ebp, esp
002D0920    83C4 FC         add     esp, -4
002D0923    53              push    ebx
002D0924    57              push    edi
002D0925    56              push    esi
002D0926    E8 00000000     call    002D092B
002D092B    5B              pop     ebx
002D092C    81EB FE103F00   sub     ebx, 3F10FE
002D0932    FF75 10         push    dword ptr [ebp+10]
002D0935    FF75 0C         push    dword ptr [ebp+C]
002D0938    FF75 08         push    dword ptr [ebp+8]
002D093B    FF93 2F103F00   call    [ebx+3F102F]                     ; //对于GetProAddress这个函数在这儿里面加密
002D0941    8945 FC         mov     [ebp-4], eax                     ; //搜索二进制  75 06  勾选整个块
002D0944    8B8B 61103F00   mov     ecx, [ebx+3F1061]
002D094A    3B4D 08         cmp     ecx, [ebp+8]
002D094D    75 63           jnz     short 002D09B2                   ; //magic jump


///////////////////////////////////////////////
此时可以
右键------查找----二进制字符串   输入  75 06   记得这个要勾选整个块

002D040A    FF93 29103F00   call    [ebx+3F1029]
002D0410    3B83 41103F00   cmp     eax, [ebx+3F1041]                ; //GetProcAddress在下面加密
002D0416    75 06           jnz     short 002D041E                   ; //这里改成 jmp
002D0418    8D83 55113F00   lea     eax, [ebx+3F1155]
002D041E    5E              pop     esi
002D041F    5F              pop     edi
002D0420    5B              pop     ebx
002D0421    C9              leave
002D0422    C2 0C00         retn    0C


///////////////////////////////////////////////////////
改完后两处后,F9运行

停在

7C809B04 >  8BFF            mov     edi, edi                         ; NOTEPAD-.01000000
7C809B06    55              push    ebp
7C809B07    8BEC            mov     ebp, esp
7C809B09    FF75 10         push    dword ptr [ebp+10]
7C809B0C    FF75 0C         push    dword ptr [ebp+C]
7C809B0F    FF75 08         push    dword ptr [ebp+8]
7C809B12    6A FF           push    -1
7C809B14    E8 09000000     call    VirtualFreeEx
7C809B19    5D              pop     ebp
7C809B1A    C2 0C00         retn    0C


出现基址了,最佳返回时机了
/////////////////////////////////////////////////////////
取消断点,alt+f9返回

002D15C3    8B46 0C         mov     eax, [esi+C]                     ; //取消断点,alt+f9返回到这儿,F8单步
002D15C6    03C7            add     eax, edi
002D15C8    5D              pop     ebp
002D15C9    5E              pop     esi
002D15CA    5F              pop     edi
002D15CB    5B              pop     ebx
002D15CC    C3              retn

/////////////////////////////////////////////////////

0101B068    8985 3F130010   mov     [ebp+1000133F], eax              ; NOTEPAD-.0100739D
0101B06E    8BF0            mov     esi, eax                         ; //上面出现OEP地址了
0101B070    8B4B 14         mov     ecx, [ebx+14]
0101B073    5A              pop     edx
0101B074    EB 0C           jmp     short 0101B082
0101B076    03CA            add     ecx, edx
0101B078    68 00800000     push    8000
0101B07D    6A 00           push    0
0101B07F    57              push    edi
0101B080    FF11            call    [ecx]
0101B082    8BC6            mov     eax, esi
0101B084    5A              pop     edx
0101B085    5E              pop     esi
0101B086    5F              pop     edi
0101B087    59              pop     ecx
0101B088    5B              pop     ebx
0101B089    5D              pop     ebp
0101B08A    FFE0            jmp     eax                              ; //跳向OEP

/////////////////////////////////////////////////////////
0100739D    6A 70           push    70                               ; //OEP
0100739F    68 98180001     push    01001898
010073A4    E8 BF010000     call    01007568
010073A9    33DB            xor     ebx, ebx
010073AB    53              push    ebx
010073AC    8B3D CC100001   mov     edi, [10010CC]                   ; kernel32.GetModuleHandleA
010073B2    FFD7            call    edi
010073B4    66:8138 4D5A    cmp     word ptr [eax], 5A4D
010073B9    75 1F           jnz     short 010073DA
010073BB    8B48 3C         mov     ecx, [eax+3C]
010073BE    03C8            add     ecx, eax
010073C0    8139 50450000   cmp     dword ptr [ecx], 4550
010073C6    75 12           jnz     short 010073DA

LORDPE脱壳,用ImpREC修复,修复是注意:选项 -----  抓取文件 -----  修复PE to OEP 这个地方勾选上

ImpREC修复选项设置.gif
全部有效,如果 75 06那个magic不改的话,有无效的话就填  GetProcAddress
ImpREC修复.gif

PS:似乎可以直接用插件脱壳,不用修复!
OK成功!
再PS:push   8000找OEP的那个方法也能用,其他几种下断方法也行



文章首发吾爱破解论坛,www.52pojie.cn欢迎转载,非作者本人,转载请注明!

试炼壳和脱壳后的文件.rar

73.25 KB, 下载次数: 12, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 1威望 +2 收起 理由
Hmily + 2 感谢发布原创作品,[吾爱破解]因你更精彩!

查看全部评分

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

 楼主| evilangel 发表于 2009-4-8 12:39
:)   
我这样的加壳应该没什么难度,希望高手指点下应该用这个程序给软件加壳,O(∩_∩)O谢谢
 楼主| evilangel 发表于 2009-4-8 13:03
本帖最后由 evilangel 于 2009-4-8 13:04 编辑

    还有一个只是加壳一点点改变的,没有发到论坛
到我空间看哈
http://hi.baidu.com/fei23niao/bl ... 83c9e6f11f3602.html
open5858 发表于 2009-4-9 01:54
本帖最后由 open5858 于 2009-4-9 01:58 编辑

方法不錯跟樓主學習了:)
331333 发表于 2009-4-10 22:04
我爱52破破从没走过
crackforchin 发表于 2009-4-17 08:00
看看手脱新版方法
shawnpeter 发表于 2010-3-7 10:51
thanks a lot
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-22 16:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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