壳属性目标为Armadillo保护
!- 保护系统级别为 (专业版)
!-<所使用的保护模式>
屏蔽调试器
双进程模式
防止内存补丁模式
!- <备份密钥设置>
固定的备份密钥
!- <目标程序压缩设置>
较好 / 较慢 的压缩方式
!<其它保护设置>
版本号 4.40 01-11-2005
用OD载入运行双进程转单进程脚本。然后下断he GetDlgItem SHIFT+F9二次停在这里:
------------------------------------------------
-----------------
77D2439B 8BC6 MOV EAX,ESI 停在这里
77D2439D 5E POP ESI
77D2439E 5D POP EBP
77D2439F C2 0800 RETN 8
77D243A2 53 PUSH EBX
77D243A3 E8 C4FAFFFF CALL USER32.77D23E6C
77D243A8 8BF0 MOV ESI,EAX
77D243AA 3BF3 CMP ESI,EBX
77D243AC 0F85 A5130200 JNZ USER32.77D45757
77D243B2 837D 10 00 CMP DWORD PTR SS:[EBP+10],0
77D243B6 56 PUSH ESI
77D243B7 74 1C JE SHORT USER32.77D243D5
77D243B9 E8 39010000 CALL USER32.77D244F7
77D243BE ^ E9 29F8FFFF JMP USER32.77D23BEC
77D243C3 50 PUSH EAX
77D243C4 FF15 9C11D177 CALL DWORD PTR DS:[<&GDI32.DeleteObject>>; GDI32.DeleteObject
77D243CA 8B06 MOV EAX,DWORD PTR DS:[ESI]
77D243CC 8360 20 00 AND DWORD PTR DS:[EAX+20],0
77D243D0 ^ E9 92FBFFFF JMP USER32.77D23F67
77D243D5 E8 28FBFFFF CALL USER32.77D23F02
77D243DA ^ E9 0DF8FFFF JMP USER32.77D23BEC
77D243DF 90 NOP
取消断点,ALT+F9返回到这里:
-------------------------------------------------------
-----------------------
01054618 50 PUSH EAX-----到这里
01054619 68 15040000 PUSH 415
0105461E 57 PUSH EDI
0105461F FFD6 CALL ESI
01054621 50 PUSH EAX
01054622 68 07040000 PUSH 407
01054627 57 PUSH EDI
01054628 FFD6 CALL ESI
0105462A 50 PUSH EAX
0105462B E8 2370FFFF CALL 0104B653
01054630 8B0D E01E0701 MOV ECX,DWORD PTR DS:[1071EE0]
01054636 83C4 0C ADD ESP,0C
01054639 E8 9F3EFEFF CALL 010384DD
0105463E 33DB XOR EBX,EBX
01054640 84C0 TEST AL,AL
01054642 75 36 JNZ SHORT 0105467A
01054644 381D E8C00601 CMP BYTE PTR DS:[106C0E8],BL
0105464A 74 2E JE SHORT 0105467A
0105464C 8B0D E01E0701 MOV ECX,DWORD PTR DS:[1071EE0]
01054652 894D 08 MOV DWORD PTR SS:[EBP+8],ECX
01054655 E8 833EFEFF CALL 010384DD
0105465A 84C0 TEST AL,AL
0105465C 74 07 JE SHORT 01054665
0105465E A1 44900601 MOV EAX,DWORD PTR DS:[1069044]
01054663 EB 06 JMP SHORT 0105466B
01054665 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
01054668 83C0 08 ADD EAX,8
0105466B 50 PUSH EAX
0105466C 68 07040000 PUSH 407
01054671 57 PUSH EDI
01054672 FFD6 CALL ESI
01054674 50 PUSH EAX
01054675 E8 3CF10000 CALL 010637B6
0105467A 395D 14 CMP DWORD PTR SS:[EBP+14],EBX
0105467D 0F84 B7000000 JE 0105473A
01054683 53 PUSH EBX
01054684 B9 98FA0601 MOV ECX,106FA98
01054689 E8 253CFEFF CALL 010382B3 点这一行F4到里面跟随
0105468E 53 PUSH EBX
0105468F B9 98FA0601 MOV ECX,106FA98
01054694 8945 08 MOV DWORD PTR SS:[EBP+8],EAX
01054697 E8 353CFEFF CALL 010382D1
0105469C 837D 14 01 CMP DWORD PTR SS:[EBP+14],1
010546A0 75 27 JNZ SHORT 010546C9
010546A2 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
010546A5 8BC8 MOV ECX,EAX
010546A7 81E1 FFFF0000 AND ECX,0FFFF
010546AD C1E8 10 SHR EAX,10
010546B0 51 PUSH ECX
010546B1 50 PUSH EAX
010546B2 8D85 00FFFFFF LEA EAX,DWORD PTR SS:[EBP-100]
010546B8 68 C4960601 PUSH 10696C4 ; ASCII "%04X-%04X"
010546BD 50 PUSH EAX
010546BE FF15 10630601 CALL DWORD PTR DS:[1066310] ; msvcrt.sprintf
-------------------------------------------
--------------------F4跟随到这里:
010382B3 56 PUSH ESI ; USER32.GetDlgItem
010382B4 8BF1 MOV ESI,ECX
010382B6 FF7424 08 PUSH DWORD PTR SS:[ESP+8]
010382BA 8B8E 5C060000 MOV ECX,DWORD PTR DS:[ESI+65C]
010382C0 6A 00 PUSH 0
010382C2 E8 24D70000 CALL 010459EB-------点这一行F4然后跟随
010382C7 3386 5C200000 XOR EAX,DWORD PTR DS:[ESI+205C]
010382CD 5E POP ESI
010382CE C2 0400 RETN 4
010382D1 56 PUSH ESI
010382D2 8BF1 MOV ESI,ECX
010382D4 FF7424 08 PUSH DWORD PTR SS:[ESP+8]
010382D8 8B8E 5C060000 MOV ECX,DWORD PTR DS:[ESI+65C]
010382DE 6A 01 PUSH 1
010382E0 E8 06D70000 CALL 010459EB
010382E5 3386 60200000 XOR EAX,DWORD PTR DS:[ESI+2060]
------------------------------------------------------
-----------------------------跟随后到这里:
010459EB 8B4424 04 MOV EAX,DWORD PTR SS:[ESP+4]
010459EF C1E0 06 SHL EAX,6
010459F2 034424 08 ADD EAX,DWORD PTR SS:[ESP+8]
010459F6 8B4481 18 MOV EAX,DWORD PTR DS:[ECX+EAX*4+18]
010459FA 35 8AC0E665 XOR EAX,65E6C08A 关键在这里,网上很多教程在这里打补丁,但是这里打补丁没有用,单步走到里不会出现机器码。
010459FF C2 0800 RETN 8
01045A02 E8 05000000 CALL 01045A0C
01045A07 E9 0C000000 JMP 01045A18
01045A0C 68 78300701 PUSH 1073078
01045A11 FF15 70620601 CALL DWORD PTR DS:[1066270] ; kernel32.InitializeCriticalSection
出现机器的地方在这里,单步走到这里时才出现机器码
010382C7 3386 5C200000 XOR EAX,DWORD PTR DS:[ESI+205C]
010382CD 5E POP ESI ; USER32.GetDlgItem 到这里才出现机器码,
010382CE C2 0400 RETN 4
010382D1 56 PUSH ESI
010382D2 8BF1 MOV ESI,ECX
010382D4 FF7424 08 PUSH DWORD PTR SS:[ESP+8]
010382D8 8B8E 5C060000 MOV ECX,DWORD PTR DS:[ESI+65C]
有人说在这里打补丁,但是还是没有用,在这里打补丁机器码改掉了但是程序会出错,SHIFT+F9后进程终址,不能运行了,重装系统后机器码会变,我在网上找了很多资料都没有这个壳的教程。有那位高手愿指点一下,感激不尽。
010382C7 3386 5C200000 XOR EAX,DWORD PTR DS:[ESI+205C]
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!