TA的每日心情 | 开心 2015-11-6 10:18 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
【破文标题】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
|