skyege 发表于 2005-6-11 20:13:41

个人日程助手 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]
查看完整版本: 个人日程助手 V1.0 算法补充