kissy 发表于 2008-4-2 10:04

PC-Guard 5.0 加密文件简捷无KEY脱壳分析

PC-Guard 5.0 加密文件简捷无KEY脱壳分析

Writer by KuNgBiM/

Email: kungbim@163.com

Date: January 18, 2008

Debuger Tools: OllyICE、Universal Import Fixer (UIF)、ImportREC

【目标程序信息】

Particle Illusion 3.03

官方主页:http://www.wondertouch.com

Particle Illusion 是一套分子特效應用軟體,使用簡單、快速、功能強大、特效豐富,現在有愈來愈多的多媒體製作公司,使用 Particle Illusion 的特效,包括武俠劇的打鬥效果, Particle Illusion已成為電視台、廣告商、動畫製作、遊戲公司製作特效的必備軟體了。

【分析文件】

PEiD查壳后可知文件中由PC-Guard 5.0加壳的文件有:

particleIllusion.exe
pIllusionRender.exe
wtpi302lic.dll(这个也是PC-Guard 5.0加壳,但分析后得出结论,该文件属于授权系统自带的库文件,所以就不需要脱壳了,删除也罢 )

【正文】

由于篇幅及通用性关系,此篇文件就以particleIllusion.exe主程序作为分析脱壳目标程序。

【找寻OEP】

OllyICE载入目标文件:

0068E000 > FC         cld                  ; EP
0068E00155         push ebp
0068E00250         push eax
0068E003E8 00000000    call particle.0068E008
0068E0085D         pop ebp
0068E00960         pushad
0068E00AE8 03000000    call particle.0068E012
0068E00F83EB 0E      sub ebx,0E
0068E012EB 01       jmp short particle.0068E015
0068E0140C 58       or al,58
0068E016EB 01       jmp short particle.0068E019
0068E01835 40EB0136    xor eax,3601EB40
0068E01DFFE0      jmp eax
0068E01F0B61 B8      or esp,dword ptr ds:
0068E0229C         pushfd
0068E0233941 00      cmp dword ptr ds:,eax
0068E026EB 01       jmp short particle.0068E029
0068E028E3 60       jecxz short particle.0068E08A
0068E02AE8 03000000    call particle.0068E032
0068E02FD2EB      shr bl,cl
0068E0310B58 EB      or ebx,dword ptr ds:

Alt+M打开内存镜像,并在第一区段F2下断,Shift+F9运行。

等出现PC-Guard的注册界面后直接“Continue”:

00BB10FB281F      sub byte ptr ds:,bl         ; 中断在此
00BB10FD50         push eax
00BB10FE8B85 B54C4200   mov eax,dword ptr ss:
00BB11043207      xor al,byte ptr ds:
00BB1106D1C0      rol eax,1
00BB11088985 B54C4200   mov dword ptr ss:,eax
00BB110E58         pop eax
00BB110F47         inc edi
00BB111059         pop ecx
00BB1111E2 02       loopd short 00BB1115
00BB1113EB 05       jmp short 00BB111A
00BB1115 ^ E9 21FFFFFF    jmp 00BB103B

Alt+M再次打开内存镜像,并在PE文件头F2下断,Shift+F9运行:

7C93080666:8139 4D5A    cmp word ptr ds:,5A4D         ; 中断在此
7C93080B75 1D       jnz short ntdll.7C93082A
7C93080D8B51 3C      mov edx,dword ptr ds:
7C93081081FA 00000010   cmp edx,10000000
7C93081673 12       jnb short ntdll.7C93082A
7C9308188D040A       lea eax,dword ptr ds:
7C93081B8945 E4      mov dword ptr ss:,eax
7C93081E8138 50450000   cmp dword ptr ds:,4550
7C9308240F85 8B830200   jnz ntdll.7C958BB5
7C93082A834D FC FF   or dword ptr ss:,FFFFFFFF
7C93082EE8 CFE5FFFF    call ntdll.7C92EE02
7C930833C2 0400      retn 4

Alt+M最后一次打开内存镜像,并在第一区段F2下断,Shift+F9运行,飞向OEP:

004D7F466A 60       push 60                  ; OEP
004D7F4868 A8A75300    push particle.0053A7A8
004D7F4DE8 D6080000    call particle.004D8828
004D7F52BF 94000000    mov edi,94
004D7F578BC7      mov eax,edi
004D7F59E8 D2F3FFFF    call particle.004D7330
004D7F5E8965 E8      mov dword ptr ss:,esp
004D7F618BF4      mov esi,esp
004D7F63893E      mov dword ptr ds:,edi
004D7F6556         push esi
004D7F66FF15 08F45100   call dword ptr ds:         ; kernel32.GetVersionExA
004D7F6C8B4E 10      mov ecx,dword ptr ds:
004D7F6F890D B4A65500   mov dword ptr ds:,ecx
004D7F758B46 04      mov eax,dword ptr ds:
004D7F78A3 C0A65500    mov dword ptr ds:,eax
004D7F7D8B56 08      mov edx,dword ptr ds:
004D7F808915 C4A65500   mov dword ptr ds:,edx
004D7F868B76 0C      mov esi,dword ptr ds:
004D7F8981E6 FF7F0000   and esi,7FFF
004D7F8F8935 B8A65500   mov dword ptr ds:,esi
004D7F9583F9 02      cmp ecx,2
004D7F9874 0C       je short particle.004D7FA6

【Dump及修复IAT】

1、使用OllyDump插件去掉"Rebuild Import"选项后,直接在OEP处dump保存文件。

注意:如果这时直接使用ImportREC修复文件,IAT会存在一个无效函数,所以我们现在利用新工具Universal Import Fixer (UIF)来获取及修正IAT。

2、在此时的OD中打开附件进程功能,找到目标进程,复制进程的PID,然后打开UIF并粘贴到"Process ID"中,勾选"Fix Dircetly Imports"选项,OK,"Start"开始修复IAT表。

UIF修复记录:(附件:Uif-Log.txt)

===============================================================

Patch Success...

IAT RVA : 00FB0000
IAT Size : 0000093C

Normal Imports: 4644
Directly Imports : 0
All Imports   : 4644

===============================================================

3、运行ImportREC,设置选项:重建原始FT、创建新的IAT、修正EP到OEP、使用来自磁盘的PE头文件头,最后找到进程并填写相关数据:

OEP   : 000D7F46
IAT RVA : 00FB0000
IAT Size : 0000093C

最后获取输入表,检查函数全部有效,修复抓取文件即可。

程序运行正常,程序为 Microsoft Visual C++ 7.0 所编译。

【小小总结】

PC-Guard 5.0 在没使用SDK而加壳的情况下可以不需要KEY来解码。

【鸣谢】

感谢linhanshi一直长期为我们提供国外的优秀工具。

--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

目标程序下载:
hxxp://rapidshare.com/files/84809303/particleIllusion3.03.rar.html

a393269192 发表于 2008-4-2 11:02

!~!~!~!~!~!~!~!~!~!~!~!~!~!~

pwzh88 发表于 2011-7-30 08:54

学习学习

pwzh88 发表于 2011-7-30 09:03

这个壳好像跟ZP差不多啊
页: [1]
查看完整版本: PC-Guard 5.0 加密文件简捷无KEY脱壳分析