老文章档案 · 2003 年

rufeng教程 第三章 破解windows 95软件的方法

天下资讯 · 破解文章 · 2003-09-23 · 作者:人气: · 出处:赢政天下整理收藏)

一.可注册 windows 95软体.

特徵是当未注册时, 一进去会有延迟画面, 可能有时效限制(30天後不能用之类),在某个地方有个注册功能, 打开之後是个对话框, 要求输入密码, 有时还有姓名和公司名称.

程式如何判断注册与否?

通常两种方式:

1. 在程式码的某一处, 藏有 "注册印记". 如00表未注册, 01为已注册. 当然也有很奇怪的数字, 如 f8 03 表已注册.

2. install 时程式开 *.ini, 或写入 win.ini, 把资料存在那里.

程式如何保护:

最通常是用你的name当作key, 经过复杂演算法, 算出注册码。但也有一些并不是用你的name当作key算注册码的,而是name与注册码无关,注册码是固定,name是随便输入就可以了。对于前者,较容易可算出注册码,而后者要算注册码就不是一件容易的事了。关于两者的具体处理方法,会在下面文章详细介绍。

注册处理:

1. 当输入name, company, password 後, 立即比对, 正确的话立即做注册处理, 以後再也不判断, 不正确要求再输入. 不输入 name 的话, 保持 shareware 版.

2. 同1, 但以後一执行程式还是会判断.

3. 输入时不比对, 只写入资料於 *.ini, 程式执行时再比对.

对于第一种情况,是最容易破解的了,因为只要找到软件注册时的比较失败窗口的call,在向上找一找,就可以找到一个可以跳过这个call的jz或jnz,只要把这个jz改为jmp,就可以随便注册了,因为它们的只进行一次性的比较,所以只要在注册时强行使它们注册成功,则以后就不用管了。

它们的一般形式为:

xxxx:xxxxxxxx call 比较注册码的call

xxxx:xxxxxxxx test eax , eax

xxxx:xxxxxxxx jnz (或jz) xxxxxxxx 只要把这个jnz 改为jmp 就可以了

xxxx:xxxxxxxx call 比较失败的窗口的call

对于第二,第三种情况,就不能这么简单地破解了,而要追进比较注册码的call里去,如果可以算出注册码的,就万事大吉了,如果不能,就比较地麻烦了,只有按下面介绍的方法进行crack了,要知软件始终不是你写的,所以不可能所有的软件都可以crack的,只能各凭功力了。对于不能简单地算出注册码的软件,我们的唯一的方法是先在比较注册码的call里,设一个断点,然后再重新运行软件,如果软件被中断的,那么这个软件就有八成可以破解了,只要在比较注册码的call里找到那些jz或jnz会导致eax的值变化,把这些指令改为nop或jmp(视具体情况而定),则一般都可以迎韧而解了。

对于第一种情况的破解实例:

Hex32bit

这是一个多功能的编辑软件,有很强大的功能,是一个很好用的32位工具软件。

1.输入Registeration code:48484848(随意)

2.按CTRL-D 进入WIN S-ICE

3.下S 30:0 LFFFFFFF '48484848' 得一地址30:XXXXXXXX

4.下BPM 30:XXXXXXXX R

5.按F5 退出

6.用鼠标击Register

7.程序被WIN S-ICE 中断

8.按F12回到Hworks32的天空

9.直按F10至以下程式:

0137:0041635F CALL 00426A70 比较密码的CALL

0137:00416364 ADD ESP , 04

0137:00416367 MOV [EBP-10] , EAX

0137:0041636A CMP DWORD PTR [ EBP-10 ] , 00

0137:0041636E JZ 004163ED 错误时跳,只要改为nop…………就OK了

:

:

0137:004163E8 JMP 00416440

:

:

0137:0041640D CALL 004354EE 出现注册失败窗口的CALL

所以下code on 抄下机器代码,打开Hworks32.exe

找0f8479000000

改909090909090

OK!!!完工。

对于第二种情况的破解实例:

FLMASK3.00

1. 用WINSOFT-ICE载入FLMASK32.EXE

2. 输入Your Name :Ru Feng(随意)

Registration Key : 48484848(随意)

3. 按CTRL-D进入WINSOFT-ICE ,下S 30:0 LFFFFFFFF '48484848'得一地址30:XXXX

4. 下BPM 30:XXXX R

5. 按F5退出

6. 确定Registration

7. 程序被WINSOFT-ICE中断

8. 按F12跳到FLMASK32的天空

9. 按F10直到以下程式:

0137:00452D1F CALL 00443118 比较注册码CALL

0137:00452D24 TEST AL , AL

0137:00452D24 JZ 00452E89 不正确时就跳

:

:

0137:00452E89 MOV DX , 0030

0137:00452E8D MOV EAX , 00001CFC

0137:00452E92 CALL 00443A54 出现错误窗口

10. 所以我们追进0137:00452D1F CALL 00443118中去

一直走下支会见到以下程式:

0137:00443145 CALL 00403BCC

0137:0044314A CMP EAX , 08 比较注册码是否8个数字

0137:0044314D JNZ 00443209 不等则跳,跳就失败

:

:

0137:004431BF CALL 004076A4 比较注册码是否正确

0137:004431BF CMP ESI , EAX

0137:004431C6 JNZ 00443209 不正确则跳

所以由汇编知识可知,只要把CMP ESI,EAX改为MOV EAX,ESI

把JNZ 00443209 改为NOP NOP

把JNZ 00443209 改为NOP NOP

则随意输入数字都可以注册了。

赶快下CODE ON指令抄下程序代码:

码0F85B6000000

改909090909090

码3BF07541

改8BC69090

用ULTRAEDIT32改FLMASK32.EXE就行了。

对于第三种情况的破解实例:

winzip6.3

1. 输入Name:Ru Feng(随意)

2. 输入Registeration:48484848(随意)

3. 按CTRL—D 进入WIN S-ICE

4. 下S 30:0 LFFFFFFF '48484848' 得一地址30:XXXXXXXX

5. 下BPM 30:XXXXXXXX R

6. 按F5 退出

7. 用鼠标击Ok

8. 程序被WIN S-ICE 中断

9. 按F12回到WINZIP的天空

10. 直按F10至以下程式:

0137:00409D89 CALL 004096EA 比较注册码的CALL

0137:00409D8E TEST EAX,EAX 注册码不正确时EAX=00000000

0137:00409D90 JNZ 00409DD3 当注册码正确就跳

:

:

0137:00409DA8 CALL 004230FD 弹出注册失败的窗口

11.追进CALL 004096EA 按F10一直走,会见到以下程式

0137:004097FC PUSH EAX

0137:004097FD CALL 004465D0 比较注册码的CALL

0137:00409802 POP ECX

0137:00409803 POP ECX

0137:00409804 NEG EAX

0137:00409806 SBB EAX,EAX

0137:00409808 INC EAX

0137:00409809 MOV [004728F8],EAX 当EAX=00000001时注册码正确

0137:0040980E CMP DWORD PTR [004728F8] , 00

0137:00409815 JNZ 004098A6 正确时跳

12.追进CALL 004465D0 按F10一直走,会见到以下程式

0137:004465EC OR AL,AL

0137:004465EE JZ 0044661E

0137:004465F0 MOV AL,[ESI] 在此下D DS:ESI可看到所填写的注册码‘48484848’

0137:004465F2 INC ESI

0137:004465F3 MOV AH,[EDI] 在此下D DS:EDI 可看到正确的注册码‘8A0A07ab’

0137:004465F5 INC EDI

0137:004465F6 CMP AH,AL 比较注册码地方

0137:004465F8 JZ 004465EC

你用Ru Feng作名字可找到‘8A0A07ab’这组注册码。

而对于那些注册码是固定的软件,破解就不是那么有规律了,只能各凭技巧了,具体情况具体分析了。

例:

winplay3 2.0

1. 输入Your Name:Ru Feng(随意)

2. 输入Registeration code:48484848(随意)

3. 按CTRL—D 进入WIN S-ICE

4. 下S 30:0 LFFFFFFF '48484848' 得一地址30:XXXXXXXX

5. 下BPM 30:XXXXXXXX R

6. 按F5 退出

7. 用鼠标击Register

8. 程序被WIN S-ICE 中断

9. 按F12回到WINPLAY3的天空

10. 直按F10至以下程式:

2C6F:XXXX CALL 2F17: 3D72 比较注册码

2C6F:XXXX OR DX,AX

2C6F:XXXX JNZ C632 不跳则显示成功窗口

2C6F:C632 PUSH 21

2C6F:C634 PUSH 0000FFFF

2C6F:C63A CALL 2C6F: 22AE 出现错误窗口

11. 按F8追进去CALL 2F17: 3D72

2F17:3E76 CALL 2F17: 357E

再追进去

2F17:35C6 PUSH DWORD PTR [BP+06]

2F17:35CA CALL 2F17: 340E

追进去至以下比较程式:

2F17:346F XOR AX,AX

REPNZ SCASB

NOT CX

DEC CX

CMP CX,12 表示正确注册码有18个数字

JNZ 3554 不等就跳,一跳就完了,所以改为四个NOP。

CMP BYTE PTR ES:[SI+06], 2D 说明正确注册码的格式为:

XXXXXX-XXXXXX-XXXX

JNZ 354E 不等就跳,一跳就完了,所以改为四个NOP。

CMP BYTE PTR ES:[SI+0D],2D

JNZ 354E 不等就跳,一跳就完了,所以改为四个NOP。

…………….

…………….

CALL 30F7: 25C0 比较注册码

ADD SP , 02

CMP AX , SI

JZ 34F6 相等就跳,所以改为JMP 34F6

……………..

……………..

CALL 30F7: 25C0

ADD SP , 02

MOV SI , AX

CMP SI, [1D36]

JGE 3522 跳则正确,不跳则错误,所以改为JMP 3522

…………….

…………….

12. 下CODE ON 把所有要改的机器码都抄下来,用ULTRAEDIT32在L3AUDIO.DLL中

修改。

机器码 改

0F85D700 90909090

0F85C800 90909090

0F85BF00 90909090

83C4023BC67406 83C4023BC6EB06

8BF03B36361D7D06 8BF03B36361D7D06

(出处:赢政天下整理收藏)

相关资讯:

相关软件:

→ 特别推荐

→ 热点TOP10

我为人人《《==》》人人为我

关于我们 |

帮助(?)

| 广告服务 |

版权声明 |

商业合作 |

发展历程 |

加盟我们 |

联系我们

Copyright ? 1998-2003 winzheng.com

All Rights Reserved.

特别感谢 蓝芒科技 提供下载站及论坛服务器

2003-2004 年,宽带刚刚普及,下载站的文章区是许多人学电脑的第一课堂。
🕰 → 🤖 从那时到现在

当年一篇教程能让一台电脑焕然一新;今天的效率工具换成了 AI。 想知道当下最可靠的 AI 模型怎么选?看 赢政指数——我们用了 28 年的选软件严谨,现在用来评测大模型。

档案性质声明:本页为赢政天下(1998-2011)老文章的历史档案复原, 内容反映当年发表时的原貌——包括当年的技术表述、软件版本与观点,部分方法在今天已不适用或不合规,仅作互联网历史记录与研究用途, 不提供任何形式的下载。原始数据经由公共网络存档(Internet Archive)复原。发现问题请联系我们
← 返回老文章档案 · 软件史档案馆 · 赢政天下站史