【破文标题】ASProtect 2.1x SKE之QQ群发软件2006综合最强版 脱壳分析
【破解工具】OD,PEID0.94,ImportREC1.6F
【破解平台】WinXP
【软件名称】QQ群发软件2006综合最强版
【软件大小】641k
【保护方式】ASProtect 2.1x SKE -> Alexey Solodovnikov
【破解声明】 我是一只小菜鸟,第一次学习脱壳,脱完壳还是不能运行,望各位多多指点!
第一步:PEID0.94 检测,加壳方式为:ASProtect 2.1x SKE -> Alexey Solodovnikov
第二步:寻找OEP,采用的是最后一次异常法,找到OEP
过程如下:
OD载入,因为我一开始就不忽略所有的异常,所以一载入就提示有异常,我们shit+F9,点“否”,停在入口了。
00401000 > 68 01A05600 PUSH QQ群发软.0056A001 //停在这里
00401005 E8 01000000 CALL QQ群发软.0040100B
0040100A C3 RETN
0040100B C3 RETN
0040100C 49 DEC ECX
下面就开始使用最后一次异常法了。。。
我们一直狂按shit+F9,按了35次,到最后一次异常!
00EFFAA5 C700 EFCA5C85 MOV DWORD PTR DS:[EAX],855CCAEF
00EFFAAB 67:64:8F06 0000 POP DWORD PTR FS:[0]
00EFFAB1 83C4 04 ADD ESP,4
00EFFAB4 83E8 AF SUB EAX,-51
00EFFAB7 83C8 4B OR EAX,4B
按Alt+M,在00401000 CODE段下F2断点,Shift+F9运行:
00407170 E8 8B8ED200 CALL 01130000 //这就是OEP处
00407175 E4 8B IN AL,8B ; I/O 命令
00407177 C0FF 25 SAR BH,25 ; 移位常量超出 1..31 的
好的,按Ctrl+B,搜索一下FF 25,会找到:
004012B4 - FF25 1C325100 JMP DWORD PTR DS:[51321C] ; kernel32.CreateFileA
004012BA 8BC0 MOV EAX,EAX
004012BC E8 3FEDD200 CALL 01130000
004012C1 5B POP EBX
在命令行下 dd 51321C,在数据区可看到:
0051321C 7C801A24 kernel32.CreateFileA
00513220 7C809B77 kernel32.CloseHandle
00513224 00000000
00513228 77D311B3 user32.GetKeyboardType
0051322C 77D20FE8 user32.LoadStringA
00513230 5E758D5A
00513234 77D20F90 user32.CharNextA
00513238 00000000 //可知IAT没有加密
0051323C A5419701
00513240 5806B233
00513244 F1A010CD
00513248 00000000
0051324C 770F4850 oleaut32.SysFreeString
00513250 7711C99D oleaut32.SysReAllocStringLen
00513254 770F4B59 oleaut32.SysAllocStringLen
00513258 00000000
0051325C 7C809BF5 kernel32.TlsSetValue
00513260 7C809750 kernel32.TlsGetValue
00513264 7C8099BD kernel32.LocalAlloc
然后到OEP处,用OD插件脱壳,再用Imp修复,填上OEP=7170,点IAT自动搜索,获得输入信息,全部为有效指针,修复抓取文件。
运行脱壳文件,发现它不能正常运行,晕!
OD载入,运行脱壳修复后的文件,停在此处,不知道该如何修改!才能使文件运行!
00407170 > $ E8 8B8ED200 CALL 01130000
00407175 E4 DB E4
00407176 8BC0 MOV EAX,EAX
00407178 $- FF25 64325100 JMP DWORD PTR DS:[513264] ; kernel32.LocalAlloc
0040717E 8BC0 MOV EAX,EAX
00407180 $- FF25 14905900 JMP DWORD PTR DS:[<&kernel32.#846>] ; kernel32.TlsGetValue
00407186 8BC0 MOV EAX,EAX
00407188 $- FF25 10905900 JMP DWORD PTR DS:[<&kernel32.#847>] ; kernel32.TlsSetValue
看堆栈区:
0012FFC4 7C816D4F 返回到 kernel32.7C816D4F
0012FFC8 7C930738 ntdll.7C930738
0012FFCC FFFFFFFF
0012FFD0 7FFD3000
0012FFD4 8054B938
0012FFD8 0012FFC8
0012FFDC FF612DA8
0012FFE0 FFFFFFFF SEH 链尾部
0012FFE4 7C8399F3 SE处理程序
0012FFE8 7C816D58 kernel32.7C816D58
不知道该如何修改,才能运行脱壳后的文件!
请各位多多指点!谢谢各位了!
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课