文章导航PC6首页软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

您的位置:首页精文荟萃破解文章 → 变速精灵 XP 简体中文版注册分析

变速精灵 XP 简体中文版注册分析

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

 

软件名称:变速精灵 XP 简体中文版
软件简介:变速精灵是一个可以改变Windows 软件速度的神奇软件。
您可以使用变速精灵加快或者减慢软件的运行速度,例如您的游戏软件。
变速精灵XP是目前最新最好用的一个版本
软件主页: http://www.speederxp.com
下载地址:从电脑报2002合订本配套光盘中挖出来的!
破解过程:


1、用W32Dasm反编该软件后,查找到字符串“变速精灵-未注册板”。
双击后我们就可以来到下面这里:


* Possible StringData Ref from Data Obj ->"变速精灵 - 未注册版"
|
:00403762 68B4B14000 push 0040B1B4
:00403767 8BCF mov ecx, edi



2、向上来到:
:004036B0 64A100000000 mov eax, dword ptr fs:[00000000]
:004036B6 6AFF push FFFFFFFF
:004036B8 6841734000 push 00407341
:004036BD 50 push eax
:004036BE 8B442410 mov eax, dword ptr [esp+10] ;? eax 显示189993728(计算后的机器码)
:004036C2 64892500000000 mov dword ptr fs:[00000000], esp ;我的机器码是189-728-1015-993
:004036C9 81EC10040000 sub esp, 00000410 ;是机器码的1,4,2部分相连
:004036CF 57 push edi
:004036D0 8BF9 mov edi, ecx
:004036D2 50 push eax
:004036D3 C7476001000000 mov [edi+60], 00000001
:004036DA E8D1D9FFFF call 004010B0 ;进入
:004036DF 8B8C242C040000 mov ecx, dword ptr [esp+0000042C]
:004036E6 83C404 add esp, 00000004
:004036E9 3BC1 cmp eax, ecx ;判断真假注册码
:004036EB 0F8484010000 je 00403875 ;相等则跳
:004036F1 56 push esi
:004036F2 8D4C2410 lea ecx, dword ptr [esp+10]
:004036F6 C7476000000000 mov [edi+60], 00000000



3、进入后来到:
* Referenced by a CALL at Address:
|:004036DA
|
:004010B0 55 push ebp
:004010B1 8BEC mov ebp, esp
:004010B3 56 push esi
:004010B4 8B7508 mov esi, dword ptr [ebp+08]
:004010B7 C1EE0A shr esi, 0A ;将计算后的机器码右移10位
:004010BA 8D05D0104000 lea eax, dword ptr [004010D0]
:004010C0 50 push eax
:004010C1 E8CAFFFFFF call 00401090 ;再进入
:004010C6 C3 ret
4、进入后来到:
:00401090 55 push ebp
:00401091 8BEC mov ebp, esp
:00401093 51 push ecx
:00401094 E800000000 call 00401099 ;再进入


* Referenced by a CALL at Address:
|:00401094
|
:00401099 58 pop eax ;来到这
:0040109A 83E819 sub eax, 00000019
:0040109D 8945FC mov dword ptr [ebp-04], eax
:004010A0 8B45FC mov eax, dword ptr [ebp-04]
:004010A3 8BE5 mov esp, ebp
:004010A5 5D pop ebp
:004010A6 C3 ret


5、最后来到:
:004010D0 C14D080F ror dword ptr [ebp+08], 0F ;机器码循环右移15位
:004010D4 8B4508 mov eax, dword ptr [ebp+08] ;存入eax
:004010D7 33C9 xor ecx, ecx ;计数器ecx清零


* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004010EA(C)
|
:004010D9 8BD0 mov edx, eax ;存入edx
:004010DB D3EA shr edx, cl ;右移cl位
:004010DD 83E203 and edx, 00000003 ;与3
:004010E0 03D6 add edx, esi ;加上esi(esi初值为计算后的机器码右移10位的值)
:004010E2 D1E2 shl edx, 1 ;左移1位
:004010E4 41 inc ecx ;计数器加1
:004010E5 8BF2 mov esi, edx ;再存入esi中
:004010E7 83F91F cmp ecx, 0000001F ;比较计数器是否为31
:004010EA 7CED jl 004010D9 ;小于再次计算
:004010EC 8BC6 mov eax, esi ;最后存入eax,也就是真注册码
:004010EE 5E pop esi
:004010EF 5D pop ebp
:004010F0 C3 ret



机器码:189-728-1015-993
注册码:4211606004
用真注册码重新注册后,成功!


内存注册机免写,太简单了!
注册机免写,能力不足,有人帮忙么。


没人破过吧!



13.
超级Ping V1.0算法分析


超级Ping V1.0
超级Ping1.0(PingPlus V1.0)是一个可以实现对多个主机网络状态的实时监测,并有自动记录分析结果、断网自动告警等功能的网络监测软件。监测的结果可以记录在以IP地址为文件名的文本文件中,也可以记录在Acess数据库中,由用户自由选择。PingPlus的使用非常简便、功能强大且稳定,可以极大地方便网管人员的工作...
原版下载:
http://211.147.192.99/movie/vc/tools/PingPlus_Setup.exe



00406448 . 8D4C24 24 LEA ECX,DWORD PTR SS:[ESP+24]
0040644C . 8D5424 14 LEA EDX,DWORD PTR SS:[ESP+14]
00406450 . 51 PUSH ECX
00406451 . 68 60C14000 PUSH PingPlus.0040C160 ; ASCII "%s"
00406456 . 52 PUSH EDX
00406457 . E8 240C0000 CALL
0040645C . 8B85 E8000000 MOV EAX,DWORD PTR SS:[EBP+E8]
00406462 . 50 PUSH EAX ; /s2
00406463 . 8B4424 24 MOV EAX,DWORD PTR SS:[ESP+24] ; |
00406467 . 50 PUSH EAX ; |s1
00406468 . FF15 90934000 CALL NEAR DWORD PTR DS:[<&MSVCRT._mbscmp>; \_mbscmp====》此CALL为注册码比较处,至此真注册码已计算完成。如果只想找注册码的话在此处下断吧!寄存器里就有了。如想揪出算法就需要继续往上找。真正的算法从406310处开始。
0040646E . 83C4 14 ADD ESP,14
00406471 . 85C0 TEST EAX,EAX
00406473 . 6A 00 PUSH 0
00406475 . 0F85 1B010000 JNZ PingPlus.00406596====》此处跳往出错处。
0040647B . 68 D8C74000 PUSH PingPlus.0040C7D8
00406480 . 68 A4C74000 PUSH PingPlus.0040C7A4
00406485 . 8BCD MOV ECX,EBP
00406487 . E8 B00D0000 CALL
0040648C . 8D4C24 1C LEA ECX,DWORD PTR SS:[ESP+1C]
00406490 . 8D5424 10 LEA EDX,DWORD PTR SS:[ESP+10]
00406494 . 51 PUSH ECX ; /pDisposition
00406495 . 8B35 10904000 MOV ESI,DWORD PTR DS:[<&ADVAPI32.RegCrea>; |ADVAPI32.RegCreateKeyExA
0040649B . 52 PUSH EDX ; |pHandle
0040649C . 6A 00 PUSH 0 ; |pSecurity = NULL
0040649E . 68 06000200 PUSH 20006 ; |Access = KEY_WRITE
004064A3 . 6A 00 PUSH 0 ; |Options = REG_OPTION_NON_VOLATILE
004064A5 . 6A 00 PUSH 0 ; |Class = NULL
004064A7 . 6A 00 PUSH 0 ; |Reserved = 0
004064A9 . 68 88C74000 PUSH PingPlus.0040C788 ; |Subkey = "Software\Microsoft\PInfo"
004064AE . 68 01000080 PUSH 80000001 ; |hKey = HKEY_CURRENT_USER
004064B3 . C74424 3C 1B0>MOV DWORD PTR SS:[ESP+3C],1B ; |
004064BB . FFD6 CALL NEAR ESI ; \RegCreateKeyExA
004064BD . 8B3D 0C904000 MOV EDI,DWORD PTR DS:[<&ADVAPI32.RegSetV>; ADVAPI32.RegSetvalueExA
004064C3 . 8B1D 00904000 MOV EBX,DWORD PTR DS:[<&ADVAPI32.RegClos>; ADVAPI32.RegCloseKey
004064C9 . 85C0 TEST EAX,EAX
004064CB . 75 30 JNZ SHORT PingPlus.004064FD
004064CD . 8B4C24 10 MOV ECX,DWORD PTR SS:[ESP+10]
004064D1 . 8D4424 18 LEA EAX,DWORD PTR SS:[ESP+18]
004064D5 . 6A 04 PUSH 4 ; /BufSize = 4
004064D7 . 50 PUSH EAX ; |Buffer
004064D8 . 6A 04 PUSH 4 ; |valueType = REG_DWORD
004064DA . 6A 00 PUSH 0 ; |Reserved = 0
004064DC . 68 80C74000 PUSH PingPlus.0040C780 ; |valueName = "State"
004064E1 . 51 PUSH ECX ; |hKey
004064E2 . FFD7 CALL NEAR EDI ; \RegSetvalueExA
004064E4 . 85C0 TEST EAX,EAX
004064E6 . 74 0E JE SHORT PingPlus.004064F6
004064E8 . 6A 00 PUSH 0
004064EA . 6A 00 PUSH 0
004064EC . 68 60C74000 PUSH PingPlus.0040C760
004064F1 . E8 0E0C0000 CALL
004064F6 > 8B5424 10 MOV EDX,DWORD PTR SS:[ESP+10]
004064FA . 52 PUSH EDX
004064FB . FFD3 CALL NEAR EBX
004064FD > 8D4424 1C LEA EAX,DWORD PTR SS:[ESP+1C]
00406501 . 8D4C24 10 LEA ECX,DWORD PTR SS:[ESP+10]
00406505 . 50 PUSH EAX
00406506 . 51 PUSH ECX
00406507 . 6A 00 PUSH 0
00406509 . 68 06000200 PUSH 20006
0040650E . 6A 00 PUSH 0
00406510 . 6A 00 PUSH 0
00406512 . 6A 00 PUSH 0
00406514 . 68 28C74000 PUSH PingPlus.0040C728 ; ASCII "Software\PingPlus"
00406519 . 68 01000080 PUSH 80000001
0040651E . FFD6 CALL NEAR ESI
00406520 . 85C0 TEST EAX,EAX
00406522 . 75 4B JNZ SHORT PingPlus.0040656F
00406524 . 51 PUSH ECX
00406525 . 8DB5 E4000000 LEA ESI,DWORD PTR SS:[EBP+E4]
0040652B . 8BCC MOV ECX,ESP
0040652D . 896424 24 MOV DWORD PTR SS:[ESP+24],ESP
00406531 . 56 PUSH ESI
00406532 . E8 BD0C0000 CALL
00406537 . 8BCD MOV ECX,EBP
00406539 . E8 92000000 CALL PingPlus.004065D0
0040653E . 8B16 MOV EDX,DWORD PTR DS:[ESI]
00406540 . 8B4A F8 MOV ECX,DWORD PTR DS:[EDX-8]
00406543 . 41 INC ECX
00406544 . 51 PUSH ECX
00406545 . 50 PUSH EAX
00406546 . 8B4424 18 MOV EAX,DWORD PTR SS:[ESP+18]
0040654A . 6A 01 PUSH 1
0040654C . 6A 00 PUSH 0
0040654E . 68 1CC74000 PUSH PingPlus.0040C71C ; ASCII "UserName"
00406553 . 50 PUSH EAX
00406554 . FFD7 CALL NEAR EDI
00406556 . 85C0 TEST EAX,EAX
00406558 . 74 0E JE SHORT PingPlus.00406568
0040655A . 6A 00 PUSH 0
0040655C . 6A 00 PUSH 0
0040655E . 68 50C74000 PUSH PingPlus.0040C750
00406563 . E8 9C0B0000 CALL
00406568 > 8B4C24 10 MOV ECX,DWORD PTR SS:[ESP+10]
0040656C . 51 PUSH ECX
0040656D . FFD3 CALL NEAR EBX
0040656F > E8 D60A0000 CALL
00406574 . 85C0 TEST EAX,EAX
00406576 . 74 09 JE SHORT PingPlus.00406581
00406578 . 8B10 MOV EDX,DWORD PTR DS:[EAX]
0040657A . 8BC8 MOV ECX,EAX
0040657C . FF52 7C CALL NEAR DWORD PTR DS:[EDX+7C]
0040657F . EB 02 JMP SHORT PingPlus.00406583
00406581 > 33C0 XOR EAX,EAX
00406583 > 8BCD MOV ECX,EBP
00406585 . C780 98050000>MOV DWORD PTR DS:[EAX+598],1B
0040658F . E8 C20A0000 CALL
00406594 . EB 11 JMP SHORT PingPlus.004065A7
00406596 > 68 48C74000 PUSH PingPlus.0040C748=====》从何处来?
0040659B . 68 3CC74000 PUSH PingPlus.0040C73C=====》此处为出错提示处。往上查找跳到此处的地方。
004065A0 . 8BCD MOV ECX,EBP
004065A2 . E8 950C0000 CALL
004065A7 > 8D4C24 14 LEA ECX,DWORD PTR SS:[ESP+14]
004065AB . C74424 64 FFF>MOV DWORD PTR SS:[ESP+64],-1
004065B3 . E8 1E090000 CALL
004065B8 . 8B4C24 5C MOV ECX,DWORD PTR SS:[ESP+5C]
004065BC . 5F POP EDI
004065BD . 5E POP ESI
004065BE . 5D POP EBP
004065BF . 64:890D 00000>MOV DWORD PTR FS:[0],ECX
004065C6 . 5B POP EBX
004065C7 . 83C4 58 ADD ESP,58
004065CA . C3 RETN



计算注册码的地方到了!



00406310 . 6A FF PUSH -1
00406312 . 68 68814000 PUSH PingPlus.00408168 ; SE handler installation
00406317 . 64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
0040631D . 50 PUSH EAX
0040631E . 64:8925 00000>MOV DWORD PTR FS:[0],ESP
00406325 . 83EC 4C SUB ESP,4C
00406328 . 53 PUSH EBX
00406329 . 55 PUSH EBP
0040632A . 8BE9 MOV EBP,ECX
0040632C . 56 PUSH ESI
0040632D . 57 PUSH EDI
0040632E . 8D4C24 14 LEA ECX,DWORD PTR SS:[ESP+14]
00406332 . E8 B10B0000 CALL
00406337 . 6A 01 PUSH 1
00406339 . 8BCD MOV ECX,EBP
0040633B . C74424 68 000>MOV DWORD PTR SS:[ESP+68],0
00406343 . E8 260D0000 CALL
00406348 . 8BBD E4000000 MOV EDI,DWORD PTR SS:[EBP+E4]====》将用户名移入EDI。
0040634E . 83C9 FF OR ECX,FFFFFFFF
00406351 . 33C0 XOR EAX,EAX
00406353 . 8D5424 24 LEA EDX,DWORD PTR SS:[ESP+24]
00406357 . F2:AE REPNE SCAS BYTE PTR ES:[EDI]
00406359 . F7D1 NOT ECX
0040635B . 2BF9 SUB EDI,ECX
0040635D . 8BC1 MOV EAX,ECX====》EAC中为用户名字符个数。
0040635F . 8BF7 MOV ESI,EDI====》将EDI中的用户名移入ESI。
00406361 . 8BFA MOV EDI,EDX
00406363 . C1E9 02 SHR ECX,2
00406366 . F3:A5 REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS>
00406368 . 8BC8 MOV ECX,EAX
0040636A . 33C0 XOR EAX,EAX
0040636C . 83E1 03 AND ECX,3====》ECX中为用户名字符个数+1。
0040636F . F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[>
00406371 . 8D7C24 24 LEA EDI,DWORD PTR SS:[ESP+24]====》把用户名移入EDI。
00406375 . 83C9 FF OR ECX,FFFFFFFF
00406378 . F2:AE REPNE SCAS BYTE PTR ES:[EDI]
0040637A . F7D1 NOT ECX
0040637C . 49 DEC ECX
0040637D . 83F9 13 CMP ECX,13====》此ECX中为用户名长度,与13H比较。
00406380 . 7D 0F JGE SHORT PingPlus.00406391====》大于等于13H则跳。否则往下。
00406382 > 8AD1 MOV DL,CL====》CL的循环初始值为用户名字符个数。
00406384 . 80C2 41 ADD DL,41====》加上41,即转换为英文字母。
00406387 . 88540C 24 MOV BYTE PTR SS:[ESP+ECX+24],DL====》将得到的英文字母依次保存。
0040638B . 41 INC ECX====》用户名字符个数自加1。
0040638C . 83F9 13 CMP ECX,13====》与13H比较。
0040638F .^ 7C F1 JL SHORT PingPlus.00406382====》小于则跳。继续循环。循环的次数为13H-用户名字符个数。
00406391 > 8B4C24 33 MOV ECX,DWORD PTR SS:[ESP+33]====》将用户名字符串的16-19位字符的十六进制值移入ECX。
00406395 . 8B4424 2F MOV EAX,DWORD PTR SS:[ESP+2F]====》将用户名字符串的12-15位字符的十六进制值移入EAX。
00406399 . 8B5424 26 MOV EDX,DWORD PTR SS:[ESP+26]====》将用户名字符串的3-6位字符的十六进制值移入EDX。
0040639D . 894C24 40 MOV DWORD PTR SS:[ESP+40],ECX====》将16-19位保存。
004063A1 . 66:8B4C24 2E MOV CX,WORD PTR SS:[ESP+2E]====》将用户名字符串的11-12位字符的十六进制值移入CX。
004063A6 . 894424 3C MOV DWORD PTR SS:[ESP+3C],EAX====》将12-15位保存。
004063AA . 8B4424 2A MOV EAX,DWORD PTR SS:[ESP+2A]====》将用户名字符串的7-10位字符的十六进制值移入EAX。
004063AE . 895424 44 MOV DWORD PTR SS:[ESP+44],EDX====》将3-6位保存。
004063B2 . 8A5424 30 MOV DL,BYTE PTR SS:[ESP+30]=====》将用户名字符串的第13位字符的十六进制值移入DL。
004063B6 . 66:894C24 4C MOV WORD PTR SS:[ESP+4C],CX====》将11-12位保存。
004063BB . C64424 37 00 MOV BYTE PTR SS:[ESP+37],0
004063C0 . 894424 48 MOV DWORD PTR SS:[ESP+48],EAX====》将7-10位保存。
004063C4 . 885424 4E MOV BYTE PTR SS:[ESP+4E],DL====》将第13位保存。
004063C8 . C64424 4F 00 MOV BYTE PTR SS:[ESP+4F],0
004063CD . 33C9 XOR ECX,ECX
004063CF > 0FBE440C 3C MOVSX EAX,BYTE PTR SS:[ESP+ECX+3C]====》从第12位开始依次取字符串中连续8个字符的十六进制值。再依次取3-13位字符。共19位。
004063D4 . BE 1A000000 MOV ESI,1A====》将1AH移入ESI。
004063D9 . 8D4480 09 LEA EAX,DWORD PTR DS:[EAX+EAX*4+9]====》换算。EAX=EAX+EAX*4+9。
004063DD . 99 CDQ===》扩展。
004063DE . F7FE IDIV ESI====》除以1AH。
004063E0 . 80C2 41 ADD DL,41====》余数加上41H。即转换成英文字母。
004063E3 . 88540C 24 MOV BYTE PTR SS:[ESP+ECX+24],DL====》将所得的英文字母保存。
004063E7 . 41 INC ECX====》自加1。
004063E8 . 83F9 13 CMP ECX,13====》比较。
004063EB .^ 7C E2 JL SHORT PingPlus.004063CF====》小于则跳。继续循环。否则往下。
004063ED . BF 1A000000 MOV EDI,1A
004063F2 . 8D4424 24 LEA EAX,DWORD PTR SS:[ESP+24]====》将处理好的字符串移入EAX,第一步加密结束。
004063F6 . 33F6 XOR ESI,ESI====》清零。
004063F8 . 2BF8 SUB EDI,EAX
004063FA > 8D4C34 24 LEA ECX,DWORD PTR SS:[ESP+ESI+24]====》第二步计算注册码开始。将第一步所得的字符串移入ECX。下次处理时把未处理的字符串移入ECX。
004063FE . B8 BC070000 MOV EAX,7BC
00406403 . 99 CDQ
00406404 . 8D1C0F LEA EBX,DWORD PTR DS:[EDI+ECX]====》将DS中的值(初始值为1AH,每循环一次增加1)移入EBX。
00406407 . F7FB IDIV EBX====》除以1AH。
00406409 . 8BD8 MOV EBX,EAX====》得数移入EBX。
0040640B . 0FBE01 MOVSX EAX,BYTE PTR DS:[ECX]====》依次将字符的十六进制值逐个移入EAX进行处理。
0040640E . 99 CDQ
0040640F . 2BC2 SUB EAX,EDX====》字符的十六进制值减去余数(其实此处的EDX的值均为零)。
00406411 . D1F8 SAR EAX,1=====》右移1。
00406413 . 02D8 ADD BL,AL=====》相加。
00406415 . 80FB 41 CMP BL,41=====》比较是不是英文字母。
00406418 . 8819 MOV BYTE PTR DS:[ECX],BL
0040641A . 7D 10 JGE SHORT PingPlus.0040642C====》是则跳。
0040641C . 0FBEC3 MOVSX EAX,BL
0040641F . 99 CDQ
00406420 . BB 1A000000 MOV EBX,1A
00406425 . F7FB IDIV EBX
00406427 . 80C2 41 ADD DL,41
0040642A . 8811 MOV BYTE PTR DS:[ECX],DL
0040642C > 8A01 MOV AL,BYTE PTR DS:[ECX]
0040642E . 3C 5A CMP AL,5A====》比较。
00406430 . 7E 10 JLE SHORT PingPlus.00406442====》小于5AH,即为大写字母则跳。否则往下。
00406432 . 0FBEC0 MOVSX EAX,AL====》将该字符的十六进制值移入EAX重新进行计算。
00406435 . 99 CDQ
00406436 . BB 1A000000 MOV EBX,1A
0040643B . F7FB IDIV EBX===》除以1AH。
0040643D . 80C2 41 ADD DL,41====》余数加上41H。
00406440 . 8811 MOV BYTE PTR DS:[ECX],DL====》将所得值保存,替换原字符。
00406442 > 46 INC ESI====》自加1。
00406443 . 83FE 13 CMP ESI,13====》比较。
00406446 .^ 7C B2 JL SHORT PingPlus.004063FA====》未到13H位则继续循环。
00406448 . 8D4C24 24 LEA ECX,DWORD PTR SS:[ESP+24]====》循环结束后将处理完的字符串(其实就是真正的注册码了!)移入ECX。
0040644C . 8D5424 14 LEA EDX,DWORD PTR SS:[ESP+14]
00406450 . 51 PUSH ECX
00406451 . 68 60C14000 PUSH PingPlus.0040C160 ; ASCII "%s"
00406456 . 52 PUSH EDX
00406457 . E8 240C0000 CALL
0040645C . 8B85 E8000000 MOV EAX,DWORD PTR SS:[EBP+E8]=====》将输入的假注册码移入EAX。
00406462 . 50 PUSH EAX ; /s2
00406463 . 8B4424 24 MOV EAX,DWORD PTR SS:[ESP+24] ; |
00406467 . 50 PUSH EAX ; |s1
00406468 . FF15 90934000 CALL NEAR DWORD PTR DS:[<&MSVCRT._mbscmp>; \_mbscmp====》比较真假注册码。
0040646E . 83C4 14 ADD ESP,14
00406471 . 85C0 TEST EAX,EAX
00406473 . 6A 00 PUSH 0
00406475 . 0F85 1B010000 JNZ PingPlus.00406596
0040647B . 68 D8C74000 PUSH PingPlus.0040C7D8
00406480 . 68 A4C74000 PUSH PingPlus.0040C7A4
00406485 . 8BCD MOV ECX,EBP
00406487 . E8 B00D0000 CALL
0040648C . 8D4C24 1C LEA ECX,DWORD PTR SS:[ESP+1C]
00406490 . 8D5424 10 LEA EDX,DWORD PTR SS:[ESP+10]
00406494 . 51 PUSH ECX ; /pDisposition
00406495 . 8B35 10904000 MOV ESI,DWORD PTR DS:[<&ADVAPI32.RegCrea>; |ADVAPI32.RegCreateKeyExA
0040649B . 52 PUSH EDX ; |pHandle
0040649C . 6A 00 PUSH 0 ; |pSecurity = NULL
0040649E . 68 06000200 PUSH 20006 ; |Access = KEY_WRITE
004064A3 . 6A 00 PUSH 0 ; |Options = REG_OPTION_NON_VOLATILE
004064A5 . 6A 00 PUSH 0 ; |Class = NULL
004064A7 . 6A 00 PUSH 0 ; |Reserved = 0
004064A9 . 68 88C74000 PUSH PingPlus.0040C788 ; |Subkey = "Software\Microsoft\PInfo"
004064AE . 68 01000080 PUSH 80000001 ; |hKey = HKEY_CURRENT_USER
004064B3 . C74424 3C 1B0>MOV DWORD PTR SS:[ESP+3C],1B ; |
004064BB . FFD6 CALL NEAR ESI ; \RegCreateKeyExA
004064BD . 8B3D 0C904000 MOV EDI,DWORD PTR DS:[<&ADVAPI32.RegSetV>; ADVAPI32.RegSetvalueExA
004064C3 . 8B1D 00904000 MOV EBX,DWORD PTR DS:[<&ADVAPI32.RegClos>; ADVAPI32.RegCloseKey
004064C9 . 85C0 TEST EAX,EAX
004064CB . 75 30 JNZ SHORT PingPlus.004064FD
004064CD . 8B4C24 10 MOV ECX,DWORD PTR SS:[ESP+10]
004064D1 . 8D4424 18 LEA EAX,DWORD PTR SS:[ESP+18]
004064D5 . 6A 04 PUSH 4 ; /BufSize = 4
004064D7 . 50 PUSH EAX ; |Buffer
004064D8 . 6A 04 PUSH 4 ; |valueType = REG_DWORD
004064DA . 6A 00 PUSH 0 ; |Reserved = 0
004064DC . 68 80C74000 PUSH PingPlus.0040C780 ; |valueName = "State"
004064E1 . 51 PUSH ECX ; |hKey
004064E2 . FFD7 CALL NEAR EDI ; \RegSetvalueExA
004064E4 . 85C0 TEST EAX,EAX
004064E6 . 74 0E JE SHORT PingPlus.004064F6
004064E8 . 6A 00 PUSH 0
004064EA . 6A 00 PUSH 0
004064EC . 68 60C74000 PUSH PingPlus.0040C760
004064F1 . E8 0E0C0000 CALL
004064F6 > 8B5424 10 MOV EDX,DWORD PTR SS:[ESP+10]
004064FA . 52 PUSH EDX
004064FB . FFD3 CALL NEAR EBX
004064FD > 8D4424 1C LEA EAX,DWORD PTR SS:[ESP+1C]
00406501 . 8D4C24 10 LEA ECX,DWORD PTR SS:[ESP+10]
00406505 . 50 PUSH EAX
00406506 . 51 PUSH ECX
00406507 . 6A 00 PUSH 0
00406509 . 68 06000200 PUSH 20006
0040650E . 6A 00 PUSH 0
00406510 . 6A 00 PUSH 0
00406512 . 6A 00 PUSH 0
00406514 . 68 28C74000 PUSH PingPlus.0040C728 ; ASCII "Software\PingPlus"
00406519 . 68 01000080 PUSH 80000001
0040651E . FFD6 CALL NEAR ESI
00406520 . 85C0 TEST EAX,EAX
00406522 . 75 4B JNZ SHORT PingPlus.0040656F
00406524 . 51 PUSH ECX
00406525 . 8DB5 E4000000 LEA ESI,DWORD PTR SS:[EBP+E4]
0040652B . 8BCC MOV ECX,ESP
0040652D . 896424 24 MOV DWORD PTR SS:[ESP+24],ESP
00406531 . 56 PUSH ESI
00406532 . E8 BD0C0000 CALL
00406537 . 8BCD MOV ECX,EBP
00406539 . E8 92000000 CALL PingPlus.004065D0
0040653E . 8B16 MOV EDX,DWORD PTR DS:[ESI]
00406540 . 8B4A F8 MOV ECX,DWORD PTR DS:[EDX-8]
00406543 . 41 INC ECX
00406544 . 51 PUSH ECX
00406545 . 50 PUSH EAX
00406546 . 8B4424 18 MOV EAX,DWORD PTR SS:[ESP+18]
0040654A . 6A 01 PUSH 1
0040654C . 6A 00 PUSH 0
0040654E . 68 1CC74000 PUSH PingPlus.0040C71C ; ASCII "UserName"
00406553 . 50 PUSH EAX
00406554 . FFD7 CALL NEAR EDI
00406556 . 85C0 TEST EAX,EAX
00406558 . 74 0E JE SHORT PingPlus.00406568
0040655A . 6A 00 PUSH 0
0040655C . 6A 00 PUSH 0
0040655E . 68 50C74000 PUSH PingPlus.0040C750
00406563 . E8 9C0B0000 CALL
00406568 > 8B4C24 10 MOV ECX,DWORD PTR SS:[ESP+10]
0040656C . 51 PUSH ECX
0040656D . FFD3 CALL NEAR EBX
0040656F > E8 D60A0000 CALL
00406574 . 85C0 TEST EAX,EAX
00406576 . 74 09 JE SHORT PingPlus.00406581
00406578 . 8B10 MOV EDX,DWORD PTR DS:[EAX]
0040657A . 8BC8 MOV ECX,EAX
0040657C . FF52 7C CALL NEAR DWORD PTR DS:[EDX+7C]
0040657F . EB 02 JMP SHORT PingPlus.00406583
00406581 > 33C0 XOR EAX,EAX
00406583 > 8BCD MOV ECX,EBP
00406585 . C780 98050000>MOV DWORD PTR DS:[EAX+598],1B
0040658F . E8 C20A0000 CALL
00406594 . EB 11 JMP SHORT PingPlus.004065A7
00406596 > 68 48C74000 PUSH PingPlus.0040C748
0040659B . 68 3CC74000 PUSH PingPlus.0040C73C
004065A0 . 8BCD MOV ECX,EBP
004065A2 . E8 950C0000 CALL
004065A7 > 8D4C24 14 LEA ECX,DWORD PTR SS:[ESP+14]
004065AB . C74424 64 FFF>MOV DWORD PTR SS:[ESP+64],-1
004065B3 . E8 1E090000 CALL
004065B8 . 8B4C24 5C MOV ECX,DWORD PTR SS:[ESP+5C]
004065BC . 5F POP EDI
004065BD . 5E POP ESI
004065BE . 5D POP EBP
004065BF . 64:890D 00000>MOV DWORD PTR FS:[0],ECX
004065C6 . 5B POP EBX
004065C7 . 83C4 58 ADD ESP,58
004065CA . C3 RETN


总结如下:



1、用户名长度最长为19位(此软件最多可以输入20位,但第20位无效)。


2、用户名长度如果不足19位,程序将自动补齐不足的部分。补齐算法见上述分析。
例如用户名为abcd,则补齐部分的第一个字符的十六进制值为4H(用户名长度)+41H=45H,即字母E,以后的分别 为 F--S。用户名补齐后为abcdEFGHIJKLMNOPQRS。


3、计算注册码:


第一步:先把用户名加密成另一字符串。
从第12位开始依次取用户名字符串中连续8个字符的十六进制值,接着依次取3-13位进行计算。仍以上面的为例:
第12位L十六进制值4C,相应的加密字符=(4C*5+9)除以1A的余数+41,即41,字符为Z。
第13位M十六进制值4D,相应的加密字符=(4D*5+9)除以1A的余数+41,即45,字符为E。
第14位N十六进制值4E,相应的加密字符=(4E*5+9)除以1A的余数+41,即4A,字符为J。



加密后的字符串为: ZEJOTYDIKPQVAFKPUZE



第二步:将加密后的字符串换算成注册码。(注意注册码必须为大写英文字母)


现仅以计算前几位注册码为例:其中7BC和1A为常数。


第一位注册码:Z的十六进制值为5A
5A/2=2D
7BC/1A=4C
2D+4C=79-------即字母y。由于79大于5A(即属小写字母),所以要继续换算。
79/1A=4------余11
11+41=52---------即字母R。这就是注册码的第一位。
第二位注册码:E的十六进制值为45
45/2=22
7BC/(1A+1)=49
22+49=6B---------即字母k。由于6B大于5A(即属小写字母),所以要继续换算。
6B/1A=4-----------余3
3+41=44-----------即字母D。这就是注册码的第二位。
第三位注册码:J的十六进制值为4A
4A/2=25
7BC/(1A+2)=46
25+46=6B---------即字母k。由于6B大于5A(即属小写字母),所以要继续换算。
6B/1A=4-----------余3
3+41=44-----------即字母D。这就是注册码的第三位。
其余以此类推。此例的注册码为: RDDDEDRSRSRSTUVXYNO



不知各位发现没有,用户名的前两个字符对注册码的生成是不起作用的。



呵呵!总算写完了。写这样的破文真累。交差!


2003年3月11日


    
    
     
    
    
     

相关阅读 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破解如何给软件脱壳基础教程