計算機專業詞彙學習1.0演算法分析[原創] (14千字)

看雪資料發表於2001-12-13

計算機專業詞彙學習1.0演算法分析
作者:ssljx
軟體名稱:計算機專業詞彙學習1.0
用途:主要為考程式設計師&高階程式學習詞彙使用
下載網址:http://www.21cmm.com/rjxz/learn.zip
大小:1420kB
工具:trw2000

這是我第一個分析演算法的軟體,下面我用U1-->U6代表使用者名稱相應前面六位..用bpx hmemcpy攔截來到這裡..


:004055EA 8D45F8                  lea eax, dword ptr [ebp-08]
:004055ED B901000000              mov ecx, 00000001
:004055F2 BA01000000              mov edx, 00000001
:004055F7 E864F50800              call 00494B60
:004055FC 837DF400                cmp dword ptr [ebp-0C], 00000000
:00405600 7405                    je 00405607
:00405602 8B45F4                  mov eax, dword ptr [ebp-0C]
:00405605 EB05                    jmp 0040560C

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00405600(C)
|
:00405607 B84CC34A00              mov eax, 004AC34C

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0040559D(C), :00405605(U)
|
:0040560C 0FBE10                  movsx edx, byte ptr [eax]//取使用者名稱第一位U1的ASCII16進位制碼                                                            ==>edx
:0040560F 69FA9A020000            imul edi, edx, 0000029A//U1*29A=12b2e==>edi把值儲存在EDI
:00405615 33C0                    xor eax, eax
:00405617 8D55EC                  lea edx, dword ptr [ebp-14]
:0040561A 8945EC                  mov dword ptr [ebp-14], eax
:0040561D 52                      push edx
:0040561E FF461C                  inc [esi+1C]
:00405621 33C9                    xor ecx, ecx
:00405623 894DF0                  mov dword ptr [ebp-10], ecx
:00405626 8D55F0                  lea edx, dword ptr [ebp-10]
:00405629 FF461C                  inc [esi+1C]
:0040562C 8B83E0020000            mov eax, dword ptr [ebx+000002E0]
:00405632 E8C55F0500              call 0045B5FC
:00405637 8D45F0                  lea eax, dword ptr [ebp-10]
:0040563A B901000000              mov ecx, 00000001
:0040563F BA02000000              mov edx, 00000002
:00405644 E817F50800              call 00494B60
:00405649 837DEC00                cmp dword ptr [ebp-14], 00000000
:0040564D 7405                    je 00405654
:0040564F 8B45EC                  mov eax, dword ptr [ebp-14]
:00405652 EB05                    jmp 00405659

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040564D(C)
|
:00405654 B84DC34A00              mov eax, 004AC34D

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00405652(U)
|
:00405659 0FBE10                  movsx edx, byte ptr [eax]//取使用者名稱第二位U2的ASCII16進位制碼                                      ==>edx
:0040565C 8BCA                    mov ecx, edx
:0040565E 33C0                    xor eax, eax
:00405660 C1E104                  shl ecx, 04//U2*10==>ecx
:00405663 8945E4                  mov dword ptr [ebp-1C], eax
:00405666 03CA                    add ecx, edx//ECX+U2==>ecx
:00405668 8D0C8A                  lea ecx, dword ptr [edx+4*ecx]//U2+4*ECX==>ECX
:0040566B 8D0C8A                  lea ecx, dword ptr [edx+4*ecx]//U2+4*ECX==>ECX
:0040566E 8D0C4A                  lea ecx, dword ptr [edx+2*ecx]//U2+2*ECX==>ECX
:00405671 8D55E4                  lea edx, dword ptr [ebp-1C]
:00405674 52                      push edx
:00405675 03F9                    add edi, ecx//將第二位計算出來的值累加第一的值
:00405677 FF461C                  inc [esi+1C]
:0040567A 33C9                    xor ecx, ecx
:0040567C 894DE8                  mov dword ptr [ebp-18], ecx
:0040567F 8D55E8                  lea edx, dword ptr [ebp-18]
:00405682 FF461C                  inc [esi+1C]
:00405685 8B83E0020000            mov eax, dword ptr [ebx+000002E0]
:0040568B E86C5F0500              call 0045B5FC
:00405690 8D45E8                  lea eax, dword ptr [ebp-18]
:00405693 B901000000              mov ecx, 00000001
:00405698 BA03000000              mov edx, 00000003
:0040569D E8BEF40800              call 00494B60
:004056A2 837DE400                cmp dword ptr [ebp-1C], 00000000
:004056A6 7405                    je 004056AD
:004056A8 8B45E4                  mov eax, dword ptr [ebp-1C]
:004056AB EB05                    jmp 004056B2

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004056A6(C)
|
:004056AD B84EC34A00              mov eax, 004AC34E

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004056AB(U)
|
:004056B2 0FBE10                  movsx edx, byte ptr [eax]//取第三位U3
:004056B5 8BCA                    mov ecx, edx
:004056B7 33C0                    xor eax, eax
:004056B9 C1E103                  shl ecx, 03//U3*8==>ECX
:004056BC 8945DC                  mov dword ptr [ebp-24], eax
:004056BF 2BCA                    sub ecx, edx//ECX-U3==>ECX
:004056C1 C1E104                  shl ecx, 04//ECX*10==>ECX
:004056C4 2BCA                    sub ecx, edx//ECX-U3==>ECX
:004056C6 8D55DC                  lea edx, dword ptr [ebp-24]
:004056C9 52                      push edx
:004056CA 8D55E0                  lea edx, dword ptr [ebp-20]
:004056CD C1E102                  shl ecx, 02//ECX*4==>ECX
:004056D0 FF461C                  inc [esi+1C]
:004056D3 03F9                    add edi, ecx//累加到EDI
:004056D5 33C9                    xor ecx, ecx
:004056D7 894DE0                  mov dword ptr [ebp-20], ecx
:004056DA FF461C                  inc [esi+1C]
:004056DD 8B83E0020000            mov eax, dword ptr [ebx+000002E0]
:004056E3 E8145F0500              call 0045B5FC
:004056E8 8D45E0                  lea eax, dword ptr [ebp-20]
:004056EB B901000000              mov ecx, 00000001
:004056F0 BA04000000              mov edx, 00000004
:004056F5 E866F40800              call 00494B60
:004056FA 837DDC00                cmp dword ptr [ebp-24], 00000000
:004056FE 7405                    je 00405705
:00405700 8B45DC                  mov eax, dword ptr [ebp-24]
:00405703 EB05                    jmp 0040570A

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004056FE(C)
|
:00405705 B84FC34A00              mov eax, 004AC34F

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00405703(U)
|
:0040570A 0FBE10                  movsx edx, byte ptr [eax]//取第四位U4
:0040570D 8BCA                    mov ecx, edx
:0040570F 33C0                    xor eax, eax
:00405711 C1E103                  shl ecx, 03//U4*8==>ECX
:00405714 8945D4                  mov dword ptr [ebp-2C], eax
:00405717 2BCA                    sub ecx, edx//ECX-U4==>ECX
:00405719 C1E104                  shl ecx, 04//ECX*10==>ECX
:0040571C 2BCA                    sub ecx, edx//ECX-U4==>ECX
:0040571E 8D55D4                  lea edx, dword ptr [ebp-2C]
:00405721 52                      push edx
:00405722 8D55D8                  lea edx, dword ptr [ebp-28]
:00405725 C1E102                  shl ecx, 02//ECX*4==>ECX
:00405728 FF461C                  inc [esi+1C]
:0040572B 03F9                    add edi, ecx//累加EDI
:0040572D 33C9                    xor ecx, ecx
:0040572F 894DD8                  mov dword ptr [ebp-28], ecx
:00405732 FF461C                  inc [esi+1C]
:00405735 8B83E0020000            mov eax, dword ptr [ebx+000002E0]
:0040573B E8BC5E0500              call 0045B5FC
:00405740 8D45D8                  lea eax, dword ptr [ebp-28]
:00405743 B901000000              mov ecx, 00000001
:00405748 BA05000000              mov edx, 00000005
:0040574D E80EF40800              call 00494B60
:00405752 837DD400                cmp dword ptr [ebp-2C], 00000000
:00405756 7405                    je 0040575D
:00405758 8B45D4                  mov eax, dword ptr [ebp-2C]
:0040575B EB05                    jmp 00405762

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00405756(C)
|
:0040575D B850C34A00              mov eax, 004AC350

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040575B(U)
|
:00405762 0FBE10                  movsx edx, byte ptr [eax]//取第五位U5
:00405765 8BCA                    mov ecx, edx
:00405767 33C0                    xor eax, eax
:00405769 C1E104                  shl ecx, 04//U5*10==>ECX
:0040576C 8945CC                  mov dword ptr [ebp-34], eax
:0040576F 03CA                    add ecx, edx//ECX+U5==>ECX
:00405771 8D0C8A                  lea ecx, dword ptr [edx+4*ecx]//U5+4*ECX==>ECX
:00405774 8D0C8A                  lea ecx, dword ptr [edx+4*ecx]//U5+4*ECX==>ECX
:00405777 8D0C4A                  lea ecx, dword ptr [edx+2*ecx]//U5+2*ECX==>ECX
:0040577A 8D55CC                  lea edx, dword ptr [ebp-34]
:0040577D 52                      push edx
:0040577E 03F9                    add edi, ecx累加EDI
:00405780 FF461C                  inc [esi+1C]
:00405783 33C9                    xor ecx, ecx
:00405785 894DD0                  mov dword ptr [ebp-30], ecx
:00405788 8D55D0                  lea edx, dword ptr [ebp-30]
:0040578B FF461C                  inc [esi+1C]
:0040578E 8B83E0020000            mov eax, dword ptr [ebx+000002E0]
:00405794 E8635E0500              call 0045B5FC
:00405799 8D45D0                  lea eax, dword ptr [ebp-30]
:0040579C B901000000              mov ecx, 00000001
:004057A1 BA06000000              mov edx, 00000006
:004057A6 E8B5F30800              call 00494B60
:004057AB 837DCC00                cmp dword ptr [ebp-34], 00000000
:004057AF 7405                    je 004057B6
:004057B1 8B45CC                  mov eax, dword ptr [ebp-34]
:004057B4 EB05                    jmp 004057BB

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004057AF(C)
|
:004057B6 B851C34A00              mov eax, 004AC351

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004057B4(U)
|
:004057BB 0FBE10                  movsx edx, byte ptr [eax]//取第六位U6
:004057BE 69CA9A020000            imul ecx, edx, 0000029A//U6*29A==>ECX
:004057C4 03F9                    add edi, ecx//累加EDI,這裡就是註冊碼的十六進位制..往後使換算和比較我就不跟了..
:004057C6 8BC7                    mov eax, edi
:004057C8 33D2                    xor edx, edx
:004057CA 8955FC                  mov dword ptr [ebp-04], edx
:004057CD 8D55FC                  lea edx, dword ptr [ebp-04]
:004057D0 FF461C                  inc [esi+1C]
:004057D3 E8388D0700              call 0047E510
:004057D8 FF4E1C                  dec [esi+1C]
:004057DB 8D45CC                  lea eax, dword ptr [ebp-34]
:004057DE BA02000000              mov edx, 00000002
:004057E3 E800F20800              call 004949E8
:004057E8 FF4E1C                  dec [esi+1C]
:004057EB 8D45D0                  lea eax, dword ptr [ebp-30]
:004057EE BA02000000              mov edx, 00000002
:004057F3 E8F0F10800              call 004949E8
:004057F8 FF4E1C                  dec [esi+1C]
:004057FB 8D45D4                  lea eax, dword ptr [ebp-2C]
:004057FE BA02000000              mov edx, 00000002
:00405803 E8E0F10800              call 004949E8
:00405808 FF4E1C                  dec [esi+1C]
:0040580B 8D45D8                  lea eax, dword ptr [ebp-28]
:0040580E BA02000000              mov edx, 00000002
:00405813 E8D0F10800              call 004949E8
:00405818 FF4E1C                  dec [esi+1C]
:0040581B 8D45DC                  lea eax, dword ptr [ebp-24]
:0040581E BA02000000              mov edx, 00000002
:00405823 E8C0F10800              call 004949E8
:00405828 FF4E1C                  dec [esi+1C]
:0040582B 8D45E0                  lea eax, dword ptr [ebp-20]
:0040582E BA02000000              mov edx, 00000002
:00405833 E8B0F10800              call 004949E8
:00405838 FF4E1C                  dec [esi+1C]
:0040583B 8D45E4                  lea eax, dword ptr [ebp-1C]
:0040583E BA02000000              mov edx, 00000002
:00405843 E8A0F10800              call 004949E8
:00405848 FF4E1C                  dec [esi+1C]
:0040584B 8D45E8                  lea eax, dword ptr [ebp-18]
:0040584E BA02000000              mov edx, 00000002
:00405853 E890F10800              call 004949E8
:00405858 FF4E1C                  dec [esi+1C]
:0040585B 8D45EC                  lea eax, dword ptr [ebp-14]
:0040585E BA02000000              mov edx, 00000002
:00405863 E880F10800              call 004949E8
:00405868 FF4E1C                  dec [esi+1C]
:0040586B 8D45F0                  lea eax, dword ptr [ebp-10]
:0040586E BA02000000              mov edx, 00000002
:00405873 E870F10800              call 004949E8
:00405878 FF4E1C                  dec [esi+1C]
:0040587B 8D45F4                  lea eax, dword ptr [ebp-0C]
:0040587E BA02000000              mov edx, 00000002
:00405883 E860F10800              call 004949E8
:00405888 FF4E1C                  dec [esi+1C]
:0040588B 8D45F8                  lea eax, dword ptr [ebp-08]
:0040588E BA02000000              mov edx, 00000002
:00405893 E850F10800              call 004949E8
:00405898 66C746100800            mov [esi+10], 0008
:0040589E 66C746102000            mov [esi+10], 0020
:004058A4 33C0                    xor eax, eax
:004058A6 8945C8                  mov dword ptr [ebp-38], eax
:004058A9 8D55C8                  lea edx, dword ptr [ebp-38]
:004058AC FF461C                  inc [esi+1C]
:004058AF 8B83E8020000            mov eax, dword ptr [ebx+000002E8]
:004058B5 E8425D0500              call 0045B5FC
:004058BA 8D45C8                  lea eax, dword ptr [ebp-38]
:004058BD 8D55FC                  lea edx, dword ptr [ebp-04]
:004058C0 E8F3F10800              call 00494AB8//這裡就是註冊碼比較,就不多說了...
:004058C5 50                      push eax
:004058C6 FF4E1C                  dec [esi+1C]
:004058C9 8D45C8                  lea eax, dword ptr [ebp-38]
:004058CC BA02000000              mov edx, 00000002
:004058D1 E812F10800              call 004949E8
:004058D6 59                      pop ecx
:004058D7 84C9                    test cl, cl
:004058D9 0F8495020000            je 00405B74
:004058DF B201                    mov dl, 01
:004058E1 A104814300              mov eax, dword ptr [00438104]
:004058E6 E819290300              call 00438204
:004058EB 8BF8                    mov edi, eax
:004058ED 89BBFC020000            mov dword ptr [ebx+000002FC], edi
:004058F3 BA02000080              mov edx, 80000002
:004058F8 8BC7                    mov eax, edi
:004058FA E8A1EF0800              call 004948A0
:004058FF 66C746102C00            mov [esi+10], 002C

總結:
1.這個演算法很簡單,而且有兩位的演算法是一樣就是U1跟U6,U2跟U5,U3跟U4.
2.下面我不算式列出來:(用A1-->A6代表給位的總和)
A1=U1*29A
A6=U6*29A
A2=U2+(U2+(U2+(U2*10+U2)*4)*4)*2
A5=U5+(U5+(U5+(U5*10+U5)*4)*4)*2
A3=((U3*8-U3)*10-U3)*4
A4=((U4*8-U4)*10-U4)*4
3.舉例:
NAME:ssljxccc(其實演算法要六位就夠了..我輸入多兩位..)
s=73 s=73 l=6c j=6a x=78 c=63

A1=73*29A=12B2E

A2=73+(73+(73+(73*10+73)*4)*4)*2=F951

A3=((6C*8-6C)*10-6C)*4=BB50

A4=((6A*8-6A)*10-6A)*4=B7D8

A5=78+(78+(78+(78*10+78)*4)*4)*2=10428

A6=63*29A=1018E

註冊嗎:A1+A2+A3+A4+A5+A6=12B2E+F951+BB50+B7D8+10428+1018E=59D5D
換算成十進位制:367965  完成..
NAME:ssljxccc
code:367965

相關文章