-
您的位置:首页 → 精文荟萃 → 破解文章 → 象棋参谋 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破解如何给软件脱壳基础教程
查看所有0条评论>>