飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 1965|回复: 0

恨浩申请加入[PYG](四)

[复制链接]

该用户从未签到

发表于 2005-3-19 18:47:29 | 显示全部楼层 |阅读模式
TMPGEnc PLUS 2.58.44.152 简体汉化版 2K3下万能断点爆破

【软件功能】:日本人编的AVI==>MPEG转换程序
【软件主页】:http://www.pegasys-inc.com/
【功能限制】:没发现,14天试用时间
破解工具】:OllyDbg、W32Dasm、PEiD
【本文作者】:好好学习(恨浩)
【目标下载】:http://www.softsea.net/download.php?id=112025

用PEiD检测,无壳,Borland Delphi 4.0 - 5.0
运行TMPGEnc.exe,出现注册画面,有“注册”、“试用”、“退出”三个选项。
点击“注册”,输入假序列号“123456”,提示“错误的序列号”
修改系统时间到30天后,运行TMPGEnc,提示“试用期已结束”,试用按钮为灰色不可用。调回系统时间,还是如此。

W32Dasm上阵,察看串式参考,全是乱码,无可用信息

用万能断点的方法,在(2K3操作系统)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了!



小结:
简单爆破(可能程序运行会有问题),但主要是运用万能断点在无法找到可用信息的软件中下断,也适用于加壳的程序不脱壳追注册码。




                                                    好好学习(恨浩)

[ Last edited by 恨浩 on 2005-3-19 at 06:56 PM ]
PYG19周年生日快乐!
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表