题 目:寻找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
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课