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 掉无效。
运行正常。方法简单实用吧!!!
-----------------------------------------------------------------------
【破解总结】用心即可!
------------------------------------------------------------------------
【版权声明】学习交流 沙发~顶你 太厉害了 学习了/:good 不错不错 有图 也写的比较详细 简单易懂 非常适合新手观看!/:good /:good
还想问下 LZ是用的什么OD哦? 我试了下 貌似和你的不一样 下BP VirtualProtect断点后 按了N下SHIFT+F9 都没到你图里面显示的那个地方!~~
[ 本帖最后由 flyskey 于 2008-4-29 03:03 编辑 ] 如果能将每个练习都做个教程就 好了 收藏了,不错不错 学习下脱壳 教程超详细,超清楚.谢谢 很强大
谢谢。。。
页:
[1]