软件名称:变速精灵 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破解如何给软件脱壳基础教程
查看所有0条评论>>