TMPGEnc PLUS 2.58.44.152 简体汉化版 2K3下万能断点爆破
【软件功能】:日本人编的AVI==>MPEG转换程序
【软件主页】:http://www.pegasys-inc.com/
【功能限制】:没发现,14天试用时间
【破解工具】:OllyDbg、W32Dasm、PEiD
【本文作者】:好好学习(恨浩)
【整理时间】:2005.3.11
【破解原因】:转VCD需要用到该软件,下载来一看要注册,小日本的咚咚,采用强爆法。
【目标下载】:http://www.softsea.net/download.php?id=112025
用PEiD检测,无壳,Borland Delphi 4.0 - 5.0
运行TMPGEnc.exe,出现注册画面,有“注册”、“试用”、“退出”三个选项。
点击“注册”,输入假序列号“123456”,提示“错误的序列号”
修改系统时间到30天后,运行TMPGEnc,提示“试用期已结束”,试用按钮为灰色不可用。调回系统时间,还是如此。
W32Dasm上阵,察看串式参考,全是乱码,无可用信息
用蛋壳的方法,在user32模块中查找F3A58BC883E103处的地址为77CF0EFE是我机器的万能断点。
运行OD加载TMPGEnc.exe,查看=〉执行模块,双击“user32”,Ctrl+g,去到77CF0EFE处,F2下断。
F9运行,点击“注册”,输入假序列号“123456”,“确定”后,断在内存代码77CF0EFE处,F2取消断点,Alt+F9,OD回到程序代码中,一路F8,来到这里:
0052207D |. 84C0 test al,al
0052207F |. 75 05 jnz short TMPGEnc.00522086
00522081 |. E8 DA9CEEFF call TMPGEnc.0040BD60
00522086 |> 8D55 EC lea edx,dword ptr ss:[ebp-14]
00522089 |. 8B45 F8 mov eax,dword ptr ss:[ebp-8]
0052208C |. E8 FF65EEFF call TMPGEnc.00408690
00522091 |. 8B45 EC mov eax,dword ptr ss:[ebp-14]
00522094 |. 8D55 F0 lea edx,dword ptr ss:[ebp-10]
00522097 |. E8 EC66EEFF call TMPGEnc.00408788
0052209C |. 8B55 F0 mov edx,dword ptr ss:[ebp-10]
0052209F |. 8D45 F8 lea eax,dword ptr ss:[ebp-8]
005220A2 |. E8 BD1BEEFF call TMPGEnc.00403C64
005220A7 |. A1 F0635A00 mov eax,dword ptr ds:[5A63F0]
005220AC |. 8B00 mov eax,dword ptr ds:[eax]
005220AE |. 66:BA F5FF mov dx,0FFF5
005220B2 |. E8 B5A9F1FF call TMPGEnc.0043CA6C
005220B7 |. 33C0 xor eax,eax
005220B9 |. 55 push ebp
005220BA |. 68 7C215200 push TMPGEnc.0052217C
005220BF |. 64:FF30 push dword ptr fs:[eax]
005220C2 |. 64:8920 mov dword ptr fs:[eax],esp
005220C5 |. 8B45 F8 mov eax,dword ptr ss:[ebp-8]
005220C8 |. E8 97E7FFFF call TMPGEnc.00520864 //找注册码一定得跟。
005220CD |. 84C0 test al,al //测试al是否为1,不为1下面的跳转就不会跳,不跳就死!
005220CF 75 71 jnz short TMPGEnc.00522142 //这里可以跳过下面那个死亡之CALL。
005220D1 |. E8 CE4AEEFF call <jmp.&kernel32.GetTickCount> ; [GetTickCount
005220D6 |. 50 push eax
005220D7 |. 8B45 FC mov eax,dword ptr ss:[ebp-4]
005220DA |. 8B80 140300>mov eax,dword ptr ds:[eax+314]
005220E0 |. 5A pop edx
005220E1 |. 2BC2 sub eax,edx
005220E3 |. 99 cdq
005220E4 |. 33C2 xor eax,edx
005220E6 |. 2BC2 sub eax,edx
005220E8 |. 3D B80B0000 cmp eax,0BB8
005220ED |. 7D 1C jge short TMPGEnc.0052210B
005220EF |. 8B45 F8 mov eax,dword ptr ss:[ebp-8]
005220F2 |. 8B55 FC mov edx,dword ptr ss:[ebp-4]
005220F5 |. 8B92 180300>mov edx,dword ptr ds:[edx+318]
005220FB |. E8 741EEEFF call TMPGEnc.00403F74
00522100 |. 74 09 je short TMPGEnc.0052210B
00522102 |. 8B45 FC mov eax,dword ptr ss:[ebp-4]
00522105 |. FF80 1C0300>inc dword ptr ds:[eax+31C]
0052210B |> 8B45 FC mov eax,dword ptr ss:[ebp-4]
0052210E |. 83B8 1C0300>cmp dword ptr ds:[eax+31C],14
00522115 |. 7E 0A jle short TMPGEnc.00522121
00522117 |. 68 401F0000 push 1F40 ; /Timeout = 8000. ms
0052211C |. E8 734BEEFF call <jmp.&kernel32.Sleep> ; \Sleep
00522121 |> 8D55 F0 lea edx,dword ptr ss:[ebp-10]
00522124 |. A1 A85C5A00 mov eax,dword ptr ds:[5A5CA8]
00522129 |. E8 8E3AEEFF call TMPGEnc.00405BBC
0052212E |. 8B4D F0 mov ecx,dword ptr ss:[ebp-10]
00522131 |. B2 01 mov dl,1
00522133 |. A1 647A4000 mov eax,dword ptr ds:[407A64]
00522138 |. E8 8B9CEEFF call TMPGEnc.0040BDC8
0052213D |. E8 E214EEFF call TMPGEnc.00403624 //这里将带你走向死亡
00522142 |> \33C0 xor eax,eax
00522144 |. 5A pop edx
00522145 |. 59 pop ecx
00522146 |. 59 pop ecx
00522147 |. 64:8910 mov dword ptr fs:[eax],edx
0052214A |. 68 83215200 push TMPGEnc.00522183
0052214F |> E8 504AEEFF call <jmp.&kernel32.GetTickCount> ; [GetTickCount
00522154 |. 8B55 FC mov edx,dword ptr ss:[ebp-4]
00522157 |. 8982 140300>mov dword ptr ds:[edx+314],eax
0052215D |. 8B45 FC mov eax,dword ptr ss:[ebp-4]
00522160 |. 05 18030000 add eax,318
00522165 |. 8B55 F8 mov edx,dword ptr ss:[ebp-8]
00522168 |. E8 B31AEEFF call TMPGEnc.00403C20
0052216D |. A1 F0635A00 mov eax,dword ptr ds:[5A63F0]
00522172 |. 8B00 mov eax,dword ptr ds:[eax]
00522174 |. 33D2 xor edx,edx
00522176 |. E8 F1A8F1FF call TMPGEnc.0043CA6C
0052217B \. C3 retn
下面请出W32Dasm:来到00520864处:
* Referenced by a CALL at Addresses:
|:00520C63 , :00520EC8 , :00521176 , :005220C8
|
:00520864 55 push ebp
:00520865 8BEC mov ebp, esp
:00520867 81C4D4FEFFFF add esp, FFFFFED4
:0052086D 53 push ebx
:0052086E 56 push esi
:0052086F 33D2 xor edx, edx
:00520871 8995E0FEFFFF mov dword ptr [ebp+FFFFFEE0], edx
:00520877 8995DCFEFFFF mov dword ptr [ebp+FFFFFEDC], edx
:0052087D 8BF0 mov esi, eax
以下代码略.................
共有4处CALL00520864
分别看一下,此CALL返回后,都是测试al,为0就死~~~!!
OK~~动手修理它......
用什么工具就不用我说了吧~~~
:00520864 55 push ebp
:00520865 8BEC mov ebp, esp
改为:
:00520864 B0 01 mov al,1 //将1放入al
:00520865 C3 retn //返回
运行修改后的TMPGEnc,,已经没有注册提示,但还有“试用”字样,查看关于,还有“试用期剩下多少天的提示”,修改系统到30天后,同样能正常运行,调回系统时间,天数为负数了~~哈哈,随便用多久。。。。放心的用。
为了更完美一点,在注册表:
HKEY_CURRENT_USER\SOFTWARE\Pegasys Inc.\TMPGEnc Plus\2.5
添加如下信息:
SerialID=123456
现在运行程序,“试用”已经没有了,看看关于,序列号“123456”哈哈!OK了!
小结:
简单爆破,主要是运用万能断点在无法找到可用信息的软件中下断,适合于新手学习。
这段时间有点忙,要不然就跟它的序列号了,有兴趣的兄弟可以跟一下!
好好学习
3.11
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!