个人日程助手 V1.0 算法补充
****************************0047AD81CALL Assistan.004776A4 **********************004776A4 /$55 PUSH EBP
004776A5 |.8BEC MOV EBP,ESP
004776A7 |.6A 00 PUSH 0
004776A9 |.6A 00 PUSH 0
004776AB |.6A 00 PUSH 0
004776AD |.53 PUSH EBX
004776AE |.56 PUSH ESI
004776AF |.8BF2 MOV ESI,EDX
004776B1 |.8945 FC MOV DWORD PTR SS:[EBP-4],EAX
004776B4 |.8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004776B7 |.E8 20CEF8FFCALL Assistan.004044DC
004776BC |.33C0 XOR EAX,EAX
004776BE |.55 PUSH EBP
004776BF |.68 5E774700PUSH Assistan.0047775E
004776C4 |.64:FF30 PUSH DWORD PTR FS:[EAX]
004776C7 |.64:8920 MOV DWORD PTR FS:[EAX],ESP
004776CA |.33DB XOR EBX,EBX
004776CC |.8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004776CF |.E8 18CCF8FFCALL Assistan.004042EC
004776D4 |.8BD0 MOV EDX,EAX
004776D6 |.85D2 TEST EDX,EDX
004776D8 |.76 1C JBE SHORT Assistan.004776F6
004776DA |.B8 01000000MOV EAX,1
004776DF |>8B4D FC /MOV ECX,DWORD PTR SS:[EBP-4] 〈----第一次运算
004776E2 |.0FB64C01 FF|MOVZX ECX,BYTE PTR DS:[ECX+EAX-1]
004776E7 |.03D9 |ADD EBX,ECX
004776E9 |.8BCB |MOV ECX,EBX
004776EB |.03C9 |ADD ECX,ECX
004776ED |.8D0C89 |LEA ECX,DWORD PTR DS:[ECX+ECX*4]
004776F0 |.8BD9 |MOV EBX,ECX
004776F2 |.40 |INC EAX
004776F3 |.4A |DEC EDX
004776F4 |.^ 75 E9 \JNZ SHORT Assistan.004776DF
004776F6 |>8BC3 MOV EAX,EBX
004776F8 |.33D2 XOR EDX,EDX
004776FA |.52 PUSH EDX ; /Arg2 => 00000000
004776FB |.50 PUSH EAX ; |Arg1
004776FC |.8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8] ; |
004776FF |.E8 D809F9FFCALL Assistan.004080DC 〈--------转化为十进制数; \Assistan.004080DC
00477704 |.33DB XOR EBX,EBX
00477706 |.8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
00477709 |.E8 DECBF8FFCALL Assistan.004042EC
0047770E |.83F8 01 CMP EAX,1
00477711 |.72 18 JB SHORT Assistan.0047772B
00477713 |>8B55 F8 /MOV EDX,DWORD PTR SS:[EBP-8] 〈----第二次运算
00477716 |.0FB65402 FF|MOVZX EDX,BYTE PTR DS:[EDX+EAX-1]
0047771B |.03DA |ADD EBX,EDX
0047771D |.8BD3 |MOV EDX,EBX
0047771F |.03D2 |ADD EDX,EDX
00477721 |.8D1492 |LEA EDX,DWORD PTR DS:[EDX+EDX*4]
00477724 |.8BDA |MOV EBX,EDX
00477726 |.48 |DEC EAX
00477727 |.85C0 |TEST EAX,EAX
00477729 |.^ 75 E8 \JNZ SHORT Assistan.00477713
0047772B |>8BC3 MOV EAX,EBX
0047772D |.33D2 XOR EDX,EDX
0047772F |.52 PUSH EDX ; /Arg2 => 00000000
00477730 |.50 PUSH EAX ; |Arg1
00477731 |.8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C] ; |
00477734 |.E8 A309F9FFCALL Assistan.004080DC 〈--------转化为十进制数; \Assistan.004080DC
00477739 |.8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
0047773C |.8BD6 MOV EDX,ESI
0047773E |.E8 AD07F9FFCALL Assistan.00407EF0
00477743 |.33C0 XOR EAX,EAX
00477745 |.5A POP EDX
00477746 |.59 POP ECX
00477747 |.59 POP ECX
00477748 |.64:8910 MOV DWORD PTR FS:[EAX],EDX
0047774B |.68 65774700PUSH Assistan.00477765
00477750 |>8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
00477753 |.BA 03000000MOV EDX,3
00477758 |.E8 F3C8F8FFCALL Assistan.00404050
0047775D \.C3 RETN
算法总结:先取得机器码的十六进制ACSII码,按公式计算出一个十六进制数 A ,把 A 转化为十进制数,得B ;取得 B 的十六进制ACSII码, 按公式再算出一个值C,把 C 转化为十进制数就是真正的注册码了。
公式: 设值 X,初始值为 0
[(机器码+X)*2]+[(机器码+X)*2]*4,值再赋给 X
循环计算完。
比如:我的机器码: 1072501532
十六进制ACSII码:31 30 37 32 35 30 31 35 33 32
第一次运算得:AC679438 ------〉十进制数:2892469304
2892469304
32 38 39 32 34 36 39 33 30 34
第二次运算得:94F56F1C ------〉十进制数:2499112732 ----〉注册码啦!!
表达能力不好,凑合着看吧!
页:
[1]