大管家通用人事工資管理系統 專業版4.5

看雪資料發表於2015-11-15

標 題:大管家通用人事工資管理系統 專業版4.5

發信人:ikki

時 間:2003年10月30日 03:44 

詳細資訊: 


軟體的作者用的是最佳化大師舊版本的註冊演算法,我抄了hying大俠的最佳化大師註冊演算法分析:)
輸入的測試序列號為:ikki,測試註冊碼:1111-2222-3333-4444。
程式首先檢查輸入的序列號是否夠8位,如果不夠就在後面連線上“1234567”,然後取前8位進行計算。
共兩處檢查:註冊碼和終端數。 
:012F90D8 8B04B7                  mov eaxdword ptr [edi+4*esi]
:012F90DB 8945E0                  mov dword ptr [ebp-20], eax
:012F90DE 8B44B704              mov eaxdword ptr [edi+4*esi+04]
:012F90E2 8945E4                  mov dword ptr [ebp-1C], eax
:012F90E5 8BCB                    mov ecxebx
:012F90E7 8D55E0                  lea edxdword ptr [ebp-20]    <---變換後的序列號入EDX
:012F90EA 8B45FC                  mov eaxdword ptr [ebp-04]
:012F90ED E896FEFFFF              call 012F8F88                  <--根據序列號計算得數1 
:012F90F2 8B03                    mov eaxdword ptr [ebx]
:012F90F4 894308                  mov dword ptr [ebx+08], eax
:012F90F7 8B4304                  mov eaxdword ptr [ebx+04]
:012F90FA 89430C                  mov dword ptr [ebx+0C], eax
:012F90FD 8B45E0                  mov eaxdword ptr [ebp-20]
:012F9100 8903                    mov dword ptr [ebx], eax
:012F9102 8B45E4                  mov eaxdword ptr [ebp-1C]
:012F9105 894304                  mov dword ptr [ebx+04], eax
:012F9108 83C602                  add esi, 00000002

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:012F90D6(U)
|
:012F910B 8B45F8                  mov eaxdword ptr [ebp-08]
:012F910E E849B1DDFF              call 010D425C
:012F9113 85C0                    test eaxeax
:012F9115 7903                    jns 012F911A
:012F9117 83C003                  add eax, 00000003

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:012F9115(C)
|
:012F911A C1F802                  sar eax, 02
:012F911D 3BF0                    cmp esieax
:012F911F 72B7                    jb 012F90D8
:012F9121 8B45EC                  mov eaxdword ptr [ebp-14]
:012F9124 33D2                    xor edxedx
:012F9126 52                      push edx
:012F9127 50                      push eax                 <--輸入的註冊碼前8位
:012F9128 FF3508CB3101            push dword ptr [0131CB08]
:012F912E FF3504CB3101            push dword ptr [0131CB04]   〈--rsa的E
:012F9134 FF3510CB3101            push dword ptr [0131CB10]
:012F913A FF350CCB3101            push dword ptr [0131CB0C]    <--rsa的N 
:012F9140 8B45FC                  mov eaxdword ptr [ebp-04]  09292A78(153692792)
:012F9143 E87CFDFFFF              call 012F8EC4      <--RSA函式,結果放入EAX,設為數2 (0A07DC5Ch)
:012F9148 83E802                  sub eax, 00000002    <--數2減2 
:012F914B 8945D8                  mov dword ptr [ebp-28], eax   <--放入記憶體 
:012F914E 8B45F0                  mov eaxdword ptr [ebp-10]
:012F9151 33D2                    xor edxedx
:012F9153 52                      push edx
:012F9154 50                      push eax                     <--輸入的註冊碼前8位
:012F9155 FF3508CB3101            push dword ptr [0131CB08]
:012F915B FF3504CB3101            push dword ptr [0131CB04]    <--rsa的E
:012F9161 FF3510CB3101            push dword ptr [0131CB10]
:012F9167 FF350CCB3101            push dword ptr [0131CB0C]    <--rsa的N 
:012F916D 8B45FC                  mov eaxdword ptr [ebp-04]
:012F9170 E84FFDFFFF              call 012F8EC4                <--結果放入EAX,設為數3 
:012F9175 83E802                  sub eax, 00000002            <--數3減2 
:012F9178 8945DC                  mov dword ptr [ebp-24], eax  <--放入記憶體 
:012F917B C165D802                shl dword ptr [ebp-28], 02   <--數2左移2位 
:012F917F 8D4DD8                  lea ecxdword ptr [ebp-28]
:012F9182 8B01                    mov eaxdword ptr [ecx]     <--取出數2 
:012F9184 8B5104                  mov edxdword ptr [ecx+04]  <--取出數3 
:012F9187 0FACD002                shrd eaxedx, 02        <--數2、數3聯合移位,數2改變,數3不變 
:012F918B C1EA02                  shr edx, 02              <--數3右移2位 
:012F918E 8901                    mov dword ptr [ecx], eax     <--數2放入記憶體 
:012F9190 895104                  mov dword ptr [ecx+04], edx  <--數3放入記憶體 
:012F9193 8B45D8                  mov eaxdword ptr [ebp-28]
:012F9196 3B45E0                  cmp eaxdword ptr [ebp-20]  <--比較數2與數1,相同則跳 
:012F9199 7404                    je 012F919F                    正確應跳 
:012F919B 33DB                    xor ebxebx
:012F919D EB11                    jmp 012F91B0

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:012F9199(C)
|
:012F919F 668B45DC                mov axword ptr [ebp-24]    <-取數3的低16位放入AX,(即終端數) 
:012F91A3 6625FFFF                and ax, FFFF                    以後驗證,正確應為0014 
:012F91A7 8B55F4                  mov edxdword ptr [ebp-0C]
:012F91AA 668902                  mov word ptr [edx], ax
:012F91AD 83CBFF                  or ebx, FFFFFFFF

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:012F919D(U)
|
:012F91B0 33C0                    xor eaxeax
:012F91B2 5A                      pop edx
:012F91B3 59                      pop ecx
:012F91B4 59                      pop ecx
:012F91B5 648910                  mov dword ptr fs:[eax], edx
:012F91B8 68D5912F01              push 012F91D5

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:012F91D3(U)
|
:012F91BD 8D45E8                  lea eaxdword ptr [ebp-18]
:012F91C0 E817AEDDFF              call 010D3FDC
:012F91C5 8D45F8                  lea eaxdword ptr [ebp-08]
:012F91C8 E80FAEDDFF              call 010D3FDC
:012F91CD C3                      ret




281F7168  081C5E4A
8A07DC5A





08DD8F88    53              PUSH EBX
08DD8F89    56              PUSH ESI
08DD8F8A    57              PUSH EDI
08DD8F8B    51              PUSH ECX
08DD8F8C    891424          MOV DWORD PTR SS:[ESP],EDX
08DD8F8F    BA 20000000     MOV EDX,20                        <--迴圈次數 
08DD8F94    8B0424          MOV EAX,DWORD PTR SS:[ESP]
08DD8F97    8B00            MOV EAX,DWORD PTR DS:[EAX]        <--序列號前4位放入eax 
08DD8F99    8B1C24          MOV EBX,DWORD PTR SS:[ESP]
08DD8F9C    8B5B 04         MOV EBX,DWORD PTR DS:[EBX+4]      <--序列號後4位放入ebx 
08DD8F9F    33F6            XOR ESI,ESI
08DD8FA1    4A              DEC EDX
08DD8FA2    0335 00CBDF08   ADD ESI,DWORD PTR DS:[8DFCB00]   <--esi加常數9E3779B9h 
08DD8FA8    8BFB            MOV EDI,EBX
08DD8FAA    C1E7 04         SHL EDI,4
08DD8FAD    03C7            ADD EAX,EDI
08DD8FAF    8B39            MOV EDI,DWORD PTR DS:[ECX]        <--"Ha.."的ASCII碼逆序放
08DD8FB1    33FB            XOR EDI,EBX                          入edi
08DD8FB3    03C7            ADD EAX,EDI
08DD8FB5    8BFB            MOV EDI,EBX
08DD8FB7    C1EF 05         SHR EDI,5
08DD8FBA    33FE            XOR EDI,ESI
08DD8FBC    03C7            ADD EAX,EDI
08DD8FBE    0341 04         ADD EAX,DWORD PTR DS:[ECX+4]      <--".ha,"的ASCII碼逆序放入ecx, 
08DD8FC1    8BF8            MOV EDI,EAX
08DD8FC3    C1E7 04         SHL EDI,4
08DD8FC6    03DF            ADD EBX,EDI
08DD8FC8    8B79 08         MOV EDI,DWORD PTR DS:[ECX+8]      <--"You "的ASCII碼逆序放入edi,08DD8FCB    33F8            XOR EDI,EAX                           You後有個空格 
08DD8FCD    03DF            ADD EBX,EDI
08DD8FCF    8BF8            MOV EDI,EAX
08DD8FD1    C1EF 05         SHR EDI,5
08DD8FD4    33FE            XOR EDI,ESI
08DD8FD6    03DF            ADD EBX,EDI
08DD8FD8    0359 0C         ADD EBX,DWORD PTR DS:[ECX+C] ]     <--ebx加上"are "的ASCII碼逆序, 
08DD8FDB    85D2            TEST EDX,EDX                          are後有個空格
08DD8FDD  ^ 77 C2           JA SHORT HRMS.08DD8FA1             <--迴圈結束? 
08DD8FDF    8B1424          MOV EDX,DWORD PTR SS:[ESP]
08DD8FE2    8902            MOV DWORD PTR DS:[EDX],EAX         <--eax的值即為算得的數1 
08DD8FE4    8B0424          MOV EAX,DWORD PTR SS:[ESP]            08710A7Fh(141625983)
08DD8FE7    8958 04         MOV DWORD PTR DS:[EAX+4],EBX
08DD8FEA    5A              POP EDX
08DD8FEB    5F              POP EDI
08DD8FEC    5E              POP ESI
08DD8FED    5B              POP EBX
08DD8FEE    C3              RETN



:0130E928 837DD400                cmp dword ptr [ebp-2C], 00000000  <--輸入的終端數是否為0?
:0130E92C 7421                    je 0130E94F
:0130E92E 8D55CC                  lea edxdword ptr [ebp-34]
:0130E931 8B45FC                  mov eaxdword ptr [ebp-04]
:0130E934 8B80FC020000            mov eaxdword ptr [eax+000002FC]
:0130E93A E82990DFFF              call 01107968
:0130E93F 8B45CC                  mov eaxdword ptr [ebp-34]
:0130E942 E8F1B7DCFF              call 010DA138
:0130E947 0FB755F2                movzx edxword ptr [ebp-0E]
:0130E94B 3BC2                    cmp eaxedx      <-輸入終端  數是否為14H,即前面
:0130E94D 742E                    je 0130E97D                         計算出來的ax


一個可用的註冊碼:
序列號:ikki
終端數:20
註冊碼:536C-4DE8-647F-CD31

相關文章