• 标 题:疯狂单词v1.6破解 (5千字)
  • 作 者:tieji
  • 时 间:2001-11-2 13:58:37
  • 链 接:http://bbs.pediy.com

破解人 :tieji
破解时间:2001-11-1
破解工具:TRW2000 V1.23  W32dasm黄金版  Procdump  UltraEdit-32
作者主页:http://wordslover.yeah.net
说    明:被公认为智能化程度最高的单词记忆软件。依靠内建的词汇量动态
        估测,自动难度进级,效果自适应复习,随机试题生成等智能块,
        以及36000词条的记法例句记忆库,用户可以轻松进入一种疯狂状态,
        将单词记忆的效率发挥到及至。
先用Fi检测,发现程序有壳,upx v0.62的,用Procdump轻松去壳......

启动软件,填入注册信息:
用户名称:caoxinyu
电子邮箱: caoxinyu@xxxxxxx.com
注册号码:54321123455432112345  <----填20个(为什么?看下面说明)
打开TRW2000,下断点bpx hmemcpy,点确定,被拦下。
Bc* 清断点,pmodule 回程序领空,然后按F12六次(七次就是出现注册失败框了),按F10来到:


:00405F43 8B44243C                mov eax, dword ptr [esp+3C]
:00405F47 8B40F8                  mov eax, dword ptr [eax-08]
:00405F4A 83F814                  cmp eax, 00000014            ;注册码是否为20位
:00405F4D 7413                    je 00405F62                  ;不是就完,是就跳
:00405F4F 6A00                    push 00000000
:00405F51 6A00                    push 00000000
:00405F53 68C8E74700              push 0047E7C8
:00405F58 E8B9B20400              call 00451216  ;出现"对不起,注册号码不正确,您不是合法的注册用户!"
:00405F5D E983000000              jmp 00405FE5
:00405F62 56                      push esi
:00405F63 57                      push edi
:00405F64 33F6                    xor esi, esi
:00405F66 8D7C2448                lea edi, dword ptr [esp+48]
:00405F6A 6A01                    push 00000001
:00405F6C 8D4C2410                lea ecx, dword ptr [esp+10]
:00405F70 56                      push esi
:00405F71 51                      push ecx
:00405F72 8D4C2450                lea ecx, dword ptr [esp+50]
:00405F76 E847CF0300              call 00442EC2
:00405F7B 8B00                    mov eax, dword ptr [eax]
:00405F7D 50                      push eax
:00405F7E E8A2030300              call 00436325
:00405F83 83C404                  add esp, 00000004
:00405F86 8D4C240C                lea ecx, dword ptr [esp+0C]
:00405F8A 8907                    mov dword ptr [edi], eax
:00405F8C E86CF50300              call 004454FD
:00405F91 46                      inc esi
:00405F92 83C704                  add edi, 00000004
:00405F95 83FE14                  cmp esi, 00000014
:00405F98 7CD0                    jl 00405F6A      ;20次循环
:00405F9A 8D4C2410                lea ecx, dword ptr [esp+10]
:00405F9E E8ED5B0000              call 0040BB90       ;关键call,跟进去(见下)
:00405FA3 5F                      pop edi
:00405FA4 5E                      pop esi
:00405FA5 84C0                    test al, al            ;当al不等于零时,下面就跳,即成功
:00405FA7 6A00                    push 00000000
:00405FA9 6A00                    push 00000000
:00405FAB 7507                    jne 00405FB              ;关键跳,跳过去就成功
:00405FAD 68C8E74700              push 0047E7C8            ;出现"对不起,注册号码不正确,您不是合法的注册用户!"
:00405FB2 EB1C                    jmp 00405FD0           ;到此处就完!
:00405FB4 68A8E74700              push 0047E7A8
:00405FB9 E858B20400              call 00451216         ;出现"恭喜,您已经是合法的注册用户!"
:00405FBE 8D4C2408                lea ecx, dword ptr [esp+08]
:00405FC2 E8495D0000              call 0040BD10
:00405FC7 6A00                    push 00000000
:00405FC9 6A00                    push 00000000
:00405FCB 687CE74700              push 0047E77C            ;出现"您需要退出后重新运行疯狂单词使注册生效!"
:00405FD0 E841B20400              call 00451216            ;调出提示框
======================================================================================

上面的:00405F9E E8ED5B0000              call 0040BB90 到这里:

:0040BB90 53                      push ebx
:0040BB91 56                      push esi
:0040BB92 8BF1                    mov esi, ecx
:0040BB94 8D4608                  lea eax, dword ptr [esi+08]
:0040BB97 8D4E34                  lea ecx, dword ptr [esi+34]
:0040BB9A 50                      push eax
:0040BB9B 51                      push ecx
:0040BB9C 8BCE                    mov ecx, esi
:0040BB9E E88DFDFFFF              call 0040B930        ;计算比较注册码,
:0040BBA3 8BCE                    mov ecx, esi
:0040BBA5 8AD8                    mov bl, al          ;将比较结果al放入bl
:0040BBA7 E864010000              call 0040BD10        ;此call好像是比较注册信息中有无opq98@263.net
                                                      ;http://iceworld.126.com/等信息,防破解吧。
:0040BBAC 8AC3                    mov al, bl          ;将比较结果bl放回al
:0040BBAE 5E                      pop esi
:0040BBAF 5B                      pop ebx
:0040BBB0 C3                      ret
==============================================
当然只在注册的地方改改跳转是没有用的,这软件在有限制的地方都计算比较注册码,本人又
无力算出注册码,革命尚未成功,还得继续努力......
比较了几个有限制的地方,发现都有 test al, al  jne 语句 ,只要al不为零即可,
而且在test al, al前都有一个call,这些call的内容与上面的call 0040BB90差不多,看上面的
call:  只要最后的mov a1 ,bl 送入al的不为零即可,而从上面的计算bl肯定为零(除非瞎猫
碰到死耗子,注册码给蒙对了,我可没这么好的运气),分析:将有限制处的mov a1 ,bl  语句nop掉。

调起UltraEdit-32,查8BCE8AD8有八处,分别如下:
8AD8E8640100008AC3改为----->8AD8E8640100009090
8AD8E8340100008AC3改为----->8AD8E8340100009090
8AD8E8040100008AC3改为----->8AD8E8040100009090
8AD8E8D40000008AC3改为----->8AD8E8D40000009090
8AD8E8A40000008AC3改为----->8AD8E8A40000009090
8AD8E8740000008AC3改为----->8AD8E8740000009090
8AD8E8440000008AC3改为----->8AD8E8440000009090
8AD8E8140000008AC3改为----->8AD8E8140000009090

运行,哈!限制全没了。

爆破完成!