PersonalCorpus 版 (精华区)

发信人: Laura (劳拉), 信区: Hacker
标  题: ExamDiff Pro v3.0破解方法
发信站: 哈工大紫丁香 (2003年05月21日15:07:15 星期三), 站内信件

贴上来供大家参考。不是很难,给感兴趣的朋友当初级教程还不错。高手就不必看了。
—————————————————————————————————————
            ExamDiff Pro v3.0破解方法
                Laura   2003-05-14

1.软件说明:
软件名称: ExamDiff Pro V3.0
软件语言: 英文
软件类型: 国外软件 / 应用软件 / 文字处理
运行环境: WinXP, Win2000, NT, WinME, Win9X
授权方式: 共享软件
软件大小: 1.07 MB
开 发 商: http://www.prestosoft.com/
软件简介:ExamDiff能让使用者快速比对两个文字文件的相异之处,并以不同的颜色及指
标标示出来,除了可以自定颜色,还能快速呼叫惯用的文字编辑器来编辑文件内容。不但
功能实用,而且中英文相兼容。

2.破解注册表部分
该软件是共享软件,使用受到时间限制,只能使用30天。第一次运行时会弹出对话框,
告知还有30天的使用时间,当只剩下14天时每天都会再次弹出该对话框。该对话框没有填
写注册码的地方,只有4个选项:
1). I Agree
2). I Disagree
3). Order Online
4). How To Order
当剩余天数显示0时,选择“I Agree”后一些功能就不能再使用了,不能使用的功能列表
为:http://www.prestosoft.com/ps.asp?page=edp_eval。如果卸载该软件并重新安装,
这些功能还是不能够使用。
由此判断,卸载后该软件在注册表中留下了某个标识,使得软件在运行时会判断该软件是
否首次在该机器上安装。同样当使用期限到期时,也会修改注册表中的该项。通过比较和
判断,找到该项是:HKEY_CURRENT_USER\Software\PrestoSoft\ExamDiff Pro\Settings下
的"Enable edit"值,该值设置成1,则表示可以使用列表中的功能,0则表示禁止。
如果这里的"Enable edit"值设置成1,而30天到期的话,一些功能还是不能够使用。因为
判断到期以后会把"Enable edit"值重新设置成0。这里我们导出"Enableedit"为1的注册表
文件,这样对于那些已经使用过期的用户来说,要首先导入注册表文件后,再用破解后的E
xamDiff.exe覆盖。

3.破解时间限制部分
了解到这些以后,我们只要专心的破解该软件的时间限制部分就可以了。首先从弹出的时
间限制的那个对话框着手,拦截显示对话框的函数。通过测试,发现该软件使用了CreateD
ialogIndirectParamA来显示该对话框。进行拦截,经过几次返回(p ret),得到如下代
码并进行修改:
.text:0042CDAB  push    eax
.text:0042CDAC  call    sub_42CE4F
这个call十分重要,其中进行了日期的判断,用30(0x1E)减去了运行的天数,把差值返
回后放在了后边用到的[ebp-10h]。不过对返回值,即eax的处理,我们可以不必理会。
.text:0042CDB1  test    eax, eax 
.text:0042CDB3  jnz     short loc_42CDB8
.text:0042CDB5  push        1
.text:0042CDB7  pop     edi
.text:0042CDB8
.text:0042CDB8  loc_42CDB8: 
.text:0042CDB8  push    dword ptr [ebp-10h]
[ebp-10h]保存的就是得到的时间差值,我们希望差值永远是0。下边的函数调用需要该差
值作为参数,因此我们需要把[ebp-10h]改成0。这条语句原来的编码是ff 75 f0,现在我
们把它改成push 0、nop,编码是6a 00 90。
.text:0042CDBB  mov     ecx, ebx
.text:0042CDBD  call    sub_431961
下边是对该差值的一些比较,这里我们不用管。只要能跳过那段判断就可以了。
.text:0042CDC2  mov     eax, [ebx+598h]
.text:0042CDC8  mov     esi, eax
.text:0042CDCA  sub     esi, [ebp-10h]
.text:0042CDCD  cmp     [ebp-10h], eax
.text:0042CDD0  jb      short loc_42CDD4
.text:0042CDD2  xor     esi, esi
.text:0042CDD4
.text:0042CDD4  loc_42CDD4:
下边两句比较关键。
.text:0042CDD4  cmp     dword ptr [ebx+0C8h], 0
.text:0042CDDB  jnz     short loc_42CE2C
这里是比较关键的地方。这里比较的是注册表中的某个值,[ebx+c8h]位置是1才能满足要
求。因此我们把jnz short loc_42CE2C这句改掉,其编码是75 4f,直接改成jmp short 
loc_42CE2C,编码是eb 4f。
……
……
.text:0042CE2C  loc_42CE2C:
.text:0042CE2C  push    1
.text:0042CE2E  pop     esi 
.text:0042CE2F  loc_42CE2F:
.text:0042CE2F  or      dword ptr [ebp-4], 0FFFFFFFFh
.text:0042CE33  lea     ecx, [ebp-148h]
.text:0042CE39  call    sub_4833AD
……
.text:0042CE4E  retn

经过测试,修改后的ExamDiff.exe已经去掉了30天的时间限制,并且解决了注册表中"Enab
le edit"的问题,破解成功完成。

--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.205.240.230]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:4.310毫秒