题       目:寻找SysMechanic3.5i 注册码(电脑报2001合订本光盘)
文件大小:1.4MB
适用平台:Win9x/ME/NT/2000
软件简介:System Mechanic是一种维护系统的工具软件,他可以让你的电脑发挥最大的效能。他包含了好几种强大的功能,如移除反安装程序出错的

软件,监视软件安装过程等,功能非常实用。我用它打扫硬盘里面的垃圾文件,注册表无效项目和无效快捷方式,几分钟就搞定了,效率之高!

适合读者:入门级
破解目的:找到注册码

引      子:
正在学习看雪精华III里面的破解文章,刚好学习到了破解System Mechanic的一篇文章,都讲的比较精练,寥寥数语,惟操作起来困难,可能大侠们以

为我们这些菜鸟都水平很高了,其实不然。他们找到的注册码都是所谓集中在一个地方的,我找的过程是分别出现的3次,不太一样。我就自己摸索着找

到了注册号,写的稍微详细一些,毕竟为了菜鸟的提高嘛!毕竟是我自己找到的注册码,我很高兴,感谢大侠们的文章。作为送给大家的元旦礼物吧!

元旦快乐!
我的光盘内刚好有这个软件,立即安装试用一下。刚刚启动程序,突然“喀哒”一声,机器重新启动,没有看到我期望的软件界面,我很纳闷,我以为

这个软件需要重启呢,结果后来才知道这个软件防SOFTICE,因为我加载了SOFTICE,自然无法启动。这个软件用ASPACK2.11b加壳了,我用Aspack die

去壳,虽然提示成功,但是却无法用W32DASM反汇编,里面空空如也,很多软件都这样,看雪说是里面可能有自校验,可是我连代码都看不到,也无从知

道自校验在哪里?我感到很纳闷,更激发了我非要找出它的注册码的决心!今天晚上用了一个小时连破解加写这篇文章。同时对精华III里面的精彩文章

表示感谢。那里写的比较简略,我这里就多罗嗦几句,献丑了!希望不要扔鸡蛋哟!!:)下面且听分解。。。。

这个顽固的东西防SOFTICE,我没有那个frogice软件,就是所谓烟幕弹软件,可以欺骗一些设防的软件。我只好不自动加载SoftICE了。我请出国人的

骄傲来TRW。首先启动那个SysMechanic破软件,点击“Purchase”按钮,然后点击最后一个按钮,就是所谓的“如果你是获得许可的用户,请输入你的

用户名和系列号”,砰,输入对话框打开了。在里面输入wanggang,然后输入系列号,66666 77777 8888888888,Ctr+N唤出TRW,下bpx hmemcpy断

点。F5退出,点击OK按钮被拦住。下pmodule直接切换到主程序领空内,可以先按F10粗跟踪,发现在:00496398出错。重新来过即可,拦住后下

pmodule直接切换到主程序领空内,不过还离目标有点距离,我们继续按F12 八次,然后F10跟踪,直到返回到下面附近没有RET命令的程序段,然后bd*

屏蔽断点。

0167:004961D6 FF75F8           PUSH     DWORD [EBP-08]   //我们来到这里
0167:004961D9 68D8634900       PUSH     DWORD 004963D8
0167:004961DE 8D55F4           LEA      EDX,[EBP-0C]
0167:004961E1 8B8300020000     MOV      EAX,[EBX+0200]
0167:004961E7 E80C59FCFF       CALL     0045BAF8
0167:004961EC FF75F4           PUSH     DWORD [EBP-0C]
0167:004961EF 68D8634900       PUSH     DWORD 004963D8
0167:004961F4 8D55F0           LEA      EDX,[EBP-10]
0167:004961F7 8B8304020000     MOV      EAX,[EBX+0204]
0167:004961FD E8F658FCFF       CALL     0045BAF8
0167:00496202 FF75F0           PUSH     DWORD [EBP-10]
0167:00496205 8D45FC           LEA      EAX,[EBP-04]
0167:00496208 BA05000000       MOV      EDX,05
0167:0049620D E82ADDF6FF       CALL     00403F3C
0167:00496212 8D55EC           LEA      EDX,[EBP-14]
0167:00496215 8B83DC010000     MOV      EAX,[EBX+01DC]
0167:0049621B E84CD2F8FF       CALL     0042346C
0167:00496220 8B45EC           MOV      EAX,[EBP-14]
0167:00496223 8B55FC           MOV      EDX,[EBP-04]
0167:00496226 E88575FFFF       CALL     0048D7B0       //这个CALL把用户名改为大写,并验证是否在黑名单上
0167:0049622B 84C0             TEST     AL,AL
0167:0049622D 740F             JZ       0049623E           //跳则活,不要修改标志
0167:0049622F E82C71FFFF       CALL     0048D360
0167:00496234 E8D7ADFFFF       CALL     00491010
0167:00496239 E95F010000       JMP      0049639D
0167:0049623E E859ABFFFF       CALL     00490D9C       //验证黑名单
0167:00496243 84C0             TEST     AL,AL
0167:00496245 740A             JZ       00496251       //跳则活,不要修改标志
0167:00496247 E8C4ADFFFF       CALL     00491010
0167:0049624C E94C010000       JMP      0049639D
0167:00496251 B201             MOV      DL,01
0167:00496253 8B83F8010000     MOV      EAX,[EBX+01F8]
0167:00496259 E86AD1F8FF       CALL     004233C8
0167:0049625E 33F6             XOR      ESI,ESI
0167:00496260 8BC3             MOV      EAX,EBX
0167:00496262 E879F6FFFF       CALL     004958E0
0167:00496267 84C0             TEST     AL,AL
0167:00496269 0F842E010000     JZ       NEAR 0049639D  //不跳,不要修改标志
0167:0049626F A138F15000       MOV      EAX,[0050F138]
0167:00496274 803800           CMP      BYTE [EAX],00
0167:00496277 7439             JZ       004962B2       //跳,不要修改标志
0167:00496279 8D55EC           LEA      EDX,[EBP-14]
0167:0049627C 8B83DC010000     MOV      EAX,[EBX+01DC]
0167:00496282 E8E5D1F8FF       CALL     0042346C
0167:00496287 8B45EC           MOV      EAX,[EBP-14]
0167:0049628A 8D4DF8           LEA      ECX,[EBP-08]
0167:0049628D BA05000000       MOV      EDX,05
0167:00496292 E8B587FFFF       CALL     0048EA4C
0167:00496297 8B45F8           MOV      EAX,[EBP-08]
0167:0049629A 8B55FC           MOV      EDX,[EBP-04]
0167:0049629D E8EADCF6FF       CALL     00403F8C
0167:004962A2 0F859A000000     JNZ      NEAR 00496342
0167:004962A8 BE05000000       MOV      ESI,05
0167:004962AD E990000000       JMP      00496342
0167:004962B2 8D55EC           LEA      EDX,[EBP-14]
0167:004962B5 8B83DC010000     MOV      EAX,[EBX+01DC]
0167:004962BB E8ACD1F8FF       CALL     0042346C
0167:004962C0 8B45EC           MOV      EAX,[EBP-14]
0167:004962C3 8D4DF8           LEA      ECX,[EBP-08]
0167:004962C6 BA01000000       MOV      EDX,01
0167:004962CB E87C87FFFF       CALL     0048EA4C
0167:004962D0 8B45F8           MOV      EAX,[EBP-08]
0167:004962D3 8B55FC           MOV      EDX,[EBP-04]   
0167:004962D6 E8B1DCF6FF       CALL     00403F8C      //此处d eax出现第一个标准版序列号。此CALL 拿这个序列号和你输入的序列号对比

,相同则玩完。
0167:004962DB 7505             JNZ      004962E2     //跳,不要修改标志
0167:004962DD BE01000000       MOV      ESI,01
0167:004962E2 8D55EC           LEA      EDX,[EBP-14]
0167:004962E5 8B83DC010000     MOV      EAX,[EBX+01DC]
0167:004962EB E87CD1F8FF       CALL     0042346C
0167:004962F0 8B45EC           MOV      EAX,[EBP-14]
0167:004962F3 8D4DF8           LEA      ECX,[EBP-08]
0167:004962F6 BA02000000       MOV      EDX,02
0167:004962FB E84C87FFFF       CALL     0048EA4C
0167:00496300 8B45F8           MOV      EAX,[EBP-08]
0167:00496303 8B55FC           MOV      EDX,[EBP-04]
0167:00496306 E881DCF6FF       CALL     00403F8C     //此处d eax出现第二个专业版序列号。此CALL 拿这个序列号和你输入的序列号对比,

相同则玩完。
0167:0049630B 7505             JNZ      00496312
0167:0049630D BE02000000       MOV      ESI,02
0167:00496312 8D55EC           LEA      EDX,[EBP-14]
0167:00496315 8B83DC010000     MOV      EAX,[EBX+01DC]
0167:0049631B E84CD1F8FF       CALL     0042346C
0167:00496320 8B45EC           MOV      EAX,[EBP-14]
0167:00496323 8D4DF8           LEA      ECX,[EBP-08]
0167:00496326 BA03000000       MOV      EDX,03
0167:0049632B E81C87FFFF       CALL     0048EA4C
0167:00496330 8B45F8           MOV      EAX,[EBP-08]
0167:00496333 8B55FC           MOV      EDX,[EBP-04]  
0167:00496336 E851DCF6FF       CALL     00403F8C   //此处d eax出现第三个工业版序列号,此序列号是“真”序列号。此CALL 拿这个真序列

号和你输入的序列号对比,“不”相同则玩完。
0167:0049633B 7505             JNZ      00496342        //跳,不要修改标志
0167:0049633D BE03000000       MOV      ESI,03
0167:00496342 4E               DEC      ESI
0167:00496343 740D             JZ       00496352    \    这三个JZ判断的任何一个,只要修改标志即可到达光明的地方                  

                                                     |
0167:00496345 4E               DEC      ESI          |   可以用r fl z修改Z标志,使程序转向。我不明白为什么搞了3个判断?
0167:00496346 741B             JZ       00496363     |    
0167:00496348 4E               DEC      ESI          |
0167:00496349 7429             JZ       00496374    /    
0167:0049634B 83EE02           SUB      ESI,BYTE +02
0167:0049634E 7435             JZ       00496385      //如果不修改上面3个JZ,此处是最后的活路了,修改标志r fl z即可改变方向。
0167:00496350 EB44             JMP      SHORT 00496396 //你看看这个JMP跳到哪里?给你吃闭门羹。  
0167:00496352 8B4DFC           MOV      ECX,[EBP-04]
0167:00496355 BA01000000       MOV      EDX,01
0167:0049635A 8BC3             MOV      EAX,EBX
0167:0049635C E8BBF7FFFF       CALL     00495B1C
0167:00496361 EB3A             JMP      SHORT 0049639D
0167:00496363 8B4DFC           MOV      ECX,[EBP-04]
0167:00496366 BA02000000       MOV      EDX,02
0167:0049636B 8BC3             MOV      EAX,EBX
0167:0049636D E8AAF7FFFF       CALL     00495B1C
0167:00496372 EB29             JMP      SHORT 0049639D
0167:00496374 8B4DFC           MOV      ECX,[EBP-04]
0167:00496377 BA03000000       MOV      EDX,03
0167:0049637C 8BC3             MOV      EAX,EBX
0167:0049637E E899F7FFFF       CALL     00495B1C               
0167:00496383 EB18             JMP      SHORT 0049639D
0167:00496385 8B4DFC           MOV      ECX,[EBP-04]
0167:00496388 BA05000000       MOV      EDX,05
0167:0049638D 8BC3             MOV      EAX,EBX
0167:0049638F E888F7FFFF       CALL     00495B1C   //这个函数(上面也有3个呢)是把你的用户名和序列号写入注册表内的。
0167:00496394 EB07             JMP      SHORT 0049639D
0167:00496396 8BC3             MOV      EAX,EBX    //如果跳到这里就玩完了,下面这个CALL就是给你吃闭门羹。
0167:00496398 E8E7F5FFFF       CALL     00495984   //错误提示窗口
0167:0049639D 33C0             XOR      EAX,EAX
0167:0049639F 5A               POP      EDX
0167:004963A0 59               POP      ECX
0167:004963A1 59               POP      ECX
0167:004963A2 648910           MOV      [FS:EAX],EDX
0167:004963A5 68C7634900       PUSH     DWORD 004963C7
0167:004963AA 8D45EC           LEA      EAX,[EBP-14]
0167:004963AD E84ED8F6FF       CALL     00403C00
0167:004963B2 8D45F0           LEA      EAX,[EBP-10]
0167:004963B5 BA04000000       MOV      EDX,04
0167:004963BA E865D8F6FF       CALL     00403C24
0167:004963BF C3               RET     
==========================================
你如果用F8跟进那个00496226的CALL  0048D7B0来到下面的代码,你就发现都是在验证黑名单。   
0167:0048D7B1  MOV      EBP,ESP
0167:0048D7B3  ADD      ESP,BYTE -0C
0167:0048D7B6  PUSH     EBX
0167:0048D7B7  XOR      ECX,ECX
0167:0048D7B9  MOV      [EBP-0C],ECX
0167:0048D7BC  MOV      [EBP-08],EDX
0167:0048D7BF  MOV      [EBP-04],EAX
0167:0048D7C2  MOV      EAX,[EBP-04]
0167:0048D7C5  CALL     00404030
0167:0048D7CA  MOV      EAX,[EBP-08]
0167:0048D7CD  CALL     00404030
0167:0048D7D2  XOR      EAX,EAX
0167:0048D7D4  PUSH     EBP
0167:0048D7D5  PUSH     DWORD 0048DF44
0167:0048D7DA  PUSH     DWORD [FS:EAX]
0167:0048D7DD  MOV      [FS:EAX],ESP
下面这个结构形式重复了400多行呢,我为了节省篇幅,把第一个列到这里了,其他省略。
0167:0048D7E0  LEA      EDX,[EBP-0C]       \
0167:0048D7E3  MOV      EAX,[EBP-04]       | 
0167:0048D7E6  CALL     00407EAC             |
0167:0048D7EB  MOV      EAX,[EBP-0C]      |
0167:0048D7EE  MOV      EDX,0048DF5C    |    //送给EDX的地址在下面的每个结构各不相同啦。
0167:0048D7F3  CALL     00403F8C             |
0167:0048D7F8  JZ       NEAR 0048DF27     /
后边略去430多行代码,都是类似上面这个形式的。
==========================================

后记:

由于在使用TRW抓取汇编代码的时候用错了命令,本来用U命令,结果我用了D命令,打开抓取的文件一看,全是16进制代码,我只好重新抓代码了。因此

总共花了2个小时,包括破解和写这个教程。存在不足之处,请大侠不吝指教!

这个可是我自己独立完成的哟,以前都是爆破,也就是“豪夺”的办法,真是献丑了。不过爆破的多了,也就可以练好手了,接着就可以采取“智取”

的办法发现注册码或者发现注册码的计算方法了。

第一个注册码:69855-ST593-0776938439
第二个注册码:63915-PR999-6137332499
第三个注册码:74806-ND088-5626443588  
我们使用第三个注册码注册成功,是Industrial Edition!
成功注册后,注册码放在注册表:HCU\software\Iolo\System mechanic\ 下的Serial,UserID键内。

总结:

1.这种形式的典型结构,值得我们菜鸟注意了,的确是值得关注。
CALL     xxxxxxxx   ------调用函数   //这样的CALL 一般需要跟入。
TEST     AL,AL      ------测试标志位
JZ       yyyyyyyy   ------跳转
2.为了快速进行“大块大块”地跟踪,对于普通代码块(指不含测试TEST和跳转指令Jxx),建议用F6把焦点切换进代码窗口内,然后用箭头键向下翻

页,到达某个指令处(要求此指令之前不得含测试TEST和跳转指令Jxx),此地址处和前面EIP决定的地址块就是你选的普通代码块,直接按F7即可大块

地执行指令。
对于循环结果的跟踪也是类似,就是把光标移动到循环结构的后面一条指令,然后F7即可跳过循环了,否则多么费时间啊。痛苦。。。。。。:)




QduWg
技术讨论请MAILTO:
qduwg@163.com