目标为Armadillo保护
!- 保护系统级别为 (专业版)
!-<所使用的保护模式>
屏蔽调试器
双进程模式
防止内存补丁模式
!- <备份密钥设置>
固定的备份密钥
!- <目标程序压缩设置>
最好 / 最慢的压缩方式
!<其它保护设置>
使用 Digital River 版本密钥
版本号 4.40 01-11-2005
运行转单进程脚本//转单进程脚本
msg "请忽略所有异常,并添加忽略C000001E异常,然后运行本脚本!"
gpa "OpenMutexA","kernel32.dll"
bp $RESULT
esto
exec
pushad
pushfd
push edx
xor eax,eax
push eax
push eax
call kernel32.CreateMutexA
popfd
popad
jmp kernel32.OpenMutexA
ende
bc eip
msg "现已转换成单进程!"
ret
复制代码停在7C80EABB > 8BFF mov edi, edi
7C80EABD 55 push ebp
7C80EABE 8BEC mov ebp, esp
7C80EAC0 51 push ecx
7C80EAC1 51 push ecx
7C80EAC2 837D 10 00 cmp dword ptr [ebp+0x10], 0x0
7C80EAC6 56 push esi
7C80EAC7 0F84 7F550300 je 7C84404C
7C80EACD 64:A1 18000000 mov eax, dword ptr fs:[0x18]
7C80EAD3 FF75 10 push dword ptr [ebp+0x10]
7C80EAD6 8DB0 F80B0000 lea esi, dword ptr [eax+0xBF8]
复制代码下断点
bp GetModuleHandleA+5
然后Shift+F9 第一次,堆栈结果0007F710 /0007F778
0007F714 |01031EF3 RETURN to NOTEPAD.01031EF3 from kernel32.GetModuleHandleA
0007F718 |00000000
0007F71C |0007F728
0007F720 |00A520E6
0007F724 |010B255A NOTEPAD.010B255A
0007F728 |00000000
0007F72C |0108B000 ASCII "PDATA000"
复制代码然后Shift+F9 第二次,堆栈结果000794FC /0007EC44
00079500 |00A66DF3 RETURN to 00A66DF3 from kernel32.GetModuleHandleA
00079504 |00A7BC1C ASCII "kernel32.dll"
00079508 |00A7CEC4 ASCII "VirtualAlloc"
0007950C |00A7FA98
00079510 |7C9210E0 ntdll.RtlLeaveCriticalSection
复制代码然后Shift+F9 第三次,堆栈结果000794FC /0007EC44
00079500 |00A66E10 RETURN to 00A66E10 from kernel32.GetModuleHandleA
00079504 |00A7BC1C ASCII "kernel32.dll"
00079508 |00A7CEB8 ASCII "VirtualFree"
0007950C |00A7FA98
00079510 |7C9210E0 ntdll.RtlLeaveCriticalSection
复制代码然后Shift+F9 第四次,堆栈结果0007919C /000791E8
000791A0 |00A71D2B RETURN to 00A71D2B from kernel32.GetModuleHandleA
000791A4 |00000000
000791A8 |0007946C
000791AC |00000000
复制代码按照大牛们的经验这里应该是返回的时机,取消断点,Alt+F9,来到如下代码处00A71D00 6A 28 push 0x28
00A71D02 8D45 C8 lea eax, dword ptr [ebp-0x38]
00A71D05 53 push ebx
00A71D06 50 push eax
00A71D07 E8 94320000 call 00A74FA0 ; jmp to msvcrt.memset
00A71D0C 83C4 0C add esp, 0xC
00A71D0F C745 C8 0B00000>mov dword ptr [ebp-0x38], 0xB
00A71D16 C745 CC 641DA70>mov dword ptr [ebp-0x34], 0xA71D64
00A71D1D C745 D4 2600000>mov dword ptr [ebp-0x2C], 0x26
00A71D24 53 push ebx
00A71D25 FF15 B860A700 call dword ptr [0xA760B8] ; kernel32.GetModuleHandleA
00A71D2B 68 007F0000 push 0x7F00
00A71D30 53 push ebx
00A71D31 8945 D8 mov dword ptr [ebp-0x28], eax
00A71D34 FF15 A464A700 call dword ptr [0xA764A4] ; USER32.LoadCursorA
00A71D3A 8945 E0 mov dword ptr [ebp-0x20], eax
00A71D3D 8D45 C8 lea eax, dword ptr [ebp-0x38]
00A71D40 50 push eax
00A71D41 C745 E4 1000000>mov dword ptr [ebp-0x1C], 0x10
00A71D48 8975 EC mov dword ptr [ebp-0x14], esi
00A71D4B E8 BB160000 call 00A7340B
00A71D50 33C9 xor ecx, ecx
00A71D52 66:3BC3 cmp ax, bx
00A71D55 0F95C1 setne cl
00A71D58 66:A3 68A4A800 mov word ptr [0xA8A468], ax
00A71D5E 8AC1 mov al, cl
00A71D60 5E pop esi
00A71D61 5B pop ebx
00A71D62 C9 leave
00A71D63 C3 retn
复制代码上面这段实在是看不出哪里是传说的魔法跳(Magic JUMP),接下来的工作无法继续了。
大牛门再给点提示?
程序地址:
http://good.gd/932610.htm
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课