飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2469|回复: 8

Armadillo 系列练习11 --- Armadillo 5.0(屏蔽调试器)脱壳

[复制链接]
  • TA的每日心情
    开心
    2015-11-6 10:18
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2008-4-28 19:56:42 | 显示全部楼层 |阅读模式
    【破文标题】Armadillo 5.0(屏蔽调试器)脱壳
    【破文作者】浓咖啡
    【作者邮箱】密
    【作者主页】无
    破解工具】OD、LoadPE、ImportREC、Armadillo Find Protected V1.8
    【破解平台】XP
    【软件名称】课件
    【软件大小】1088 KB
    【原版下载】https://www.chinapyg.com/viewthr ... &extra=page%3D1   25楼
    【保护方式】穿山甲 5.0
    【软件简介】练习
    【破解声明】学习!
    ------------------------------------------------------------------------
    【破解过程】一、侦测:用 Armadillo Find Protected V1.8得知保护方式及加壳版本
    !- 目标为Armadillo保护
    !- 保护系统级别为 (专业版)      
    !- <所用到的保护模式有>
    屏蔽调试器   
    !- <备份密钥设置>      
    固定的备份密钥   
    !- <目标程序压缩设置>   
    较好 / 较慢 的压缩方式   
    !- <其它保护设置>
    !- 版本号: 5.00 18June2007
    注意:如果用 Armadillo Find Protected V1.4看, 版本为 4.48,是不准确的!
    二、载入到OD
    004C6DC2 >    E8 E3400000   call    004CAEAA                         ;  5.0 入口
    004C6DC7   .^ E9 16FEFFFF   jmp     004C6BE2
    004C6DCC   $  6A 0C         push    0C
    004C6DCE   .  68 B0504F00   push    004F50B0
    004C6DD3   .  E8 44150000   call    004C831C
    004C6DD8   .  8B4D 08       mov     ecx, dword ptr [ebp+8]
    004C6DDB   .  33FF          xor     edi, edi
    004C6DDD   .  3BCF          cmp     ecx, edi
    004C6DDF   .  76 2E         jbe     short 004C6E0F
    004C6DE1   .  6A E0         push    -20
    004C6DE3   .  58            pop     eax
    004C6DE4   .  33D2          xor     edx, edx
    004C6DE6   .  F7F1          div     ecx
    004C6DE8   .  3B45 0C       cmp     eax, dword ptr [ebp+C]
    004C6DEB   .  1BC0          sbb     eax, eax
    004C6DED   .  40            inc     eax
    004C6DEE   .  75 1F         jnz     short 004C6E0F
    004C6DF0   .  E8 36130000   call    004C812B
    004C6DF5   .  C700 0C000000 mov     dword ptr [eax], 0C

    -------------------
    运行转单进程脚本;
    -------------------
    7C80EA1B >  8BFF            mov     edi, edi                         ; 脚本结束,停在这里!
    7C80EA1D    55              push    ebp
    7C80EA1E    8BEC            mov     ebp, esp
    7C80EA20    51              push    ecx
    7C80EA21    51              push    ecx
    7C80EA22    837D 10 00      cmp     dword ptr [ebp+10], 0
    7C80EA26    56              push    esi
    7C80EA27    0F84 66530300   je      7C843D93
    7C80EA2D    64:A1 18000000  mov     eax, dword ptr fs:[18]
    7C80EA33    FF75 10         push    dword ptr [ebp+10]
    7C80EA36    8DB0 F80B0000   lea     esi, dword ptr [eax+BF8]
    7C80EA3C    8D45 F8         lea     eax, dword ptr [ebp-8]
    7C80EA3F    50              push    eax
    7C80EA40    FF15 8C10807C   call    dword ptr [<&ntdll.RtlInitAnsiSt>; ntdll.RtlInitAnsiString
    7C80EA46    6A 00           push    0

    --------------
    躲避魔法跳,下断点 BP VirtualProtect  Shift +F9运行。
    --------------
    7C801AD0 >  8BFF            mov     edi, edi                         ; 停在这里
    7C801AD2    55              push    ebp
    7C801AD3    8BEC            mov     ebp, esp
    7C801AD5    FF75 14         push    dword ptr [ebp+14]
    7C801AD8    FF75 10         push    dword ptr [ebp+10]
    7C801ADB    FF75 0C         push    dword ptr [ebp+C]
    7C801ADE    FF75 08         push    dword ptr [ebp+8]
    7C801AE1    6A FF           push    -1
    7C801AE3    E8 75FFFFFF     call    VirtualProtectEx
    7C801AE8    5D              pop     ebp
    7C801AE9    C2 1000         retn    10
    ----------------
    看堆栈:找返回时机!
    ----------------
    第一次,堆栈
    0012F648   004B28F7  /CALL 到 VirtualProtect 来自 课_件.004B28F1
    0012F64C   00C51000  |Address = 00C51000
    0012F650   0006C82C  |Size = 6C82C (444460.)
    0012F654   00000040  |NewProtect = PAGE_EXECUTE_READWRITE
    0012F658   0012F67C  \pOldProtect = 0012F67C
    ... ...
    N次后...(我这里是 5次,你那里不知道~~哈哈)
    00129470   00C99946  /CALL 到 VirtualProtect 来自 00C99940
    00129474   00401000  |Address = 课_件.00401000  **************返回重要标志
    00129478   0007E000  |Size = 7E000 (516096.)
    0012947C   00000004  |NewProtect = PAGE_READWRITE
    00129480   0012C164  \pOldProtect = 0012C164
    00129484   C9610BD1
    00129488   004EF378  课_件.004EF378
    ----------
    取消断点,Alt + F9返回
    ----------
    00C99946    8B8D D0D5FFFF   mov     ecx, dword ptr [ebp-2A30]        ; 返回到这里
    00C9994C    51              push    ecx
    00C9994D    8B95 CCD5FFFF   mov     edx, dword ptr [ebp-2A34]
    00C99953    52              push    edx
    00C99954    8B85 74D8FFFF   mov     eax, dword ptr [ebp-278C]
    00C9995A    0385 C8D5FFFF   add     eax, dword ptr [ebp-2A38]
    00C99960    50              push    eax
    00C99961    E8 2ADC0000     call    00CA7590
    00C99966    83C4 0C         add     esp, 0C
    00C99969    8D8D DCD5FFFF   lea     ecx, dword ptr [ebp-2A24]
    00C9996F    51              push    ecx
    00C99970    8B95 DCD5FFFF   mov     edx, dword ptr [ebp-2A24]
    00C99976    52              push    edx
    00C99977    8B85 D0D5FFFF   mov     eax, dword ptr [ebp-2A30]
    00C9997D    50              push    eax
    00C9997E    8B8D 74D8FFFF   mov     ecx, dword ptr [ebp-278C]
    00C99984    038D C8D5FFFF   add     ecx, dword ptr [ebp-2A38]
    00C9998A    51              push    ecx
    00C9998B    FF15 24E1CB00   call    dword ptr [CBE124]               ; kernel32.VirtualProtect
    00C99991    8B95 CCD5FFFF   mov     edx, dword ptr [ebp-2A34]

    --------------
    Ctrl +F  PUSH 100
    --------------
    00C526D0    55              push    ebp                              ; 修改为 RET
    00C526D1    8BEC            mov     ebp, esp
    00C526D3    83EC 2C         sub     esp, 2C
    00C526D6    833D 00A6CC00 0>cmp     dword ptr [CCA600], 0
    00C526DD    75 59           jnz     short 00C52738
    00C526DF    C745 EC DDB73BD>mov     dword ptr [ebp-14], D33BB7DD
    00C526E6    68 00010000     push    100
    00C526EB    E8 264C0500     call    00CA7316
    00C526F0    83C4 04         add     esp, 4
    00C526F3    8945 E4         mov     dword ptr [ebp-1C], eax
    ----------------
    修改后为:
    ----------------
    00C526D0    C3              retn                                     ; 修改为 RET
    00C526D1    8BEC            mov     ebp, esp
    00C526D3    83EC 2C         sub     esp, 2C
    00C526D6    833D 00A6CC00 0>cmp     dword ptr [CCA600], 0
    00C526DD    75 59           jnz     short 00C52738
    00C526DF    C745 EC DDB73BD>mov     dword ptr [ebp-14], D33BB7DD
    00C526E6    68 00010000     push    100
    00C526EB    E8 264C0500     call    00CA7316
    -------------
    找OEP ,下断点 BP CreateThread ;Shift +F9运行。
    --------------
    7C810637 >  8BFF            mov     edi, edi                         ; 断在在这里
    7C810639    55              push    ebp
    7C81063A    8BEC            mov     ebp, esp
    7C81063C    FF75 1C         push    dword ptr [ebp+1C]
    7C81063F    FF75 18         push    dword ptr [ebp+18]
    7C810642    FF75 14         push    dword ptr [ebp+14]
    7C810645    FF75 10         push    dword ptr [ebp+10]
    7C810648    FF75 0C         push    dword ptr [ebp+C]
    7C81064B    FF75 08         push    dword ptr [ebp+8]
    7C81064E    6A FF           push    -1
    7C810650    E8 D7FDFFFF     call    CreateRemoteThread
    7C810655    5D              pop     ebp
    7C810656    C2 1800         retn    18

    -----------------
    取消断点,Alt + F9返回
    -----------------
    00C8364C    50              push    eax                              ; 返回到这里
    00C8364D    FF15 84E2CB00   call    dword ptr [CBE284]               ; kernel32.CloseHandle
    00C83653    5E              pop     esi
    00C83654    5B              pop     ebx
    00C83655    8BE5            mov     esp, ebp
    00C83657    5D              pop     ebp
    00C83658    C3              retn

    ---------
    F8 一直到OEP 的提示处
    --------
    ...省略部分代码
    00C9F2B6    833A 01         cmp     dword ptr [edx], 1
    00C9F2B9    75 3E           jnz     short 00C9F2F9
    00C9F2BB    A1 04BBCC00     mov     eax, dword ptr [CCBB04]
    00C9F2C0    8B0D 04BBCC00   mov     ecx, dword ptr [CCBB04]          ; 课_件.004EF378
    00C9F2C6    8B50 68         mov     edx, dword ptr [eax+68]
    00C9F2C9    3351 34         xor     edx, dword ptr [ecx+34]
    00C9F2CC    A1 04BBCC00     mov     eax, dword ptr [CCBB04]
    00C9F2D1    3350 60         xor     edx, dword ptr [eax+60]
    00C9F2D4    8955 DC         mov     dword ptr [ebp-24], edx
    00C9F2D7    8B4D 08         mov     ecx, dword ptr [ebp+8]
    00C9F2DA    8B51 04         mov     edx, dword ptr [ecx+4]
    00C9F2DD    52              push    edx
    00C9F2DE    8B45 08         mov     eax, dword ptr [ebp+8]
    00C9F2E1    8B48 08         mov     ecx, dword ptr [eax+8]
    00C9F2E4    51              push    ecx
    00C9F2E5    6A 00           push    0
    00C9F2E7    8B55 08         mov     edx, dword ptr [ebp+8]
    00C9F2EA    8B42 0C         mov     eax, dword ptr [edx+C]
    00C9F2ED    50              push    eax
    00C9F2EE    8B4D F4         mov     ecx, dword ptr [ebp-C]
    00C9F2F1    2B4D DC         sub     ecx, dword ptr [ebp-24]
    00C9F2F4    FFD1            call    ecx                              ; 课_件.0047E990 (F7进去到OEP)
    00C9F2F6    8945 FC         mov     dword ptr [ebp-4], eax
    00C9F2F9    8B45 FC         mov     eax, dword ptr [ebp-4]
    00C9F2FC    5E              pop     esi
    00C9F2FD    8BE5            mov     esp, ebp
    00C9F2FF    5D              pop     ebp
    00C9F300    C3              retn

    ---------
    在00C9F2F4处 F7跟进到OEP
    ---------
    0047E990    55              push    ebp                              ; OEP
    0047E991    8BEC            mov     ebp, esp
    0047E993    83C4 F0         add     esp, -10
    0047E996    B8 30E74700     mov     eax, 0047E730
    0047E99B    E8 A478F8FF     call    00406244
    0047E9A0    A1 BC024800     mov     eax, dword ptr [4802BC]
    0047E9A5    8B00            mov     eax, dword ptr [eax]
    0047E9A7    E8 A849FDFF     call    00453354
    0047E9AC    8B0D B0034800   mov     ecx, dword ptr [4803B0]          ; 课_件.00481CF4
    0047E9B2    A1 BC024800     mov     eax, dword ptr [4802BC]
    0047E9B7    8B00            mov     eax, dword ptr [eax]
    0047E9B9    8B15 D4E44700   mov     edx, dword ptr [47E4D4]          ; 课_件.0047E520
    0047E9BF    E8 A849FDFF     call    0045336C
    0047E9C4    A1 BC024800     mov     eax, dword ptr [4802BC]
    0047E9C9    8B00            mov     eax, dword ptr [eax]
    0047E9CB    E8 1C4AFDFF     call    004533EC
    0047E9D0    E8 5F57F8FF     call    00404134
    0047E9D5    8D40 00         lea     eax, dword ptr [eax]
    0047E9D8    0000            add     byte ptr [eax], al

    -----------------
    LordPE 脱壳;ImportREC修复,CUT 掉无效。



    运行正常。方法简单实用吧!!!
    -----------------------------------------------------------------------
    【破解总结】用心即可!
    ------------------------------------------------------------------------
    【版权声明】学习交流

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?加入我们

    x
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-4-28 19:58:49 | 显示全部楼层
    沙发~顶你
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-4-28 19:59:56 | 显示全部楼层
    太厉害了 学习了/:good
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-4-29 02:42:10 | 显示全部楼层
    不错不错 有图 也写的比较详细 简单易懂 非常适合新手观看!/:good /:good

    还想问下 LZ是用的什么OD哦? 我试了下 貌似和你的不一样 下BP VirtualProtect断点后 按了N下SHIFT+F9 都没到你图里面显示的那个地方!~~

    [ 本帖最后由 flyskey 于 2008-4-29 03:03 编辑 ]
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-4-29 13:03:54 | 显示全部楼层
    如果能将每个练习都做个教程就 好了
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-4-29 13:17:12 | 显示全部楼层
    收藏了,不错不错
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    昨天 20:18
  • 签到天数: 30 天

    [LV.5]常住居民I

    发表于 2008-5-1 05:01:06 | 显示全部楼层
    学习下脱壳
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-3-28 19:22
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2008-5-3 18:38:57 | 显示全部楼层
    教程超详细,超清楚.谢谢
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-5-7 14:37:46 | 显示全部楼层
    很强大
    谢谢。。。
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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