老文章档案 · 2003 年

象棋大战1.05版(6千字) 算法分析

赢政天下 [WINZHENG.COM] · 网络学院 · 2003-07-24 · 作者:nzinzi 人气: · 出处:赢政天下整理收藏)

从未在看雪上发过帖子,都不好意思了~

所以今天写上一个初级文章给菜鸟看~对了我自己也是很菜~

随便到中国共享软件注册中心拉了一个软件叫象棋大战1.05版,写了一篇。

对不起作者了,我也不是故意的,谁叫游戏类软件第一个就是你的软了件;

第一次写知道有非常多不足~

破解 象棋大战1.05版

作 者:nzinzi

破解时间:2002-11-2

软件简介:作者的美工非常不错~

限 制:试玩10天,

注册费用:$10

破解工具:TRW 1.22 w32Dasm

难 度:易

我习惯性先用W32DASM反汇编,然后用串式参考找到了“你输入的注册码不正确”,来到了“004073F6”,然后我用查找“004073F4”(高手不要笑啊,小弟就这个水平),查找到“00407245”这里,用TRW 下一个断点BPX 00407242,哈哈然后跟着下面一步一步很快就能得出

注册码了。瞒简单的~

:00407242 83F909 cmp ecx, 00000009 比较注册码是否有9位~

:00407245 0F85A9010000 jne 004073F4 失败跳转到出错的消息框

:0040724B 8A442420 mov al, byte ptr [esp+20] 把第一位注册码移入AL

:0040724F 3C4D cmp al, 4D

:00407251 740C je 0040725F

:00407253 3C41 cmp al, 41

:00407255 7408 je 0040725F

:00407257 3C4F cmp al, 4F 比较第一位注册码是否等于M,A,O 其中一个ASCII

:00407259 0F8595010000 jne 004073F4

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:

|:00407251(C), :00407255(C)

|

:0040725F 8A442421 mov al, byte ptr [esp+21] 第二位的比较

:00407263 3C57 cmp al, 57

:00407265 7410 je 00407277

:00407267 3C45 cmp al, 45

:00407269 740C je 00407277

:0040726B 3C4E cmp al, 4E

:0040726D 7408 je 00407277

:0040726F 3C47 cmp al, 47 比较第二位注册码是否等于W,E,N ,G其中一个ASCII

:00407271 0F857D010000 jne 004073F4

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:

|:00407265(C), :00407269(C), :0040726D(C)

|

:00407277 0FBE442422 movsx eax, byte ptr [esp+22] 第三位的比较

:0040727C 99 cdq

:0040727D B911000000 mov ecx, 00000011

:00407282 F7F9 idiv ecx

:00407284 85D2 test edx, edx

:00407286 0F8568010000 jne 004073F4 比较第三位ASCII是否是11的倍数比如:33,44。

:0040728C 8A442423 mov al, byte ptr [esp+23] 第四位的比较

:00407290 3C4A cmp al, 4A

:00407292 7410 je 004072A4

:00407294 3C49 cmp al, 49

:00407296 740C je 004072A4

:00407298 3C41 cmp al, 41

:0040729A 7408 je 004072A4

:0040729C 3C4E cmp al, 4E 比较第四位注册码是否等于J,I,A ,N其中一个ASCII

:0040729E 0F8550010000 jne 004073F4

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:

|:00407292(C), :00407296(C), :0040729A(C)

|

:004072A4 8A442424 mov al, byte ptr [esp+24] 第五位的比较

:004072A8 3C58 cmp al, 58

:004072AA 740C je 004072B8

:004072AC 3C49 cmp al, 49

:004072AE 7408 je 004072B8

:004072B0 3C55 cmp al, 55

:004072B2 0F853C010000 jne 004073F4 比较第五位注册码是否等于X,I,U其中一个ASCII

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:

|:004072AA(C), :004072AE(C)

|

:004072B8 0FBE442425 movsx eax, byte ptr [esp+25] 第六位的比较

:004072BD 99 cdq

:004072BE B903000000 mov ecx, 00000003

:004072C3 F7F9 idiv ecx

:004072C5 85D2 test edx, edx

:004072C7 0F8527010000 jne 004073F4 比较第六位ASCII是否是03的倍数比如:33,36。

:004072CD 8A442426 mov al, byte ptr [esp+26] 第七位的比较

:004072D1 3C51 cmp al, 51

:004072D3 7408 je 004072DD

:004072D5 3C49 cmp al, 49

:004072D7 0F8517010000 jne 004073F4 比较第七位注册码是否等于Q,I其中一个ASCII

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:004072D3(C)

|

:004072DD 8A442427 mov al, byte ptr [esp+27] 第八位的比较

:004072E1 3C59 cmp al, 59

:004072E3 740C je 004072F1

:004072E5 3C55 cmp al, 55

:004072E7 7408 je 004072F1

:004072E9 3C4E cmp al, 4E

:004072EB 0F8503010000 jne 004073F4 比较第八位注册码是否等于Y,U,N其中一个ASCII

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:

|:004072E3(C), :004072E7(C)

|

:004072F1 0FBE442428 movsx eax, byte ptr [esp+28] 第九位的比较

:004072F6 99 cdq

:004072F7 B90D000000 mov ecx, 0000000D

:004072FC F7F9 idiv ecx

:004072FE 85D2 test edx, edx

:00407300 0F85EE000000 jne 004073F4 比较第九位ASCII是否是0D的倍数

:00407306 8D4C2410 lea ecx, dword ptr [esp+10]

:0040730A E8F6960000 call 00410A05

。。。。。。

* Reference To: USER32.ShowWindow, Ord:026Ah

|

:0040739F FF15AC734100 Call dword ptr [004173AC]

:004073A5 6A00 push 00000000

* Possible StringData Ref from Data Obj ->"谢谢"

|

:004073A7 68CCB14100 push 0041B1CC 注册成功的对话框

* Possible StringData Ref from Data Obj ->"非常感谢您的注册!"

|

:004073AC 68B8B14100 push 0041B1B8

:004073B1 53 push ebx

。。。。。。

|

:004073F4 6A00 push 00000000

* Possible StringData Ref from Data Obj ->"错误"

|

:004073F6 68B0B14100 push 0041B1B0 失败的对话框

* Possible StringData Ref from Data Obj ->"您输入的注册码不正确!"

|

:004073FB 6898B14100 push 0041B198

:00407400 53 push ebx

我自己用的注册码是MW3JX3QY4,注册名随便~~ (出处:赢政天下整理收藏)

相关文章:

·语音界面2.0算法分析及注册机源码!

·侠客系统修改器1.21破解手记--算法分析

·中文拨号上网计时计费器 V4.12注册算法分析

·ClockWise 3.22e注册码算法分析

·CoolClock V1.02注册算法分析

·Directory Scanner v1.5 注册算法分析

·Disk Chief 1.2 简单注册算法分析

·EffeTech HTTP Sniffer 3.2注册算法分析

·eLib2.01算法分析

·EZ MP3 Recorder 1.15 注册算法分析

相关软件:

→ 特别推荐

→ 热点TOP10

关于我们 |

帮助(?)

| 广告服务 |

版权声明 |

商业合作 |

发展历程 |

加盟我们 |

联系我们

Copyright © 1999-2003

winzheng.com All Rights Reserved.

繁体版:由华琦数码技术提供

Powered

by:MeSky.Net

2003-2004 年,宽带刚刚普及,下载站的文章区是许多人学电脑的第一课堂。

档案馆里的相关老软件

🕰 → 🤖 从那时到现在

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

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