xuhw 发表于 2008-4-28 19:56:42

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

【破文标题】Armadillo 5.0(屏蔽调试器)脱壳
【破文作者】浓咖啡
【作者邮箱】密
【作者主页】无
【破解工具】OD、LoadPE、ImportREC、Armadillo Find Protected V1.8
【破解平台】XP
【软件名称】课件
【软件大小】1088 KB
【原版下载】https://www.chinapyg.com/viewthread.php?tid=29496&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
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
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 , 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 , 0
7C80EA26    56            push    esi
7C80EA27    0F84 66530300   je      7C843D93
7C80EA2D    64:A1 18000000mov   eax, dword ptr fs:
7C80EA33    FF75 10         push    dword ptr
7C80EA36    8DB0 F80B0000   lea   esi, dword ptr
7C80EA3C    8D45 F8         lea   eax, dword ptr
7C80EA3F    50            push    eax
7C80EA40    FF15 8C10807C   call    dword ptr [<&ntdll.RtlInitAnsiSt>; ntdll.RtlInitAnsiString
7C80EA46    6A 00         push    0

--------------
躲避魔法跳,下断点 BP VirtualProtectShift +F9运行。
--------------
7C801AD0 >8BFF            mov   edi, edi                         ; 停在这里
7C801AD2    55            push    ebp
7C801AD3    8BEC            mov   ebp, esp
7C801AD5    FF75 14         push    dword ptr
7C801AD8    FF75 10         push    dword ptr
7C801ADB    FF75 0C         push    dword ptr
7C801ADE    FF75 08         push    dword ptr
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       ; 返回到这里
00C9994C    51            push    ecx
00C9994D    8B95 CCD5FFFF   mov   edx, dword ptr
00C99953    52            push    edx
00C99954    8B85 74D8FFFF   mov   eax, dword ptr
00C9995A    0385 C8D5FFFF   add   eax, dword ptr
00C99960    50            push    eax
00C99961    E8 2ADC0000   call    00CA7590
00C99966    83C4 0C         add   esp, 0C
00C99969    8D8D DCD5FFFF   lea   ecx, dword ptr
00C9996F    51            push    ecx
00C99970    8B95 DCD5FFFF   mov   edx, dword ptr
00C99976    52            push    edx
00C99977    8B85 D0D5FFFF   mov   eax, dword ptr
00C9997D    50            push    eax
00C9997E    8B8D 74D8FFFF   mov   ecx, dword ptr
00C99984    038D C8D5FFFF   add   ecx, dword ptr
00C9998A    51            push    ecx
00C9998B    FF15 24E1CB00   call    dword ptr                ; kernel32.VirtualProtect
00C99991    8B95 CCD5FFFF   mov   edx, dword ptr

--------------
Ctrl +FPUSH 100
--------------
00C526D0    55            push    ebp                              ; 修改为 RET
00C526D1    8BEC            mov   ebp, esp
00C526D3    83EC 2C         sub   esp, 2C
00C526D6    833D 00A6CC00 0>cmp   dword ptr , 0
00C526DD    75 59         jnz   short 00C52738
00C526DF    C745 EC DDB73BD>mov   dword ptr , D33BB7DD
00C526E6    68 00010000   push    100
00C526EB    E8 264C0500   call    00CA7316
00C526F0    83C4 04         add   esp, 4
00C526F3    8945 E4         mov   dword ptr , eax
----------------
修改后为:
----------------
00C526D0    C3            retn                                     ; 修改为 RET
00C526D1    8BEC            mov   ebp, esp
00C526D3    83EC 2C         sub   esp, 2C
00C526D6    833D 00A6CC00 0>cmp   dword ptr , 0
00C526DD    75 59         jnz   short 00C52738
00C526DF    C745 EC DDB73BD>mov   dword ptr , 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
7C81063F    FF75 18         push    dword ptr
7C810642    FF75 14         push    dword ptr
7C810645    FF75 10         push    dword ptr
7C810648    FF75 0C         push    dword ptr
7C81064B    FF75 08         push    dword ptr
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                ; 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 , 1
00C9F2B9    75 3E         jnz   short 00C9F2F9
00C9F2BB    A1 04BBCC00   mov   eax, dword ptr
00C9F2C0    8B0D 04BBCC00   mov   ecx, dword ptr           ; 课_件.004EF378
00C9F2C6    8B50 68         mov   edx, dword ptr
00C9F2C9    3351 34         xor   edx, dword ptr
00C9F2CC    A1 04BBCC00   mov   eax, dword ptr
00C9F2D1    3350 60         xor   edx, dword ptr
00C9F2D4    8955 DC         mov   dword ptr , edx
00C9F2D7    8B4D 08         mov   ecx, dword ptr
00C9F2DA    8B51 04         mov   edx, dword ptr
00C9F2DD    52            push    edx
00C9F2DE    8B45 08         mov   eax, dword ptr
00C9F2E1    8B48 08         mov   ecx, dword ptr
00C9F2E4    51            push    ecx
00C9F2E5    6A 00         push    0
00C9F2E7    8B55 08         mov   edx, dword ptr
00C9F2EA    8B42 0C         mov   eax, dword ptr
00C9F2ED    50            push    eax
00C9F2EE    8B4D F4         mov   ecx, dword ptr
00C9F2F1    2B4D DC         sub   ecx, dword ptr
00C9F2F4    FFD1            call    ecx                              ; 课_件.0047E990 (F7进去到OEP)
00C9F2F6    8945 FC         mov   dword ptr , eax
00C9F2F9    8B45 FC         mov   eax, dword ptr
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
0047E9A5    8B00            mov   eax, dword ptr
0047E9A7    E8 A849FDFF   call    00453354
0047E9AC    8B0D B0034800   mov   ecx, dword ptr           ; 课_件.00481CF4
0047E9B2    A1 BC024800   mov   eax, dword ptr
0047E9B7    8B00            mov   eax, dword ptr
0047E9B9    8B15 D4E44700   mov   edx, dword ptr           ; 课_件.0047E520
0047E9BF    E8 A849FDFF   call    0045336C
0047E9C4    A1 BC024800   mov   eax, dword ptr
0047E9C9    8B00            mov   eax, dword ptr
0047E9CB    E8 1C4AFDFF   call    004533EC
0047E9D0    E8 5F57F8FF   call    00404134
0047E9D5    8D40 00         lea   eax, dword ptr
0047E9D8    0000            add   byte ptr , al

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



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

swlilike 发表于 2008-4-28 19:58:49

沙发~顶你

LM苍蝇 发表于 2008-4-28 19:59:56

太厉害了 学习了/:good

flyskey 发表于 2008-4-29 02:42:10

不错不错 有图 也写的比较详细 简单易懂 非常适合新手观看!/:good /:good

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

[ 本帖最后由 flyskey 于 2008-4-29 03:03 编辑 ]

ssss168 发表于 2008-4-29 13:03:54

如果能将每个练习都做个教程就 好了

孤漂江湖狼 发表于 2008-4-29 13:17:12

收藏了,不错不错

温柔 发表于 2008-5-1 05:01:06

学习下脱壳

ylpx 发表于 2008-5-3 18:38:57

教程超详细,超清楚.谢谢

ggg520 发表于 2008-5-7 14:37:46

很强大
谢谢。。。
页: [1]
查看完整版本: Armadillo 系列练习11 --- Armadillo 5.0(屏蔽调试器)脱壳