背景:本人从事软件行业,但对加壳解壳了解几乎没有。所以最近在研究这方面的东东。
---------------------------------------------------------
目标: nspack3.5主程序脱壳分析(Aspr SKE 2.X) 这个贴子的sample
参考文档: Asprotect SKE 2.2 的Advanced Import protection保护技术
nspack3.5主程序脱壳分析(Aspr SKE 2.X)
实践ASProtect 2.1x SKE脱壳【原创】
OS: windows sp2
tools: OD
---------------------------------------------------------
根据kanxue的文档,写出两个相应的patch脚本,可以正常运行,并能修复一些加密CALL,
需要修复的API 列表:
14 2C 40 00 10 37 40 00 58 67 40 00 6A 6A 40 00 A9 6A 40 00 B0 6A 40 00 B8 6A 40 00 4A 74 40 00
97 74 40 00 E7 74 40 00 77 75 40 00 9F 75 40 00 0A 76 40 00 4C 76 40 00 20 88 40 00 7B 89 40 00
A0 89 40 00 01 8C 40 00 87 8C 40 00 98 8C 40 00 DB 91 40 00 3A 92 40 00 74 98 40 00 97 A2 40 00
55 A3 40 00 D6 A7 40 00 EB A7 40 00 01 AA 40 00 E1 BC 40 00 06 C6 40 00 91 CA 40 00 79 D5 40 00
BB DB 40 00 08 DC 40 00 1A DC 40 00 06 DE 40 00 2E DE 40 00 57 DE 40 00 93 DE 40 00 13 DF 40 00
A7 E8 40 00 68 F9 40 00 D6 F9 40 00 07 FA 40 00 85 FD 40 00 16 FE 40 00 81 FF 40 00 75 0B 41 00
AA 1E 41 00 58 27 41 00 E5 27 41 00 4A 2F 41 00 AC 30 41 00 B7 30 41 00 CC 30 41 00 49 31 41 00
6B 31 41 00 C9 31 41 00 11 3B 41 00 42 3B 41 00 8C 3B 41 00 6B 3C 41 00 FB 3C 41 00 09 3E 41 00
1B 40 41 00 42 40 41 00 49 41 41 00 82 42 41 00 86 48 41 00 AE 48 41 00 DB 48 41 00 A2 49 41 00
D2 49 41 00 87 5D 41 00 3D 5F 41 00 48 5F 41 00 5C 5F 41 00 15 60 41 00 24 60 41 00 3C 6D 41 00
6F 6D 41 00 B0 6D 41 00 D5 6D 41 00 DE 6D 41 00 AA E1 41 00 A2 E2 41 00 E7 E3 41 00 04 E4 41 00
0C E4 41 00 88 E4 41 00 90 EC 41 00 D7 F5 41 00 15 F9 41 00 09 FA 41 00 FB FB 41 00 18 FC 41 00
E1 17 42 00 38 18 42 00 A6 19 42 00 DC 20 42 00 E4 E8 42 00 CA 57 43 80 29 5C 43 80 75 92 43 00
97 92 43 80 A7 92 43 80 A2 D2 47 80 B4 DF 47 80 CB EE 47 80 1E F0 47 80 18 0B 48 80 7F 4E 48 80
8F 4E 48 80 7E 5C 48 80 D3 5C 48 00 1D 6E 48 80 24 6E 48 80 3D 81 48 80 A9 81 48 80 2D 82 48 80
A6 84 48 00 8D 88 48 80 03 8A 48 00 18 8A 48 00 A3 8A 48 80 AB 9A 48 80 18 9B 48 80 08 A6 48 00
98 B7 48 80 FD B7 48 80 55 C0 48 80 00 C1 48 80 63 C1 48 00 71 C1 48 80 A8 C1 48 80 99 C4 48 80
CD C4 48 80 B4 C8 48 80 FD CB 48 80 B6 CC 48 80 8C CD 48 80 93 CD 48 80 64 CE 48 00 28 D7 48 80
71 D7 48 80 94 DC 48 80 A8 DC 48 80 2B DD 48 00 BF DD 48 80 5C EB 48 80 78 EB 48 80 90 EB 48 00
7A F6 48 80 F9 F6 48 00 B9 F9 48 80 FC 15 49 80 08 1C 49 80 19 1F 49 80 F2 1F 49 80 70 25 49 80
A2 27 49 80 B4 27 49 00 97 49 49 80 9E 49 49 80 55 4B 49 80 D0 4C 49 80 FE 53 49 80 17 56 49 80
C6 6D 49 80 26 6E 49 00 F7 7D 49 00 F9 7E 49 00 FE 7F 49 80 A3 80 49 80 C6 84 49 80 12 8B 49 80
E6 8B 49 80 F5 8B 49 80 64 8C 49 80 91 8D 49 00 9C 8D 49 80 B0 8D 49 80 C0 8D 49 80 2E 98 49 00
D8 99 49 80 69 9A 49 80 F1 9A 49 80 1A 9B 49 80 45 9B 49 80 B5 9B 49 80 F8 9B 49 00 2B 9C 49 00
6D 9D 49 00 FC 9E 49 80 0B 9F 49 80 C9 9F 49 80 23 B3 49 80 5A B3 49 80 59 C0 49 00 C7 C0 49 80
11 C7 49 80 1F C7 49 80 DE CB 49 80 E7 CB 49 80 1C CC 49 80 EF E1 49 80 6C E2 49 80 4A 0A 4A 80
53 0A 4A 80 3E 0D 4A 80 D4 0D 4A 00 DB 0D 4A 80 7A 0E 4A 80 D4 0E 4A 80 76 0F 4A 80 C0 17 4A 80
19 19 4A 80 7C 19 4A 80 83 19 4A 80 6F 1B 4A 80 92 1C 4A 00 62 22 4A 80 96 29 4A 80 13 2E 4A 80
54 34 4A 80 B5 35 4A 80 D0 3A 4A 80
olldbgscript 脚本:
mov eip,00b973a1 (我的patch开始地址为00b97380)
run
刚开始还可以正常运行和修复,但运行到地址 29 5C 43 80,就抛出异常提示
不知道如何继续,因为址0000006A不可读,请尝试更改EIP或忽略程序异常
相关程序:
00435C29 E8 D6A3C900 CALL 010D0004
010D0004 FF0424 INC DWORD PTR SS:[ESP]
010D0007 EB 01 JMP SHORT 010D000A
010D0009 9A 6800000C 01C>CALL FAR C301:0C000068 ; 远调用
请大家帮忙看下,提示一下就可以了,然后我自己慢慢再摸索摸索。谢谢!
另外还有个疑问:
这个时候还在解壳阶段,是不是所有的API修复完成了,再运行到OEP处进行DUMP就可以了?
还是直接将原始版本的程序运行到OEP再用PATCH修复API再DUMP?(因为这种方法我用PACTH没有成功)。
请提示一下。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课