老文章档案 · 2003 年

象棋参谋 v5.0.1算法分析

赢政天下 [WINZHENG.COM] · 网络学院 · 2003-08-27 · 作者:北极熊[DFCG] 人气: · 出处:赢政天下整理收藏)

软件简介:

......

--------------------------------------------------------------------------------------

破解工具:TRW2000

破解过程:

1、运行TRW2000后最小化

2、运行程序,弹出注册对话框,输入用户名和任意假注册码,先不要点“注册”按钮

3、Ctrl+N激活TRW2000

4、bpx hmemcpy → 这里用hmemcpy这个万能断点就OK了

5、按F5返回,点击注册按钮,程序被拦截

6、BC * → 清除所有断点

PMODULE → 直接进入程序领空

7、慢慢按F10到如下代码

0167:0044F2F6 64891500000000 MOV [FS:00],EDX

0167:0044F2FD E9BC070000 JMP 0044FABE

0167:0044F302 47 INC EDI

0167:0044F303 46 INC ESI

0167:0044F304 83FF09 CMP EDI,BYTE +09 注册码是9位的

0167:0044F307 7CD2 JL 0044F2DB

0167:0044F309 8D9544FFFFFF LEA EDX,[EBP+FFFFFF44] EDX是假注册码

0167:0044F30F 8BC3 MOV EAX,EBX

0167:0044F311 E8860A0000 CALL 0044FD9C //F8跟入,关键CALL,比较最后一位

0167:0044F316 85C0 TEST EAX,EAX EAX是不是0

0167:0044F318 7519 JNZ 0044F333 是0就死了!不是就跳走

0167:0044F31A 8BC3 MOV EAX,EBX

0167:0044F31C E8670C0000 CALL 0044FF88 报错的CALL

0167:0044F321 8B9568FFFFFF MOV EDX,[EBP+FFFFFF68]

0167:0044F327 64891500000000 MOV [FS:00],EDX

0167:0044F32E E98B070000 JMP 0044FABE

0167:0044F333 66C78578FFFFFF20+MOV WORD [EBP+FFFFFF78],20 跳到这里继续

0167:0044F33C 33C9 XOR ECX,ECX

0167:0044F33E 894DF4 MOV [EBP-0C],ECX

0167:0044F341 8D55F4 LEA EDX,[EBP-0C]

0167:0044F344 FF4584 INC DWORD [EBP-7C]

0167:0044F347 8B830C030000 MOV EAX,[EBX+030C]

0167:0044F34D E8FAC30200 CALL `VCL50!@Controls@TControl@GetText$qqrv`

0167:0044F352 837DF400 CMP DWORD [EBP-0C],BYTE +00

0167:0044F356 7405 JZ 0044F35D

0167:0044F358 8B4DF4 MOV ECX,[EBP-0C]

0167:0044F35B EB05 JMP SHORT 0044F362

0167:0044F35D B9DB754800 MOV ECX,004875DB

0167:0044F362 51 PUSH ECX

0167:0044F363 68D8754800 PUSH DWORD 004875D8

0167:0044F368 8D8554FFFFFF LEA EAX,[EBP+FFFFFF54]

0167:0044F36E 50 PUSH EAX

0167:0044F36F E808CF0200 CALL `CC3250MT!_sprintf`

0167:0044F374 83C40C ADD ESP,BYTE +0C

0167:0044F377 FF4D84 DEC DWORD [EBP-7C]

0167:0044F37A 8D45F4 LEA EAX,[EBP-0C]

0167:0044F37D BA02000000 MOV EDX,02

0167:0044F382 E81D7C0100 CALL 00466FA4

0167:0044F387 8DB544FFFFFF LEA ESI,[EBP+FFFFFF44] 取注册码到ESI

0167:0044F38D 8A4603 MOV AL,[ESI+03] 取第四位注册码的ascii码到al

0167:0044F390 0404 ADD AL,04 加4

0167:0044F392 3A8554FFFFFF CMP AL,[EBP+FFFFFF54] 和机器码第一位比较

0167:0044F398 7426 JZ 0044F3C0 等于就跳走比较第二位

0167:0044F39A B064 MOV AL,64 不等于,设al=64H(负数就取绝对值)

0167:0044F39C 2A4603 SUB AL,[ESI+03] 64H减第四位的asii码到al

0167:0044F39F 3A8554FFFFFF CMP AL,[EBP+FFFFFF54] 和机器码第一位比较

0167:0044F3A5 7419 JZ 0044F3C0 等于就跳走比较第二位

0167:0044F3A7 8BC3 MOV EAX,EBX

0167:0044F3A9 E8DA0B0000 CALL 0044FF88

0167:0044F3AE 8B9568FFFFFF MOV EDX,[EBP+FFFFFF68]

0167:0044F3B4 64891500000000 MOV [FS:00],EDX

0167:0044F3BB E9FE060000 JMP 0044FABE

0167:0044F3C0 8A4604 MOV AL,[ESI+04] 取第五位注册码的ascii码到al

0167:0044F3C3 0405 ADD AL,05 加5

0167:0044F3C5 3A8555FFFFFF CMP AL,[EBP+FFFFFF55] 和机器码第二位比较

0167:0044F3CB 7426 JZ 0044F3F3 等于就跳走比较第三位

0167:0044F3CD B065 MOV AL,65 不等于,设al=65H

0167:0044F3CF 2A4604 SUB AL,[ESI+04] 65H减第四位的asii码到al

0167:0044F3D2 3A8555FFFFFF CMP AL,[EBP+FFFFFF55] 和机器码第二位比较

0167:0044F3D8 7419 JZ 0044F3F3 等于就跳走比较第三位

0167:0044F3DA 8BC3 MOV EAX,EBX

0167:0044F3DC E8A70B0000 CALL 0044FF88

0167:0044F3E1 8B9568FFFFFF MOV EDX,[EBP+FFFFFF68]

0167:0044F3E7 64891500000000 MOV [FS:00],EDX

0167:0044F3EE E9CB060000 JMP 0044FABE

0167:0044F3F3 8A4601 MOV AL,[ESI+01] 取第二位注册码的ascii码到al

0167:0044F3F6 0402 ADD AL,02

0167:0044F3F8 3A8556FFFFFF CMP AL,[EBP+FFFFFF56] 和机器码第三位比较

0167:0044F3FE 7426 JZ 0044F426

0167:0044F400 B062 MOV AL,62

0167:0044F402 2A4601 SUB AL,[ESI+01]

0167:0044F405 3A8556FFFFFF CMP AL,[EBP+FFFFFF56]

0167:0044F40B 7419 JZ 0044F426 下面基本相同的我就不写了!

0167:0044F40D 8BC3 MOV EAX,EBX

0167:0044F40F E8740B0000 CALL 0044FF88

0167:0044F414 8B9568FFFFFF MOV EDX,[EBP+FFFFFF68]

0167:0044F41A 64891500000000 MOV [FS:00],EDX

0167:0044F421 E998060000 JMP 0044FABE

0167:0044F426 8A4607 MOV AL,[ESI+07] 取第八位注册码的asii码到al

0167:0044F429 0408 ADD AL,08

0167:0044F42B 3A8557FFFFFF CMP AL,[EBP+FFFFFF57] 和机器码第四位比较

0167:0044F431 7426 JZ 0044F459

0167:0044F433 B068 MOV AL,68

0167:0044F435 2A4607 SUB AL,[ESI+07]

0167:0044F438 3A8557FFFFFF CMP AL,[EBP+FFFFFF57]

0167:0044F43E 7419 JZ 0044F459

0167:0044F440 8BC3 MOV EAX,EBX

0167:0044F442 E8410B0000 CALL 0044FF88

0167:0044F447 8B9568FFFFFF MOV EDX,[EBP+FFFFFF68]

0167:0044F44D 64891500000000 MOV [FS:00],EDX

0167:0044F454 E965060000 JMP 0044FABE

0167:0044F459 8A4606 MOV AL,[ESI+06] 取第七位注册码的ascii码到al

0167:0044F45C 0407 ADD AL,07

0167:0044F45E 3A8558FFFFFF CMP AL,[EBP+FFFFFF58] 和机器码第五位比较

0167:0044F464 7426 JZ 0044F48C

0167:0044F466 B067 MOV AL,67

0167:0044F468 2A4606 SUB AL,[ESI+06]

0167:0044F46B 3A8558FFFFFF CMP AL,[EBP+FFFFFF58]

0167:0044F471 7419 JZ 0044F48C

0167:0044F473 8BC3 MOV EAX,EBX

0167:0044F475 E80E0B0000 CALL 0044FF88

0167:0044F47A 8B9568FFFFFF MOV EDX,[EBP+FFFFFF68]

0167:0044F480 64891500000000 MOV [FS:00],EDX

0167:0044F487 E932060000 JMP 0044FABE

0167:0044F48C 8A06 MOV AL,[ESI] 取第一位注册码的ascii码到al

0167:0044F48E 40 INC EAX

0167:0044F48F 3A8559FFFFFF CMP AL,[EBP+FFFFFF59] 和机器码第六位比较

0167:0044F495 7425 JZ 0044F4BC

0167:0044F497 B061 MOV AL,61

0167:0044F499 2A06 SUB AL,[ESI]

0167:0044F49B 3A8559FFFFFF CMP AL,[EBP+FFFFFF59]

0167:0044F4A1 7419 JZ 0044F4BC

0167:0044F4A3 8BC3 MOV EAX,EBX

0167:0044F4A5 E8DE0A0000 CALL 0044FF88

0167:0044F4AA 8B9568FFFFFF MOV EDX,[EBP+FFFFFF68]

0167:0044F4B0 64891500000000 MOV [FS:00],EDX

0167:0044F4B7 E902060000 JMP 0044FABE

0167:0044F4BC 66C78578FFFFFF2C+MOV WORD [EBP+FFFFFF78],2C

0167:0044F4C5 8D9554FFFFFF LEA EDX,[EBP+FFFFFF54]

0167:0044F4CB 8D45F0 LEA EAX,[EBP-10]

0167:0044F4CE E879790100 CALL 00466E4C

0167:0044F4D3 FF4584 INC DWORD [EBP-7C]

0167:0044F4D6 8B00 MOV EAX,[EAX]

0167:0044F4D8 E829BA0200 CALL `VCL50!@Sysutils@StrToInt$qqrx17System@AnsiString`

0167:0044F4DD 8BF8 MOV EDI,EAX

0167:0044F4DF 8BC3 MOV EAX,EBX

0167:0044F4E1 E88E070000 CALL 0044FC74

0167:0044F4E6 3BF8 CMP EDI,EAX

0167:0044F4E8 8D45F0 LEA EAX,[EBP-10]

0167:0044F4EB 0F95C2 SETNZ DL

0167:0044F4EE 83E201 AND EDX,BYTE +01

0167:0044F4F1 52 PUSH EDX

0167:0044F4F2 BA02000000 MOV EDX,02

0167:0044F4F7 FF4D84 DEC DWORD [EBP-7C]

0167:0044F4FA E8A57A0100 CALL 00466FA4

0167:0044F4FF 59 POP ECX

0167:0044F500 84C9 TEST CL,CL

0167:0044F502 740C JZ 0044F510

0167:0044F504 A194014900 MOV EAX,[00490194]

0167:0044F509 8B00 MOV EAX,[EAX]

0167:0044F50B E842BE0200 CALL `VCL50!@Forms@TApplication@Terminate$qqrv`

0167:0044F510 8A4605 MOV AL,[ESI+05] 取第六位注册码的ascii码到al

0167:0044F513 0406 ADD AL,06

0167:0044F515 3A855AFFFFFF CMP AL,[EBP+FFFFFF5A] 和机器码第七位比较

0167:0044F51B 7426 JZ 0044F543

0167:0044F51D B066 MOV AL,66

0167:0044F51F 2A4605 SUB AL,[ESI+05]

0167:0044F522 3A855AFFFFFF CMP AL,[EBP+FFFFFF5A]

0167:0044F528 7419 JZ 0044F543

0167:0044F52A 8BC3 MOV EAX,EBX

0167:0044F52C E8570A0000 CALL 0044FF88

0167:0044F531 8B9568FFFFFF MOV EDX,[EBP+FFFFFF68]

0167:0044F537 64891500000000 MOV [FS:00],EDX

0167:0044F53E E97B050000 JMP 0044FABE

0167:0044F543 8A4602 MOV AL,[ESI+02] 取第三位注册码的ascii码到al

0167:0044F546 0403 ADD AL,03

0167:0044F548 3A855BFFFFFF CMP AL,[EBP+FFFFFF5B] 和机器码第八位比较

0167:0044F54E 7426 JZ 0044F576 相等跳到0044F576

0167:0044F550 B063 MOV AL,63

0167:0044F552 2A4602 SUB AL,[ESI+02]

0167:0044F555 3A855BFFFFFF CMP AL,[EBP+FFFFFF5B]

0167:0044F55B 7419 JZ 0044F576

0167:0044F55D 8BC3 MOV EAX,EBX

0167:0044F55F E8240A0000 CALL 0044FF88

0167:0044F564 8B9568FFFFFF MOV EDX,[EBP+FFFFFF68]

0167:0044F56A 64891500000000 MOV [FS:00],EDX

0167:0044F571 E948050000 JMP 0044FABE 不对就跳到0044FABE

0167:0044F576 B201 MOV DL,01 到这里,设置DL=1

0167:0044F578 A1A40B4900 MOV EAX,[00490BA4]

0167:0044F57D E82EC60200 CALL `VCL50!@Registry@TRegistry@$bctr$qqrv` 注册成功的信息

0167:0044F582 898564FFFFFF MOV [EBP+FFFFFF64],EAX

0167:0044F588 BA01000080 MOV EDX,80000001

0167:0044F58D 8B8564FFFFFF MOV EAX,[EBP+FFFFFF64]

0167:0044F593 E8A4780100 CALL 00466E3C

0167:0044F598 66C78578FFFFFF38+MOV WORD [EBP+FFFFFF78],38

0167:0044F5A1 66C78578FFFFFF44+MOV WORD [EBP+FFFFFF78],44

0167:0044F5AA BADC754800 MOV EDX,004875DC

0167:0044F5AF 8D45EC LEA EAX,[EBP-14]

0167:0044F5B2 E895780100 CALL 00466E4C

0167:0044F5B7 FF4584 INC DWORD [EBP-7C]

0167:0044F5BA 8B10 MOV EDX,[EAX]

0167:0044F5BC B101 MOV CL,01

0167:0044F5BE 8B8564FFFFFF MOV EAX,[EBP+FFFFFF64]

0167:0044F5C4 E8CFC50200 CALL `VCL50!@Registry@TRegistry@OpenKey$qqrx17System@AnsiStringo` 注册失败的信息!

0167:0044F5C9 FF4D84 DEC DWORD [EBP-7C]

0167:0044F5CC 8D45EC LEA EAX,[EBP-14]

0167:0044F5CF BA02000000 MOV EDX,02

0167:0044F5D4 E8CB790100 CALL 00466FA4

------------------//F8跟入,关键CALL//-----------------------

0167:0044FD9C 53 PUSH EBX

0167:0044FD9D 56 PUSH ESI

0167:0044FD9E 57 PUSH EDI

0167:0044FD9F 8BDA MOV EBX,EDX

0167:0044FDA1 33C9 XOR ECX,ECX

0167:0044FDA3 33C0 XOR EAX,EAX EAX=0

0167:0044FDA5 8BD3 MOV EDX,EBX

0167:0044FDA7 0FBE32 MOVSX ESI,BYTE [EDX] 逐位取假注册码的ASCII码

0167:0044FDAA 8D7801 LEA EDI,[EAX+01] EAX=1 放到EDI

0167:0044FDAD 40 INC EAX EAX加1

0167:0044FDAE 0FAFF7 IMUL ESI,EDI 逐位取假注册码的ASCII码乘位数

0167:0044FDB1 03CE ADD ECX,ESI 加起来

0167:0044FDB3 42 INC EDX 计数器加1

0167:0044FDB4 83F808 CMP EAX,BYTE +08 长度比较

0167:0044FDB7 7CEE JL 0044FDA7 未完继续

0167:0044FDB9 8BC1 MOV EAX,ECX 结果到EAX

0167:0044FDBB BF0A000000 MOV EDI,0A EDI=10

0167:0044FDC0 99 CDQ

0167:0044FDC1 F7FF IDIV EDI EAX=EAX MOD 10 (取余数)

0167:0044FDC3 0FBE7308 MOVSX ESI,BYTE [EBX+08] 假注册码的第九位,就是最后一位

0167:0044FDC7 83C6D0 ADD ESI,BYTE -30 变为ascii码

0167:0044FDCA 3BD6 CMP EDX,ESI 比较

0167:0044FDCC 7507 JNZ 0044FDD5 不等就跳

0167:0044FDCE B801000000 MOV EAX,01 相等eax=1

0167:0044FDD3 EB2C JMP SHORT 0044FE01 跳到程序继续

0167:0044FDD5 8BC1 MOV EAX,ECX 跳过来继续比较

0167:0044FDD7 BF09000000 MOV EDI,09 EDI=9

0167:0044FDDC 99 CDQ

0167:0044FDDD F7FF IDIV EDI EAX=EAX MOD 9 (取余数)

0167:0044FDDF 3BF2 CMP ESI,EDX 比较

0167:0044FDE1 7507 JNZ 0044FDEA 不等就跳

0167:0044FDE3 B802000000 MOV EAX,02 相等eax=2

0167:0044FDE8 EB17 JMP SHORT 0044FE01 跳到程序继续

0167:0044FDEA 8BC1 MOV EAX,ECX

0167:0044FDEC B907000000 MOV ECX,07 ECX=7

0167:0044FDF1 99 CDQ

0167:0044FDF2 F7F9 IDIV ECX EAX=EAX MOD 7 (取余数)

0167:0044FDF4 3BF2 CMP ESI,EDX 比较

0167:0044FDF6 7507 JNZ 0044FDFF 不等就跳到下面,EAX=0,死了!呵呵!

0167:0044FDF8 B803000000 MOV EAX,03 相等,EAX=3

0167:0044FDFD EB02 JMP SHORT 0044FE01 跳到程序继续

0167:0044FDFF 33C0 XOR EAX,EAX

0167:0044FE01 5F POP EDI

0167:0044FE02 5E POP ESI

算法总结:

1.先比较注册码最后一位,最后一位注册码必须等于前八位注册码逐位和位数相乘的和MOD(取余数)10或9或7的值

2.注册码第1位等于机器码第6位ASCII码减1 或者 61H(16进制)减机器码第6位ASCII码(负数就取绝对值)

注册码第2位等于机器码第3位ASCII码减2 或者 62H(16进制)减机器码第3位ASCII码

注册码第3位等于机器码第8位ASCII码减3 或者 63H(16进制)减机器码第8位ASCII码

注册码第4位等于机器码第1位ASCII码减4 或者 64H(16进制)减机器码第1位ASCII码

注册码第5位等于机器码第2位ASCII码减5 或者 65H(16进制)减机器码第2位ASCII码

注册码第6位等于机器码第7位ASCII码减6 或者 66H(16进制)减机器码第7位ASCII码

注册码第7位等于机器码第5位ASCII码减7 或者 67H(16进制)减机器码第5位ASCII码

注册码第8位等于机器码第4位ASCII码减8 或者 68H(16进制)减机器码第4位ASCII码

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

相关文章:

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