您的位置:首页精文荟萃破解文章 → 象棋参谋 v5.0.1算法分析

象棋参谋 v5.0.1算法分析

时间:2004/10/15 0:56:00来源:本站整理作者:蓝点我要评论(0)

 软件简介:
......
--------------------------------------------------------------------------------------


破解工具: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码

    
    
     
    
    
     

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 去除winrar注册框方法

最新文章 比特币病毒怎么破解 比去除winrar注册框方法 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)通过Access破解MSSQL获得数据

人气排行 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)qq相册密码破解方法去除winrar注册框方法(适应任何版本)怎么用手机破解收费游戏华为无线猫HG522破解如何给软件脱壳基础教程