软件ADOBE Premiere Pro Cs3 3.2.0
限制:汉化后运行软件出现过期提示,不能打开
破解文件:原文件为: Premiere.dll
想法:本人从事摄影行业,所以总用这些软件,业余爱好:软件逆向工程。
希望站长或其它正式会员能引我加入看雪正式会员行列,万分感谢。
由于开始走了很多弯路,所以就不详细写进来,只把最后的分析写上。
02F58229 B8 03000000 mov eax,3
02F5822E C3 retn
02F5822F 53 push ebx
02F58230 8B5C24 10 mov ebx,dword ptr ss:[esp+10]
02F58234 55 push ebp
02F58235 BD 04000000 mov ebp,4
02F5823A 8B7424 20 mov esi,dword ptr ss:[esp+20]
02F5823E 56 push esi
02F5823F C605 EE301503 0>mov byte ptr ds:[31530EE],1
02F58246 8935 E0301503 mov dword ptr ds:[31530E0],esi
02F5824C 891D E4301503 mov dword ptr ds:[31530E4],ebx
02F58252 892D 44671303 mov dword ptr ds:[3136744],ebp
02F58258 E8 23FCFFFF call Premiere.02F57E80
02F5825D 83C4 04 add esp,4
02F58260 833D DC301503 0>cmp dword ptr ds:[31530DC],0
02F58267 0F85 93000000 jnz Premiere.02F58300
02F5826D 6A 50 push 50
02F5826F E8 90AEFEFF call <jmp.&MSVCR80.operator new>
00000001 cerate by 网上虫子(原创)
00000002 业余爱好-软件逆向,希望加入看雪!
上面两行与破解无关,可以NOP掉。
注意这行:
02F58252 892D 44671303 mov dword ptr ds:[3136744],ebp
其中:ds:[B66744]=00000002
注:后经过几次跟踪,发现这里的值如果为4则可以通知以后的两个检查。
而这个值是EBP的值,于是往上找EBP的值,找到了这行
02F58235 8B6C24 10 mov ebp,dword ptr ss:[esp+10]
不好追,于是放弃在这里修改EBP的值
继续下一处:
02F580DE 8B0D E0301503 mov ecx,dword ptr ds:[31530E0]
02F580E4 85C9 test ecx,ecx
02F580E6 75 0B jnz short Premiere.02F580F3
02F580E8 B9 5CE30E03 mov ecx,Premiere.030EE35C
02F580ED 890D E0301503 mov dword ptr ds:[31530E0],ecx
02F580F3 833D E4301503 0>cmp dword ptr ds:[31530E4],0
02F580FA 75 0A jnz short Premiere.02F58106 // 我在这下的断,下面是JE跳转,有4个跳向同一地址的。
02F580FC C705 E430B800 5>mov dword ptr ds:[B830E4],0B1E35C ; ASCII "G/ProjectmanagerDialog/kCalculateButtonString"
02F58106 A1 4467B600 mov eax,dword ptr ds:[B66744]
02F5810B 83F8 01 cmp eax,1
02F5810E 0F84 83000000 je Premiere.02F58197
02F58114 83F8 04 cmp eax,4
02F58117 74 7E je short Premiere.02F58197 // 经测试只有这个跳成功跳转才能最终使软件真正运行起来。
02F58119 A1 E830B800 mov eax,dword ptr ds:[B830E8]
02F5811E 85C0 test eax,eax
02F58120 74 75 je short Premiere.02F58197
02F58122 8B40 10 mov eax,dword ptr ds:[eax+10]
02F58125 85C0 test eax,eax
02F58127 74 6E je short Premiere.02F58197
02F58129 8378 04 00 cmp dword ptr ds:[eax+4],0
02F5812D 74 68 je short Premiere.02F58197
02F5812F 51 push ecx
02F58130 8D4C24 24 lea ecx,dword ptr ss:[esp+24]
02F58134 E8 07FDFFFF call Premiere.02F57E40
02F58139 A1 E4301503 mov eax,dword ptr ds:[31530E4]
02F5813E 50 push eax
02F5813F 8D4C24 08 lea ecx,dword ptr ss:[esp+8]
02F58143 C74424 4C 00000>mov dword ptr ss:[esp+4C],0
02F5814B E8 F0FCFFFF call Premiere.02F57E40
02F58150 6A 00 push 0
02F58152 6A 00 push 0
02F58154 6A 00 push 0
02F58156 68 94190F03 push Premiere.030F1994 ; ASCII "$$$/amt/alert/ExpiredMsg=Product license has
expired."
02F5815B C64424 58 01 mov byte ptr ss:[esp+58],1
02F58160 E8 EB930000 call Premiere.02F61550
02F58165 83C4 10 add esp,10
02F58168 50 push eax
02F58169 6A 00 push 0
02F5816B 6A 00 push 0
02F5816D 6A 00 push 0
02F5816F 68 6C190F03 push Premiere.030F196C ; ASCII "$$$/amt/alert/Expired=License Expired"
02F58174 E8 D7930000 call Premiere.02F61550
02F58179 83C4 10 add esp,10
02F5817C 50 push eax
02F5817D E8 9ED00000 call Premiere.02F65220
02F58182 83C4 08 add esp,8
02F58185 8D4C24 04 lea ecx,dword ptr ss:[esp+4]
02F58189 E8 E2F9FFFF call Premiere.02F57B70
02F5818E 8D4C24 20 lea ecx,dword ptr ss:[esp+20]
02F58192 E8 D9F9FFFF call Premiere.02F57B70
02F58197 B8 02000000 mov eax,2
02F5819C 8B4C24 40 mov ecx,dword ptr ss:[esp+40]
02F581A0 64:890D 0000000>mov dword ptr fs:[0],ecx
02F581A7 59 pop ecx
02F581A8 8B4C24 38 mov ecx,dword ptr ss:[esp+38]
02F581AC 33CC xor ecx,esp
02F581AE E8 B1B3FEFF call Premiere.02F43564
02F581B3 83C4 48 add esp,48
02F581B6 C3 retn
02F581B7 CC int3
02F581B8 CC int3
经过了上面的分析:于是修改代码如下:
02F580FA /75 0A jnz short Premiere.02F58106
02F580FC |C705 E4301503 5>mov dword ptr ds:[31530E4],Premiere.030E>
02F58106 \B8 0400B002 mov eax,2B00004
02F5810B B8 04000000 mov eax,4 //第一次只修改了这里,发现不行,软件运行时这里代码会变
02F58110 90 nop
02F58111 90 nop
02F58112 90 nop
02F58113 90 nop
02F58114 83F8 04 cmp eax,4 //于是这里也修改了,直接给EAX赋值4
02F58117 74 7E je short Premiere.02F58197
02F58119 A1 E8301503 mov eax,dword ptr ds:[31530E8]
02F5811E 85C0 test eax,eax
02F58120 74 75 je short Premiere.02F58197
02F58122 8B40 10 mov eax,dword ptr ds:[eax+10]
02F58125 85C0 test eax,eax
02F58127 74 6E je short Premiere.02F58197
02F58129 8378 04 00 cmp dword ptr ds:[eax+4],0
02F5812D 74 68 je short Premiere.02F58197
02F5812F 51 push ecx
02F58130 8D4C24 24 lea ecx,dword ptr ss:[esp+24]
02F58134 E8 07FDFFFF call Premiere.02F57E40
上段修改后跳到了这里
02F40B50 E8 9BDCFFFF call Premiere.02F3E7F0
02F40B55 83C4 04 add esp,4
02F40B58 84C0 test al,al
02F40B5A C745 FC FFFFFFF>mov dword ptr ss:[ebp-4],-1 //我在这里下了断
02F40B61 75 31 jnz short Premiere.02F40B94 //这个跳不重要
02F40B63 803D 4826C505 0>cmp byte ptr ds:[5C52648],0
02F40B6A 75 40 jnz short Premiere.02F40BAC //这个是关键,这里ds:[5C52648]如果=1就好了,可找到它的值的地方
02F40B6C 6A 00 push 0 //找不到就改跳吧,cmp byte ptr ds:[5C52648],0 改一下;
02F40B6E C605 48261503 0>mov byte ptr ds:[3152648],1 //改成:cmp byte ptr ds:[5C52648],1
02F40B75 E8 36DAFFFF call Premiere.02F3E5B0
02F40B7A 83C4 04 add esp,4
02F40B7D 8B4D F4 mov ecx,dword ptr ss:[ebp-C]
02F40B80 64:890D 0000000>mov dword ptr fs:[0],ecx
02F40B87 5F pop edi
02F40B88 5E pop esi
02F40B89 5B pop ebx
02F40B8A 8BE5 mov esp,ebp
02F40B8C 5D pop ebp
02F40B8D C3 retn
02F40B8E B8 630BF402 mov eax,Premiere.02F40B63
02F40B93 C3 retn
02F40B94 51 push ecx
02F40B95 8BC4 mov eax,esp
02F40B97 8965 EC mov dword ptr ss:[ebp-14],esp
02F40B9A 50 push eax
02F40B9B E8 20FEFFFF call Premiere.02F409C0
02F40BA0 83C4 04 add esp,4
02F40BA3 FF15 709C0E03 call dword ptr ds:[<&MediaLayer.ML::SetR>; MediaLay.ML::SetRegistrationServer
02F40BA9 83C4 04 add esp,4
02F40BAC 8B4D F4 mov ecx,dword ptr ss:[ebp-C]
02F40BAF 5F pop edi
02F40BB0 5E pop esi
02F40BB1 64:890D 0000000>mov dword ptr fs:[0],ecx
02F40BB8 5B pop ebx
02F40BB9 8BE5 mov esp,ebp
02F40BBB 5D pop ebp
02F40BBC C3 retn
02F40BBD CC int3
02F40BBE CC int3
02F40BBF CC int3
02F40BC0 8B4424 04 mov eax,dword ptr ss:[esp+4]
02F40BC4 8B51 04 mov edx,dword ptr ds:[ecx+4]
02F40BC7 8950 04 mov dword ptr ds:[eax+4],edx
02F40BCA 8908 mov dword ptr ds:[eax],ecx
02F40BCC C2 0400 retn 4
修改了这里,程序开始跑起来了,加载了一大堆东西。
后来又回到了第一处断处,依然EAX=4跳,成功。后来到这里,还有最后一处。
02F3FF96 E8 05FAFFFF call Premiere.02F3F9A0
02F3FF9B 84C0 test al,al
02F3FF9D C745 FC FFFFFFF>mov dword ptr ss:[ebp-4],-1
02F3FFA4 75 1A jnz short Premiere.02F3FFC0 // 我在这下的断,哈哈,看起来和第二处太像了,方法同上。
02F3FFA6 803D 4826C505 0>cmp byte ptr ds:[5C52648],0 // 改cmp byte ptr ds:[5C52648],0为cmp byte ptr ds:[5C52648],1
02F3FFAD 75 11 jnz short Premiere.02F3FFC0
02F3FFAF 6A 01 push 1
02F3FFB1 C605 48261503 0>mov byte ptr ds:[3152648],1
02F3FFB8 E8 F3E5FFFF call Premiere.02F3E5B0
02F3FFBD 83C4 04 add esp,4
02F3FFC0 8B4D F4 mov ecx,dword ptr ss:[ebp-C]
02F3FFC3 5F pop edi
02F3FFC4 5E pop esi
02F3FFC5 64:890D 0000000>mov dword ptr fs:[0],ecx
02F3FFCC 5B pop ebx
02F3FFCD 8BE5 mov esp,ebp
02F3FFCF 5D pop ebp
02F3FFD0 C3 retn
02F3FFD1 B8 A6FFF302 mov eax,Premiere.02F3FFA6
02F3FFD6 C3 retn
这回彻底把过期的限制破除了,哈哈。
本来打算再继续找一下,看能不能找到真正让Premiere 发现过期的地方,但用时间断点没有找到关键的地方,于是放弃,反正能用就行。
现在已做成补丁:
由于是新手不能上传:
可以到下面地址下载 :
Adobe Premiere Pro Cs3.2.0过期补丁.exe
软件下载及安装:
下载 Adobe.Premiere.Pro.CS3.Full 757M安装包,里面有注册机及汉化包,注意不要用里面的汉化包汉化,安装完成后为 Adobe Premiere Pro CS3 v3.0.0 (374)
到网上搜索下载:Adobe Premiere Pro CS3 中文化程序 v1.23 汉化包,62.4M,汉化时直接选中升级到3.2.0选项,汉化后为 Adobe Premiere Pro CS3 v3.2.0 (374)
用这个汉化后运行,出现过期的提示,关闭软件,运行我提供的补丁后即可正常使用。
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法