老文章档案 · 2003 年

象棋叁谋 算法分析

破解教程 · 算法分析 · 2003-07-24 · 作者:fxyang 人气: · 出处:赢政天下整理收藏)

注册码的计算过程比较简单,正好用来练习。

注册码的第一个条件是必须九位且必须是数字

0044FD9C PUSH EBX

0044FD9D PUSH ESI

0044FD9E PUSH EDI

0044FD9F MOV EBX,EDX

0044FDA1 XOR ECX,ECX

0044FDA3 XOR EAX,EAX

0044FDA5 MOV EDX,EBX

0044FDA7 /MOVSX ESI,BYTE PTR DS:[EDX] \

0044FDAA |LEA EDI,DWORD PTR DS:[EAX+1] |

0044FDAD |INC EAX |

0044FDAE |IMUL ESI,EDI }注册码的前八位的ASCII值乘它的位数相加

0044FDB1 |ADD ECX,ESI |

0044FDB3 |INC EDX |

0044FDB4 |CMP EAX,8 /

0044FDB7 \JL SHORT ADVISOR.0044FDA7

0044FDB9 MOV EAX,ECX

0044FDBB MOV EDI,0A ;EDI 赋值

0044FDC0 CDQ ;EDX 清零

0044FDC1 IDIV EDI ;EAX mod EDI ==>值放到 EDX

0044FDC3 MOVSX ESI,BYTE PTR DS:[EBX+8]

0044FDC7 ADD ESI,-30 ; 注册码判断的第二个条件:

0044FDCA CMP EDX,ESI ; ascII值加的和 mod A =最后一位

0044FDCC JNZ SHORT ADVISOR.0044FDD5 ;如果不同就进行第二次计算:

0044FDCE MOV EAX,1

0044FDD3 JMP SHORT ADVISOR.0044FE01

0044FDD5 MOV EAX,ECX

0044FDD7 MOV EDI,9 ;EDI 赋值

0044FDDC CDQ ;EDX 清零

0044FDDD IDIV EDI ;EAX mod EDI ==>值放到 EDX

0044FDDF CMP ESI,EDX ;ascII值加的和 mod 9 =最后一位

0044FDE1 JNZ SHORT ADVISOR.0044FDEA ;如果不同就进行第三次计算:

0044FDE3 MOV EAX,2

0044FDE8 JMP SHORT ADVISOR.0044FE01

0044FDEA MOV EAX,ECX

0044FDEC MOV ECX,7 ;EDI 赋值

0044FDF1 CDQ ;EDX 清零

0044FDF2 IDIV ECX ;EAX mod EDI ==>值放到 EDX

0044FDF4 CMP ESI,EDX ;ascII值加的和 mod 7 =最后一位

0044FDF6 JNZ SHORT ADVISOR.0044FDFF ;死翘翘了

0044FDF8 MOV EAX,3

0044FDFD JMP SHORT ADVISOR.0044FE01

0044FDFF XOR EAX,EAX

0044FE01 POP EDI

0044FE02 POP ESI

0044FE03 POP EBX

0044FE04 RETN

以上可以看出注册码的第九位可能有三个值,也就是说注册码可能有三个。

********************************************************************************

0044F333 MOV WORD PTR SS:[EBP-88],20

0044F33C XOR ECX,ECX

0044F33E MOV DWORD PTR SS:[EBP-C],ECX

0044F341 LEA EDX,DWORD PTR SS:[EBP-C]

0044F344 INC DWORD PTR SS:[EBP-7C]

0044F347 MOV EAX,DWORD PTR DS:[EBX+30C]

0044F34D CALL <JMP.&VCL50.@Controls@TControl@GetT>; 取得软件号 函数

0044F352 CMP DWORD PTR SS:[EBP-C],0

0044F356 JE SHORT ADVISOR.0044F35D

0044F358 MOV ECX,DWORD PTR SS:[EBP-C]

0044F35B JMP SHORT ADVISOR.0044F362

0044F35D MOV ECX,ADVISOR.004875DB

0044F362 PUSH ECX ; /41000891

0044F363 PUSH ADVISOR.004875D8 ; |format = "%s"

0044F368 LEA EAX,DWORD PTR SS:[EBP-AC] ; |

0044F36E PUSH EAX ; |s

0044F36F CALL <JMP.&CC3250MT._sprintf> ; \_sprintf

0044F374 ADD ESP,0C

0044F377 DEC DWORD PTR SS:[EBP-7C]

0044F37A LEA EAX,DWORD PTR SS:[EBP-C]

0044F37D MOV EDX,2

0044F382 CALL ADVISOR.00466FA4 ; 第三个条件:注册码的第四位计算

0044F387 LEA ESI,DWORD PTR SS:[EBP-BC] ; 输入的数字-->ESI

0044F38D MOV AL,BYTE PTR DS:[ESI+3] ; 输入的第四位----->AL

0044F390 ADD AL,4 ; ASCII 码 +4

0044F392 CMP AL,BYTE PTR SS:[EBP-AC] ; 第四位=软件号的第一位-4

0044F398 JE SHORT ADVISOR.0044F3C0 ; 如果不是数字就进行以下计算:

0044F39A MOV AL,64 ; 赋值 AL==64

0044F39C SUB AL,BYTE PTR DS:[ESI+3] ; 64-注册码的第四位的ASCII值

0044F39F CMP AL,BYTE PTR SS:[EBP-AC] ; 注册码的第四位=4-软件号的第一位

0044F3A5 JE SHORT ADVISOR.0044F3C0

0044F3A7 MOV EAX,EBX

0044F3A9 CALL ADVISOR.0044FF88 ;死翘翘了

0044F3AE MOV EDX,DWORD PTR SS:[EBP-98]

0044F3B4 MOV DWORD PTR FS:[0],EDX

0044F3BB JMP ADVISOR.0044FABE

0044F3C0 MOV AL,BYTE PTR DS:[ESI+4] ; 第四个条件:注册码的第五位计算

0044F3C3 ADD AL,5 ; ASCII 码 +5

0044F3C5 CMP AL,BYTE PTR SS:[EBP-AB] ; 第五位=软件号的第二位-5

0044F3CB JE SHORT ADVISOR.0044F3F3 ; 如果不是数字就进行以下计算:

0044F3CD MOV AL,65 ; 赋值 AL=65

0044F3CF SUB AL,BYTE PTR DS:[ESI+4] ;

0044F3D2 CMP AL,BYTE PTR SS:[EBP-AB] ;

0044F3D8 JE SHORT ADVISOR.0044F3F3 ; 注册码的第五位=5-软件号的第二位

0044F3DA MOV EAX,EBX

0044F3DC CALL ADVISOR.0044FF88 ;死翘翘了

0044F3E1 MOV EDX,DWORD PTR SS:[EBP-98]

0044F3E7 MOV DWORD PTR FS:[0],EDX

0044F3EE JMP ADVISOR.0044FABE

0044F3F3 MOV AL,BYTE PTR DS:[ESI+1] ; 第五个条件:注册码的第二位计算

0044F3F6 ADD AL,2 ; ASCII码+2

0044F3F8 CMP AL,BYTE PTR SS:[EBP-AA] ; 值=软件号的第三位ASCII值

0044F3FE JE SHORT ADVISOR.0044F426 ; 注册码的第二位=软件号的第三位-2

0044F400 MOV AL,62 ; 如果不是数字就进行以下计算:

0044F402 SUB AL,BYTE PTR DS:[ESI+1]

0044F405 CMP AL,BYTE PTR SS:[EBP-AA] ; 注册码的第二位=2-软件号的第三位

0044F40B JE SHORT ADVISOR.0044F426

0044F40D MOV EAX,EBX

0044F40F CALL ADVISOR.0044FF88

0044F414 MOV EDX,DWORD PTR SS:[EBP-98]

0044F41A MOV DWORD PTR FS:[0],EDX

0044F421 JMP ADVISOR.0044FABE

0044F426 MOV AL,BYTE PTR DS:[ESI+7] ; 条件六:注册码的第八位计算

0044F429 ADD AL,8 ; ASCII 值+8

0044F42B CMP AL,BYTE PTR SS:[EBP-A9] ; 注册码的第八位=软件号的第四位-8

0044F431 JE SHORT ADVISOR.0044F459 ; 如果不是数字就进行以下计算:

0044F433 MOV AL,68

0044F435 SUB AL,BYTE PTR DS:[ESI+7]

0044F438 CMP AL,BYTE PTR SS:[EBP-A9] ;注册码的第八位=8-软件号的第四位

0044F43E JE SHORT ADVISOR.0044F459

0044F440 MOV EAX,EBX

0044F442 CALL ADVISOR.0044FF88

0044F447 MOV EDX,DWORD PTR SS:[EBP-98]

0044F44D MOV DWORD PTR FS:[0],EDX

0044F454 JMP ADVISOR.0044FABE

0044F459 MOV AL,BYTE PTR DS:[ESI+6] ; 条件七:注册码的第七位计算

0044F45C ADD AL,7

0044F45E CMP AL,BYTE PTR SS:[EBP-A8] ; 注册码的第七位=软件号的第五位-7

0044F464 JE SHORT ADVISOR.0044F48C ; 如果不是数字就进行以下计算:

0044F466 MOV AL,67

0044F468 SUB AL,BYTE PTR DS:[ESI+6]

0044F46B CMP AL,BYTE PTR SS:[EBP-A8] ;注册码的第七位=7-软件号的第五位

0044F471 JE SHORT ADVISOR.0044F48C

0044F473 MOV EAX,EBX

0044F475 CALL ADVISOR.0044FF88

0044F47A MOV EDX,DWORD PTR SS:[EBP-98]

0044F480 MOV DWORD PTR FS:[0],EDX

0044F487 JMP ADVISOR.0044FABE

0044F48C MOV AL,BYTE PTR DS:[ESI] ; 条件八:注册码的第一位计算

0044F48E INC EAX

0044F48F CMP AL,BYTE PTR SS:[EBP-A7] ; 注册码的第一位=软件号的第六位-1 0044F495 JE SHORT ADVISOR.0044F4BC ; 如果不是数字就进行以下计算:

0044F497 MOV AL,61

0044F499 SUB AL,BYTE PTR DS:[ESI]

0044F49B CMP AL,BYTE PTR SS:[EBP-A7] ;注册码的第一位=1-软件号的第六位

0044F4A1 JE SHORT ADVISOR.0044F4BC

0044F4A3 MOV EAX,EBX

0044F4A5 CALL ADVISOR.0044FF88

0044F4AA MOV EDX,DWORD PTR SS:[EBP-98]

0044F4B0 MOV DWORD PTR FS:[0],EDX

0044F4B7 JMP ADVISOR.0044FABE

0044F4BC MOV WORD PTR SS:[EBP-88],2C

0044F4C5 LEA EDX,DWORD PTR SS:[EBP-AC]

0044F4CB LEA EAX,DWORD PTR SS:[EBP-10]

0044F4CE CALL ADVISOR.00466E4C

0044F4D3 INC DWORD PTR SS:[EBP-7C]

0044F4D6 MOV EAX,DWORD PTR DS:[EAX]

0044F4D8 CALL <JMP.&VCL50.@Sysutils@StrToInt$qqrx>

0044F4DD MOV EDI,EAX

0044F4DF MOV EAX,EBX

0044F4E1 CALL ADVISOR.0044FC74

0044F4E6 CMP EDI,EAX

0044F4E8 LEA EAX,DWORD PTR SS:[EBP-10]

0044F4EB SETNE DL

0044F4EE AND EDX,1

0044F4F1 PUSH EDX ; /Arg1

0044F4F2 MOV EDX,2 ; |

0044F4F7 DEC DWORD PTR SS:[EBP-7C] ; |

0044F4FA CALL ADVISOR.00466FA4 ; \Advisor.00466FA4

0044F4FF POP ECX

0044F500 TEST CL,CL

0044F502 JE SHORT ADVISOR.0044F510

0044F504 MOV EAX,DWORD PTR DS:[<&VCL50.@forms@App>

0044F509 MOV EAX,DWORD PTR DS:[EAX]

0044F50B CALL <JMP.&VCL50.@forms@TApplication@Ter>

0044F510 MOV AL,BYTE PTR DS:[ESI+5] ; 条件九:注册码的第六位计算

0044F513 ADD AL,6 ; ASCII值+6

0044F515 CMP AL,BYTE PTR SS:[EBP-A6] ; 注册码的第六位=软件号的第七位-6

0044F51B JE SHORT ADVISOR.0044F543 ; 如果不是数字就进行以下计算:

0044F51D MOV AL,66

0044F51F SUB AL,BYTE PTR DS:[ESI+5]

0044F522 CMP AL,BYTE PTR SS:[EBP-A6] ; 注册码的第六位=6-软件号的第七位

0044F528 JE SHORT ADVISOR.0044F543

0044F52A MOV EAX,EBX

0044F52C CALL ADVISOR.0044FF88

0044F531 MOV EDX,DWORD PTR SS:[EBP-98]

0044F537 MOV DWORD PTR FS:[0],EDX

0044F53E JMP ADVISOR.0044FABE

0044F543 MOV AL,BYTE PTR DS:[ESI+2] ; 条件十:注册码的第三位计算

0044F546 ADD AL,3 ; ASCII 值+3

0044F548 CMP AL,BYTE PTR SS:[EBP-A5] ; 注册码的第三位=软件号的第八位-3

0044F54E JE SHORT ADVISOR.0044F576 ; 如果不是数字就进行以下计算:

0044F550 MOV AL,63

0044F552 SUB AL,BYTE PTR DS:[ESI+2]

0044F555 CMP AL,BYTE PTR SS:[EBP-A5] ; 注册码的第三位=3-软件号的第八位

0044F55B JE SHORT ADVISOR.0044F576

0044F55D MOV EAX,EBX

0044F55F CALL ADVISOR.0044FF88

0044F564 MOV EDX,DWORD PTR SS:[EBP-98]

0044F56A MOV DWORD PTR FS:[0],EDX

0044F571 JMP ADVISOR.0044FABE

0044F576 MOV DL,1

0044F578 MOV EAX,DWORD PTR DS:[<&VCL50.@Registry@>

0044F57D CALL <JMP.&VCL50.@Registry@TRegistry@$bc>

0044F582 MOV DWORD PTR SS:[EBP-9C],EAX

0044F588 MOV EDX,80000001

0044F58D MOV EAX,DWORD PTR SS:[EBP-9C]

0044F593 CALL ADVISOR.00466E3C

0044F598 MOV WORD PTR SS:[EBP-88],38

0044F5A1 MOV WORD PTR SS:[EBP-88],44

0044F5AA MOV EDX,ADVISOR.004875DC ; ASCII "\Software\Chess Advisor"

0044F5AF LEA EAX,DWORD PTR SS:[EBP-14]

0044F5B2 CALL ADVISOR.00466E4C

0044F5B7 INC DWORD PTR SS:[EBP-7C]

0044F5BA MOV EDX,DWORD PTR DS:[EAX]

0044F5BC MOV CL,1

================================================================================

以上总结:注册码的计算过程如下

注册码长度为 9 且必须是数字

设软件序列号为: ABCDEFGH

软件注册码为:abcdefghi

1: a=F-1 or a=1-F

2: b=C-2 or b=2-C

3: c=H-3 or c=3-H

4: d=A-4 or d=4-A

5: e=B-5 or e=5-B

6: f=G-6 or f=6-G

7: g=E-7 or g=7-E

8: h=D-8 or h=8-D

9: i= ("a"+"b"*2+"c"*3+"d"*4+"e"*5+"f"*6+"g"*7) mod A

or i= ("a"+"b"*2+"c"*3+"d"*4+"e"*5+"f"*6+"g"*7) mod 9

or i= ("a"+"b"*2+"c"*3+"d"*4+"e"*5+"f"*6+"g"*7) mod 7

fxyang

2003.2.7

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

相关文章:

·语音界面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)复原。发现问题请联系我们
← 返回老文章档案 · 软件史档案馆 · 赢政天下站史