StayOn Pro 4.0 Armadillo 1.xx - 2.xx 双进程脱壳
软件大小:485KB
软件语言:简体中文
软件类别:国外软件/共享版/网络辅助
运行环境:Win9x/Me/NT/2000/XP
加入时间:2003-6-10 16:35:55
下载次数:331
下载地址:
e64K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3E0K6i4K6u0W2L8$3&6D9K9h3&6W2k6r3!0%4L8W2)9J5k6h3&6W2N6q4)9J5c8Y4y4G2k6Y4c8Q4x3V1j5%4x3K6t1I4i4K6u0W2K9s2c8E0
软件介绍:保持你的Internet连接性,如果你要离开,但是又不想下网,用这个可以保持网络连接,避免你被强行断线。
【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
【调试环境】:WinXPSP2、flyODBG、PEiD、LordPE、ImportREC
00444974 StayOn_P.<>/$ 55 push ebp //进入OllyDbg后暂停在这里
00444975 |. 8BEC mov ebp,esp
00444977 |. 6A FF push -1
00444979 |. 68 00E64400 push StayOn_P.0044E600
0044497E |. 68 94444400 push StayOn_P.00444494 ; SE 句柄安装
00444983 |. 64:A1 00000000 mov eax,dword ptr fs:[0]
00444989 |. 50 push eax
0044498A |. 64:8925 00000000 mov dword ptr fs:[0],esp
***********************************
转换为单进程
下断Bp OpenMutexA F9运行
***********************************
7C80EC1B kernel32.O> 8BFF mov edi,edi //到这里
7C80EC1D 55 push ebp
7C80EC1E 8BEC mov ebp,esp
7C80EC20 51 push ecx
7C80EC21 51 push ecx
7C80EC22 837D 10 00 cmp dword ptr ss:[ebp+10],0
7C80EC26 56 push esi
7C80EC27 0F84 7A500300 je kernel32.7C843CA7
7C80EC2D 64:A1 18000000 mov eax,dword ptr fs:[18]
7C80EC33 FF75 10 push dword ptr ss:[ebp+10]
7C80EC36 8DB0 F80B0000 lea esi,dword ptr ds:[eax+BF8]
//看堆栈
0012F5B8 0043F85D /CALL 到 OpenMutexA 来自 StayOn_P.0043F857
0012F5BC 001F0001 |Access = 1F0001
0012F5C0 00000000 |Inheritable = FALSE
0012F5C4 0012FBF8 \MutexName = "DA0::DAA99D8E17" //这个可能不同
Ctrl+g 401000
60 9C 68 F8 FB 12 00 33 C0 50 50 E8 2F DB 40 7C 9D 61 E9 04 DC 40 7C
00401000 60 pushad
//新建立EIP 再F9
00401001 9C pushfd
00401002 68 F8FB1200 push 12FBF8 //<----
00401007 33C0 xor eax,eax
00401009 50 push eax
0040100A 50 push eax
0040100B E8 2FDB407C call kernel32.CreateMutexA
00401010 9D popfd
00401011 61 popad
00401012 - E9 04DC407C jmp kernel32.OpenMutexA
F9 运行 然后在Ctrl+g 401000撤消修改后 取消断点 bc OpenMutexA
下硬件断点he GetModuleHandleA
***********************************
每一次F9运行时候,所出现的堆栈情况!
***********************************
0012ED68 77F45BD8 /CALL 到 GetModuleHandleA 来自 77F45BD2
0012ED6C 77F4501C \pModule = "KERNEL32.DLL"
0012ED70 00000001
0012ED74 77F40000
0012ED78 00000000
0012ED7C 00004DF2
0012ED80 /0012ED94
0012ED84 |77F452DD 返回到 77F452DD 来自 77F45BB5
0012E55C 5D175394 /CALL 到 GetModuleHandleA 来自 5D17538E
0012E560 5D1753E0 \pModule = "kernel32.dll"
0012E564 5D1E2B38
0012E568 00000000
0012E56C 5D170000
0012E570 7C812972 返回到 kernel32.7C812972 来自ntdll.RtlCreateHeap
0012F570 0043EDD9 /CALL 到 GetModuleHandleA 来自 StayOn_P.0043EDD3
0012F574 00000000 \pModule = NULL
0012F578 0044B50C ASCII "RegisterServiceProcess"
0012E210 003D5DC8 /CALL 到 GetModuleHandleA 来自 003D5DC2
0012E214 003EA7F8 \pModule = "kernel32.dll"
0012E218 003EB09C ASCII "InvalidKey"
0012E210 003D5DC8 /CALL 到 GetModuleHandleA 来自 003D5DC2
0012E214 003EA7EC \pModule = "user32.dll"
0012E218 003EB09C ASCII "InvalidKey"
0012E24C 003DF6BD /CALL 到 GetModuleHandleA 来自 003DF6B7
0012E250 00AF1480 \pModule = "WSOCK32.dll"
0012E254 0047F738 StayOn_P.0047F738
0012E258 0047F738 StayOn_P.0047F738
0012E230 003D622B /CALL 到 GetModuleHandleA 来自 003D6225
0012E234 00000000 \pModule = NULL //到这里就可以返回了
0012E238 00000073
0012E23C 00AF1497
0012E240 00000000
//取消硬件断点返回(ALT+F9)
003D622B 8B4D 08 mov ecx,dword ptr ss:[ebp+8] ; WSOCK32.#1139
//来到这里
003D622E 3BC8 cmp ecx,eax
003D6230 75 07 jnz short 003D6239
003D6232 B8 98A33E00 mov eax,3EA398
003D6237 EB 30 jmp short 003D6269
003D6239 393D C8A73E00 cmp dword ptr ds:[3EA7C8],edi
003D623F B8 C8A73E00 mov eax,3EA7C8
003D6244 74 0C je short 003D6252 //Magic Jump,改jmp!
003D6246 3B48 08 cmp ecx,dword ptr ds:[eax+8]
003D6249 74 1B je short 003D6266
此时第一个断点的任务完成!
********************************************************************************************
再下硬件断点
he GetCurrentThreadId
0012F5B4 003E0AFB /CALL 到 GetCurrentThreadId 来自 003E0AF5
0012F5B8 0012FF2C
0012F5BC 00000000 // 到这里就可以取消硬件断点 返回了
003E0AFB A3 380D3F00 mov dword ptr ds:[3F0D38],eax //回到这里
003E0B00 E8 9754FFFF call 003D5F9C
003E0B05 6A 00 push 0 //-----第一个
003E0B07 E8 6973FFFF call 003D7E75
003E0B0C 59 pop ecx
003E0B0D E8 B0E3FFFF call 003DEEC2
003E0B12 8B06 mov eax,dword ptr ds:[esi]
003E0B14 85C0 test eax,eax
003E0B16 74 23 je short 003E0B3B
003E0B18 E8 A5E3FFFF call 003DEEC2
.
.
.
003E0B4A A1 2C0D3F00 mov eax,dword ptr ds:[3F0D2C]
003E0B4F FF76 08 push dword ptr ds:[esi+8]
003E0B52 8B48 28 mov ecx,dword ptr ds:[eax+28]
003E0B55 3348 20 xor ecx,dword ptr ds:[eax+20]
003E0B58 6A 00 push 0 //----第二个
003E0B5A 3348 1C xor ecx,dword ptr ds:[eax+1C]
003E0B5D 03F9 add edi,ecx
003E0B5F E8 5EE3FFFF call 003DEEC2
003E0B64 50 push eax
003E0B65 FFD7 call edi
//直接到这下“硬件执行”断点,F9,取消断点,F7进入
此时第二个断点的任务完成!
**********************************************************************
0040DED2 55 push ebp
//到这里了,OEP!LordPE-纠正映像-Dump!红色海洋
0040DED3 8BEC mov ebp,esp
0040DED5 6A FF push -1
0040DED7 68 38C34200 push StayOn_P.0042C338
0040DEDC 68 8C054100 push StayOn_P.0041058C
0040DEE1 64:A1 00000000 mov eax,dword ptr fs:[0]
0040DEE7 50 push eax
0040DEE8 64:8925 00000000 mov dword ptr fs:[0],esp
0040DEEF 83EC 58 sub esp,58
0040DEF2 53 push ebx
0040DEF3 56 push esi
0040DEF4 57 push edi
0040DEF5 8965 E8 mov dword ptr ss:[ebp-18],esp
0040DEF8 FF15 90824200 call dword ptr ds:[428290] ;
kernel32.GetVersion
OD,不要关!打开import--选择进程--OEP输入DED2--自动搜索IAT--获取输入表--显示无效函数--CUT!
抓取修复 --搞定
减肥:LordPE 编辑区段
擦除区断头 .text1 .data1 .pdata 然后重建PE
软件名称:PRTG v3.26
加壳方式:Armadillo 1.xx - 2.xx 一个标准壳
破解工具:Ollydbg,Hiew,ImportREC
软件介绍:PRTG v3.26是windows平台下的MRTG,它利用SNMP协议对网络流量,CPU负载,内存利用率等数据的进行监控,并且生成各种统计图形,Web页面和报表。MRTG使用起来复杂,操作都是命令行格式,需要perl支持,而PRTG提供图形化的向导,方便简单。
软件下载:
4f5K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4m8S2k6i4y4K6L8r3g2J5i4K6u0W2j5$3!0E0i4K6u0r3M7s2u0G2k6s2g2U0N6s2y4Q4x3V1k6H3M7Y4c8Y40067A5F9 prtg3.<Mod>/$ 55 push ebp //进入OllyDbg后暂停在这里
0067A5FA |. 8BEC mov ebp,esp
0067A5FC |. 6A FF push -1
0067A5FE |. 68 386A6900 push prtg3.00696A38
0067A603 |. 68 E09F6700 push prtg3.00679FE0 ; SE 句柄安装
0067A608 |. 64:A1 00000000 mov eax,dword ptr fs:[0]
0067A60E |. 50 push eax
0067A60F |. 64:8925 00000000 mov dword ptr fs:[0],esp
下硬件断点he GetModuleHandleA
7C80B529 kernel32.G> 8BFF mov edi,edi //来到这里
7C80B52B 55 push ebp
7C80B52C 8BEC mov ebp,esp
7C80B52E 837D 08 00 cmp dword ptr ss:[ebp+8],0
7C80B532 74 18 je short kernel32.7C80B54C
7C80B534 FF75 08 push dword ptr ss:[ebp+8]
7C80B537 E8 682D0000 call kernel32.7C80E2A4
7C80B53C 85C0 test eax,eax
7C80B53E 74 08 je short kernel32.7C80B548
7C80B540 FF70 04 push dword ptr ds:[eax+4]
7C80B543 E8 F4300000 call kernel32.GetModuleHandleW
7C80B548 5D pop ebp
7C80B549 C2 0400 retn 4
***********************************
每一次F9运行时候,所出现的堆栈情况!
***********************************
0012EC6C 5D175394 /CALL 到 GetModuleHandleA 来自 5D17538E
0012EC70 5D1753E0 \pModule = "kernel32.dll"
0012ED2C 77F45BD8 /CALL 到 GetModuleHandleA 来自 SHLWAPI.77F45BD2
0012ED30 77F4501C \pModule = "KERNEL32.DLL"
0012ED34 00000001
0012BB18 0112F55A /CALL 到 GetModuleHandleA 来自 0112F554
0012BB1C 01140B58 \pModule = "kernel32.dll"
0012BB20 01141BB4 ASCII "VirtualAlloc"
0012BB18 0112F577 /CALL 到 GetModuleHandleA 来自 0112F571
0012BB1C 01140B58 \pModule = "kernel32.dll"
0012BB20 01141BA8 ASCII "VirtualFree"
0012B890 01119660 /CALL 到 GetModuleHandleA 来自 0111965A
0012B894 0012B9CC \pModule = "kernel32.dll"
0012B898 00000000 //到这里就可以返回了
//hd GetModuleHandleA 取消硬件断点返回(ALT+F9)
01119660 8B0D C04C1401 mov ecx,dword ptr ds:[1144CC0]
01119666 89040E mov dword ptr ds:[esi+ecx],eax
01119669 A1 C04C1401 mov eax,dword ptr ds:[1144CC0]
0111966E 393C06 cmp dword ptr ds:[esi+eax],edi
01119671 75 16 jnz short 01119689
01119673 8D85 B4FEFFFF lea eax,dword ptr ss:[ebp-14C]
01119679 50 push eax
0111967A FF15 D0B01301 call dword ptr ds[113B0D0] ; kernel32.LoadLibraryA
01119680 8B0D C04C1401 mov ecx,dword ptr ds:[1144CC0]
01119686 89040E mov dword ptr ds:[esi+ecx],eax
01119689 A1 C04C1401 mov eax,dword ptr ds:[1144CC0]
0111968E 393C06 cmp dword ptr ds:[esi+eax],edi
01119691 0F84 AD000000 je 01119744 //Magic Jump,改jmp!
01119697 33C9 xor ecx,ecx
此时第一个断点的任务完成!
********************************************************************************************
再下硬件断点
he GetCurrentThreadId F9运行
7C809737 kernel32.G> 64:A1 18000000 mov eax,dword ptr fs:[18] //来到这里
7C80973D 8B40 24 mov eax,dword ptr ds:[eax+24]
7C809740 C3 retn
7C809741 90 nop
***********************************
每一次F9运行时候,所出现的堆栈情况!
***********************************
0012B150 73391E36 /CALL 到 GetCurrentThreadId 来自 73391E30
0012B154 00000001
0012B158 73391C1A 返回到 73391C1A 来自 73391DE2
0012B15C 73391B60 返回到 73391B60 来自 73391B8C
0012AD64 77BB1EEB /CALL 到 GetCurrentThreadId 来自 MSACM32.77BB1EE5
0012AD68 C0000000
0012AD6C 00000001
0012AD70 77BB19F0 UNICODE "Priority%u"
0012ACE8 77BB1EEB /CALL 到 GetCurrentThreadId 来自 MSACM32.77BB1EE5
0012ACEC 00000000
0012ACF0 0014FFE8
0012B394 73AD268E /CALL 到 GetCurrentThreadId 来自 avifil32.73AD2688
0012B398 73AD4004 avifil32.73AD4004
0012B39C FFFFFFFF
0012B3A0 77BFC3CE 返回到 msvcrt.77BFC3CE 来自 msvcrt.77C0745B
0012F594 011375DE /CALL 到 GetCurrentThreadId 来自 011375D8
0012F598 0012FF2C
0012F59C 00000000 //看见到这里就可以 取消断点返回了
//hd GetCurrentThreadId 取消硬件断点返回(ALT+F9)
此时第二个断点的任务完成!
********************************************************************************************
011375DE A3 A0911401 mov dword ptr ds:[11491A0],eax //返回到这里
011375E3 E8 6823FEFF call 01119950
011375E8 6A 00 push 0 //-----第一个
011375EA E8 AF7CFEFF call 0111F29E
011375EF 6A 00 push 0
011375F1 C705 78101401 201C>mov dword ptr ds:[1141078],1141C20 ; ASCII "RC"
011375FB E8 C61DFEFF call 011193C6
01137600 59 pop ecx
01137601 59 pop ecx
01137602 E8 7205FFFF call 01127B79
.
.
.
.
01137650 FFD0 call eax
01137652 EB 25 jmp short 01137679
01137654 83F9 01 cmp ecx,1
01137657 75 22 jnz short 0113767B
01137659 FF76 04 push dword ptr ds:[esi+4]
0113765C FF76 08 push dword ptr ds:[esi+8]
0113765F 6A 00 push 0 //-----远处第二个
01137661 E8 1305FFFF call 01127B79
01137666 50 push eax
01137667 A1 88901401 mov eax,dword ptr ds:[1149088]
0113766C 8B48 44 mov ecx,dword ptr ds:[eax+44]
0113766F 3348 20 xor ecx,dword ptr ds:[eax+20]
01137672 3348 10 xor ecx,dword ptr ds:[eax+10]
01137675 2BF9 sub edi,ecx
01137677 FFD7 call edi //设置硬件执行断点
//设置硬件执行断点后F9运行 再取消硬件断点 F7进入
01137679 8BD8 mov ebx,eax
0113767B 5F pop edi
0061A7EC 55 push ebp
//到这里了,OEP!LordPE-纠正映像-Dump!
0061A7ED 8BEC mov ebp,esp
0061A7EF B9 08000000 mov ecx,8
0061A7F4 6A 00 push 0
0061A7F6 6A 00 push 0
0061A7F8 49 dec ecx
0061A7F9 ^ 75 F9 jnz short prtg3.0061A7F4
0061A7FB 51 push ecx
0061A7FC 53 push ebx
0061A7FD B8 CC9F6100 mov eax,prtg3.00619FCC
0061A802 E8 11CDDEFF call prtg3.00407518
0061A807 33C0 xor eax,eax
0061A809 55 push ebp
OD,不要关!打开import--选择进程--OEP输入21A7EC--自动搜索IAT--获取输入表--显示无效函数--CUT!
抓取修复 --搞定
减肥:LordPE 编辑区段
擦除区断头 .tls .adata .reloc1 .pdata 然后重建PE
脱壳后记:
看了很多脱文一直在郁闷中 希望这里详细的步骤可以给希望学习的朋友一个小小的帮助!
特别感谢:wynney 的《Armadillo几个版本脱壳总结--5个软件实例!超详细!》
[培训]科锐逆向工程师培训第53期2025年7月8日开班!