下载地址: http://www.ptcn.com/
软件简介:
该软件是用于联众和边锋游戏,帮助游戏者记牌的辅助工具。对于牌友来讲水平高的体现恐怕一多半是因为他们记牌准确,但那实在是很辛苦的事情。作者过去就因为时常打牌时走神而招来联邦的责怪。现在生活节奏加快,打牌本来是要轻松一下,如果辛苦地动脑记牌实在是不值得,况且,有些游戏记清楚是人脑根本无法做到的,有了它甚至可以边浏览网页边打牌。作者编制了这个小工具,不敢独占,愿与大家分享。它会使您打牌更加轻松,愿它可以帮助你轻松打牌,迅速成为高手。本软件独立于游戏程序,不干扰游戏的运行,不在您机器前,任何人也察觉不到它的存在,如果您把显示窗拉出显示区,您自己可能也察觉不到它的存在。
注册算法分析
说明:只分析其中边锋游戏的注册算法。联众游戏的注册算法与其原理相同。
注册用户名:aman
假注册码:123456789
0045D3BA |. 55 PUSH EBP
0045D3BB |. 68 D2D54500 PUSH aaa.0045D5D2
0045D3C0 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
0045D3C3 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
0045D3C6 |. 8D55 C8 LEA EDX,DWORD PTR SS:[EBP-38]
0045D3C9 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0045D3CC |. 8B80 20030000 MOV EAX,DWORD PTR DS:[EAX+320]
0045D3D2 |. E8 2194FDFF CALL aaa.004367F8
0045D3D7 |. 8B45 C8 MOV EAX,DWORD PTR SS:[EBP-38]===>将假注册码移入EAX。
0045D3DA |. 33D2 XOR EDX,EDX
0045D3DC |. E8 CFB6FAFF CALL aaa.00408AB0====>将假注册码换算成十六进制。
0045D3E1 |. 8BC8 MOV ECX,EAX=====>将假注册码换算成十六进制后移入ECX。
0045D3E3 |. 81F9 00E1F505 CMP ECX,5F5E100====>比较。
0045D3E9 |. 7D 0F JGE SHORT aaa.0045D3FA====>大于等于就跳。
0045D3EB |. B8 E8D54500 MOV EAX,aaa.0045D5E8===>此处提示注册码必须9位。
0045D3F0 |. E8 072FFDFF CALL aaa.004302FC
0045D3F5 |. E9 8B010000 JMP aaa.0045D585
0045D3FA |> 8D45 C4 LEA EAX,DWORD PTR SS:[EBP-3C]
0045D3FD |. 50 PUSH EAX
0045D3FE |. 8D55 C0 LEA EDX,DWORD PTR SS:[EBP-40]
0045D401 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0045D404 |. 8B80 20030000 MOV EAX,DWORD PTR DS:[EAX+320]
0045D40A |. E8 E993FDFF CALL aaa.004367F8
0045D40F |. 8B45 C0 MOV EAX,DWORD PTR SS:[EBP-40]====>将假注册码移入EAX。
0045D412 |. B9 05000000 MOV ECX,5===>将常数5移入ECX。
0045D417 |. 33D2 XOR EDX,EDX
0045D419 |. E8 7A75FAFF CALL aaa.00404998====>取假注册码的前5位。
0045D41E |. 8B45 C4 MOV EAX,DWORD PTR SS:[EBP-3C]====>将假注册码的前5位移入EAX。
0045D421 |. E8 4EB6FAFF CALL aaa.00408A74====>将假注册码的前5位换算成十六进制。
0045D426 |. 8945 F0 MOV DWORD PTR SS:[EBP-10],EAX====>保存假注册码的前5位的十六进制值,为以后
比较作准备。
0045D429 |. 8D55 B8 LEA EDX,DWORD PTR SS:[EBP-48]
0045D42C |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0045D42F |. 8B80 1C030000 MOV EAX,DWORD PTR DS:[EAX+31C]
0045D435 |. E8 BE93FDFF CALL aaa.004367F8
0045D43A |. 8B45 B8 MOV EAX,DWORD PTR SS:[EBP-48]====>将用户名移入EAX。
0045D43D |. 8D55 BC LEA EDX,DWORD PTR SS:[EBP-44]
0045D440 |. E8 D3B2FAFF CALL aaa.00408718====>计算用户名字符个数。
0045D445 |. 8B45 BC MOV EAX,DWORD PTR SS:[EBP-44]====>将用户名移入EAX。
0045D448 |. 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]
0045D44B |. E8 A4B3FAFF CALL aaa.004087F4
0045D450 |. 8D45 B4 LEA EAX,DWORD PTR SS:[EBP-4C]
0045D453 |. 50 PUSH EAX
0045D454 |. 8D55 B0 LEA EDX,DWORD PTR SS:[EBP-50]
0045D457 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0045D45A |. 8B80 20030000 MOV EAX,DWORD PTR DS:[EAX+320]
0045D460 |. E8 9393FDFF CALL aaa.004367F8
0045D465 |. 8B45 B0 MOV EAX,DWORD PTR SS:[EBP-50]====>将假注册码移入EAX。
0045D468 |. B9 04000000 MOV ECX,4
0045D46D |. BA 06000000 MOV EDX,6
0045D472 |. E8 2175FAFF CALL aaa.00404998
0045D477 |. 8B55 B4 MOV EDX,DWORD PTR SS:[EBP-4C]====>将假注册码的后4位移入EDX。
0045D47A |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
0045D47D |. E8 C672FAFF CALL aaa.00404748====>将用户名转换成:aman6789。计算注册码就用它。
0045D482 |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]====>将aman6789移入EAX。
0045D485 |. E8 B672FAFF CALL aaa.00404740====>计算aman6789的长度。
0045D48A |. 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX====>保存长度。
0045D48D |. 8D45 CD LEA EAX,DWORD PTR SS:[EBP-33]
0045D490 |. 8B55 F4 MOV EDX,DWORD PTR SS:[EBP-C]
0045D493 |. E8 B8B9FAFF CALL aaa.00408E50
0045D498 |. BB 8A0C0000 MOV EBX,0C8A====>将常数C8A移入EBX。
0045D49D |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]====>长度移入EAX。
0045D4A0 |. 48 DEC EAX===>长度减去1。
0045D4A1 |. 85C0 TEST EAX,EAX===>测试。
0045D4A3 |. 7C 30 JL SHORT aaa.0045D4D5====>小于0则跳到出错处。
0045D4A5 |. 40 INC EAX
0045D4A6 |. 8945 EC MOV DWORD PTR SS:[EBP-14],EAX===>保存长度。
0045D4A9 |. 33C9 XOR ECX,ECX
0045D4AB |. 8D45 CD LEA EAX,DWORD PTR SS:[EBP-33]====>将aman6789移入EAX。
0045D4AE |> 33D2 /XOR EDX,EDX
0045D4B0 |. 8A10 |MOV DL,BYTE PTR DS:[EAX]
1、将用户名第一个字符a的十六进制值61移入DL。
2、将用户名第二个字符m的十六进制值6D移入DL
3、将用户名第三个字符a的十六进制值61移入DL。
4、将用户名第四个字符n的十六进制值6E移入DL。
5、将用户名第五个字符6的十六进制值36移入DL。
6、将用户名第六个字符7的十六进制值37移入DL。
7、将用户名第七个字符8的十六进制值38移入DL。
8、将用户名第八个字符9的十六进制值39移入DL。
0045D4B2 |. 0FAFD1 |IMUL EDX,ECX
1、EDX=61*0=0
2、EDX=6D*1=6D
3、EDX=61*2=C2
4、EDX=6E*3=14A
5、EDX=36*4=D8
6、EDX=37*5=113
7、EDX=38*6=150
8、EDX=39*7=18F
0045D4B5 |. 03DA |ADD EBX,EDX
1、EBX=C8A+0=C8A
2、EBX=F92+6D=FFF
3、EBX=136F+C2=1431
4、EBX=1749+14A=1893
5、EBX=1C1B+D8=1CF3
6、EBX=1EC3+113=1FD6
7、EBX=21B6+150=2306
8、EBX=24F6+18F=2685
0045D4B7 |. 8B55 F8 |MOV EDX,DWORD PTR SS:[EBP-8]===>SS中为用户名长度+4=8
0045D4BA |. 4A |DEC EDX
0045D4BB |. 83FA 00 |CMP EDX,0
0045D4BE |. 7C 0E |JL SHORT aaa.0045D4CE
0045D4C0 |> 8D1C19 |/LEA EBX,DWORD PTR DS:[ECX+EBX]
1、 a、EBX=C8A+0=C8A
b、EBX=CEB+0=CEB
c、EBX=D4C+0=D4C
d、EBX=DAD+0=DAD
e、EBX=E0E+0=E0E
f、EBX=E6F+0=E6F
g、EBX=ED0+0=ED0
h、EBX=F31+0=F31
2、 a、EBX=FFF+1=1000
b、EBX=106D+1=106E
c、EBX=10DB+1=10DC
d、EBX=1149+1=114A
e、EBX=11B7+1=11B8
f、EBX=E6F+1=E6F
g、EBX=ED0+1=ED0
h、EBX=F31+1=F31
3、 a、EBX=1431+2=1433
b、EBX=1494+2=1496
c、EBX=14F7+2=14F9
d、EBX=155A+2=155C
e、EBX=15BD+2=15BF
f、EBX=1620+2=1622
g、EBX=1683+2=1685
h、EBX=16E6+2=16E8
4、a、EBX=1893+3=1896
b、EBX=1904+3=1907
c、EBX=1975+3=1978
d、EBX=15E6+3=19E9
e、EBX=1A57+3=1A5A
f、EBX=1AC8+3=1ACB
g、EBX=1B39+3=1B3C
h、EBX=1BAA+3=1BAD
5、a、EBX=1CF3+4=1CF7
b、EBX=1D2D+4=11D31
c、EBX=1D67+4=1D6B
d、EBX=1DA1+4=1DA5
e、EBX=1DDB+4=1DDF
f、EBX=1E15+4=1E19
g、EBX=1E4F+4=1E53
h、EBX=1E89+4=1E8D
6、a、EBX=1FD6+5=1FDB
b、EBX=2012+5=2017
c、EBX=204E+5=2053
d、EBX=208A+5=208F
e、EBX=20C6+5=20CB
f、EBX=2102+5=2107
g、EBX=213E+5=2143
h、EBX=217A+5=217F
7、a、EBX=2306+6=230C
b、EBX=2344+6=234A
c、EBX=2382+6=2388
d、EBX=23C0+6=23C6
e、EBX=23FE+6=2404
f、EBX=243C+6=2442
g、EBX=247A+6=2480
h、EBX=24B8+6=24BE
8、a、EBX=2685+7=268C
b、EBX=26C5+7=26CC
c、EBX=2705+7=270C
d、EBX=2745+7=274C
e、EBX=2785+7=278C
f、EBX=27C5+7=27CC
g、EBX=2805+7=280C
h、EBX=2845+7=284C
0045D4C3 |. 0FB630 ||MOVZX ESI,BYTE PTR DS:[EAX]
1、将用户名第一个字符a的十六进制值61移入ESI。
2、将用户名第二个字符m的十六进制值6D移入ESI。
3、将用户名第三个字符a的十六进制值61移入ESI。
4、将用户名第四个字符n的十六进制值6E移入ESI。
5、将用户名第五个字符6的十六进制值36移入ESI。
6、将用户名第六个字符7的十六进制值37移入ESI。
7、将用户名第七个字符8的十六进制值38移入ESI。
8、将用户名第八个字符9的十六进制值39移入ESI。
0045D4C6 |. 03DE ||ADD EBX,ESI
1、循环加61共8次(用户名长度+4)后EBX=F92。
a、EBX=C8A+61=CEB
b、EBX=CEB+61=D4C
c、EBX=D4C+61=DAD
d、EBX=DAD+61=E0E
e、EBX=E0E+61=E6F
f、EBX=E6F+61=ED0
g、EBX=ED0+61=F31
h、EBX=F31+61=F92
2、循环加6D共8次(用户名长度+4)后EBX=136F。
a、EBX=1000+6D=106D
b、EBX=106E+6D=10DB
c、EBX=10DC+6D=1149
d、EBX=114A+6D=11B7
e、EBX=11B8+6D=1225
f、EBX=1226+6D=1293
g、EBX=1294+6D=1301
h、EBX=1302+6D=136F
3、循环加61共8次(用户名长度+4)后EBX=1749。
a、EBX=1433+61=1494
b、EBX=1496+61=14F7
c、EBX=14F9+61=155A
d、EBX=155C+61=15BD
e、EBX=15BF+61=1620
f、EBX=1622+61=1683
g、EBX=1685+61=16E6
h、EBX=16E8+61=1749
4、 循环加6E共8次(用户名长度+4)后EBX=1C1B。
a、EBX=1896+6E=1904
b、EBX=1907+6E=1975
c、EBX=1978+6E=19E6
d、EBX=19E9+6E=1A57
e、EBX=1A5A+6E=1AC8
f、EBX=1ACB+6E=1B39
g、EBX=1B3C+6E=1BAA
h、EBX=1BAD+6E=1C1B
5、循环加36共8次(用户名长度+4)后EBX=1EC3。
a、EBX=1CF7+36=1D2D
b、EBX=1D31+36=1D67
c、EBX=1D6B+36=1DA1
d、EBX=1DA5+36=1DDB
e、EBX=1DDF+36=1E15
f、EBX=1E19+36=1E4F
g、EBX=1E53+36=1E89
h、EBX=1E8D+36=1EC3
6、EBX= 循环加37共8次(用户名长度+4)后EBX=21B6。
a、EBX=1FDB+37=2012
b、EBX=2017+37=204E
c、EBX=2053+37=208A
d、EBX=208F+37=20C6
e、EBX=20CB+37=2102
f、EBX=2107+37=213E
g、EBX=2143+37=217A
h、EBX=217F+37=21B6
7、循环加38共8次(用户名长度+4)后EBX=24F6。
a、EBX=230C+38=2344
b、EBX=234A+38=2382
c、EBX=2388+38=23C0
d、EBX=23C6+38=23FE
e、EBX=2404+38=243C
f、EBX=2442+38=247A
g、EBX=2480+38=24B8
h、EBX=24BE+38=24F6
8、循环加39共8次(用户名长度+4)后EBX=2885。
a、 EBX=268C+39=26C5
b、EBX=26CC+39=2705
c、EBX=270C+39=2745
d、EBX=274C+39=2785
e、EBX=278C+39=27C5
f、EBX=27CC+39=2805
g、EBX=280C+39=2845
h、EBX=284C+39=2885
0045D4C8 |. 4A ||DEC EDX
0045D4C9 |. 83FA FF ||CMP EDX,-1
0045D4CC |.^ 75 F2 |\JNZ SHORT aaa.0045D4C0
0045D4CE |> 41 |INC ECX===>初始值为0,后每循环一次自加1。
0045D4CF |. 40 |INC EAX
0045D4D0 |. FF4D EC |DEC DWORD PTR SS:[EBP-14]
0045D4D3 |.^ 75 D9 \JNZ SHORT aaa.0045D4AE
0045D4D5 |> 85DB TEST EBX,EBX====>EBX=2885。
0045D4D7 |. 7D 0D JGE SHORT aaa.0045D4E6
0045D4D9 |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
0045D4DC |. BA 04D64500 MOV EDX,aaa.0045D604 ; ASCII "gg"
0045D4E1 |. E8 3A70FAFF CALL aaa.00404520
0045D4E6 |> 8BC3 MOV EAX,EBX
0045D4E8 |. B9 A0860100 MOV ECX,186A0====>将186A0H(即十进制100000)移入ECX。
0045D4ED |. 99 CDQ
0045D4EE |. F7F9 IDIV ECX====>除法运算后EDX=2885。
0045D4F0 |. 8BDA MOV EBX,EDX====>余.2885移入EBX。
0045D4F2 |. 81FB 10270000 CMP EBX,2710====>比较。
0045D4F8 |. 7D 06 JGE SHORT aaa.0045D500====>大于等于则跳。
0045D4FA |. 81C3 80380100 ADD EBX,13880====>否则加13880。
0045D500 |> 3B5D F0 CMP EBX,DWORD PTR SS:[EBP-10]====>这里就是真假注册码(前5位)比较处。
0045D503 |. 74 0C JE SHORT aaa.0045D511====>相等则OK。
0045D505 |. B8 10D64500 MOV EAX,aaa.0045D610
0045D50A |. E8 ED2DFDFF CALL aaa.004302FC====>出错提示。
0045D50F |. EB 74 JMP SHORT aaa.0045D585
0045D511 |> B2 01 MOV DL,1
0045D513 |. A1 C4B44500 MOV EAX,DWORD PTR DS:[45B4C4]
0045D518 |. E8 A7E0FFFF CALL aaa.0045B5C4
0045D51D |. 8BD8 MOV EBX,EAX
0045D51F |. B1 01 MOV CL,1
0045D521 |. BA 5CD64500 MOV EDX,aaa.0045D65C; ASCII "Software\zgsq\bfUser"==>将注册信息加入注册表。
0045D526 |. 8BC3 MOV EAX,EBX
0045D528 |. E8 9BE1FFFF CALL aaa.0045B6C8
0045D52D |. 8D55 AC LEA EDX,DWORD PTR SS:[EBP-54]
0045D530 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0045D533 |. 8B80 20030000 MOV EAX,DWORD PTR DS:[EAX+320]
0045D539 |. E8 BA92FDFF CALL aaa.004367F8
0045D53E |. 8B45 AC MOV EAX,DWORD PTR SS:[EBP-54]
0045D541 |. 50 PUSH EAX
0045D542 |. 8D55 A0 LEA EDX,DWORD PTR SS:[EBP-60]
0045D545 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0045D548 |. 8B80 1C030000 MOV EAX,DWORD PTR DS:[EAX+31C]
0045D54E |. E8 A592FDFF CALL aaa.004367F8
0045D553 |. 8B45 A0 MOV EAX,DWORD PTR SS:[EBP-60]
0045D556 |. 8D55 A4 LEA EDX,DWORD PTR SS:[EBP-5C]
0045D559 |. E8 BAB1FAFF CALL aaa.00408718
0045D55E |. 8B45 A4 MOV EAX,DWORD PTR SS:[EBP-5C]
0045D561 |. 8D55 A8 LEA EDX,DWORD PTR SS:[EBP-58]
0045D564 |. E8 8BB2FAFF CALL aaa.004087F4
0045D569 |. 8B55 A8 MOV EDX,DWORD PTR SS:[EBP-58]
0045D56C |. 8BC3 MOV EAX,EBX
0045D56E |. 59 POP ECX
0045D56F |. E8 10E3FFFF CALL aaa.0045B884
0045D574 |. 8BC3 MOV EAX,EBX
0045D576 |. E8 1D61FAFF CALL aaa.00403698
0045D57B |. B8 7CD64500 MOV EAX,aaa.0045D67C
0045D580 |. E8 772DFDFF CALL aaa.004302FC
0045D585 |> 33C0 XOR EAX,EAX
0045D587 |. 5A POP EDX
0045D588 |. 59 POP ECX
0045D589 |. 59 POP ECX
总结:
1、注册码一定要9位,其中后4位参加运算。
2、参加运算的字符串为注册名字符+假注册码的后4位。如例子中用户名aman,假注册码123456789,转换后成为aman6789。
3、计算所得的值转换成十进制后再加上假注册码的后4位就是真正的注册码了。如上例中计算所得的值是2885,转换成十进制为10373,再加上假注册码的后4位即6789,成为103736789。这就是真正的注册码。
相关文章
网友评论(共有 0 条评论)