心理測試小精靈 3.5演算法分析

看雪資料發表於2004-05-30

【破解作者】 qhst/老蟲子[D.4s][CZG]
【作者主頁】 http://free.aofa.net/www/qhst/index.htm
【使用工具】 od,W32,AspackDie141
【破解平臺】 Win9x/NT/2000/XP
【軟體名稱】 心理測試小精靈 3.5
【下載地址】 http://www.onlinedown.net/soft/1356.htm

【軟體簡介】 包納天下所有趣味測試題。有心理、愛情、搞笑、個性、魅力、智力、情商、工作、能力、兩性等幾個類別幾百道趣味測試題,新版本增加了很多心理方面的文章,希望能幫助一些朋友。題庫可每月上網更新。用這個軟體的神奇功能還可以讓你偷偷測知到其他人的內心世界喲!非常的好玩!你還可以利用這個軟體新增你自己的題庫。強烈推薦!

【軟體大小】 1355KB

【加殼方式】 ASPack 2.12
【破解宣告】 我是一隻小菜鳥,偶得一點心得,願與大家分享:)
--------------------------------------------------------------------------------
【破解內容】


PEID查殼,ASPack 2.12 -> Alexey Solodovnikov,用脫殼機脫殼成功,是Borland Delphi 6.0 - 7.0編寫的軟體,執行軟體輸入使用者名稱和假碼後點註冊跳出註冊失敗提示,用W32反彙編查詢字串"註冊失敗",雙擊來到
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004B47A0(C)――――――――――――――――――――――從這裡跳來
|
:004B4856 A1584C4C00              mov eaxdword ptr [004C4C58]
:004B485B 8B00                    mov eaxdword ptr [eax]

* Possible StringData Ref from Code Obj ->"註冊失敗"
                                  |
:004B485D BA7C494B00              mov edx, 004B497C    ――――――來到這裡
:004B4862 E889EFF8FF              call 004437F0
:004B4867 A1584C4C00              mov eaxdword ptr [004C4C58]
:004B486C 8B00                    mov eaxdword ptr [eax]
:004B486E 8B80F4020000            mov eaxdword ptr [eax+000002F4]
======================================================================
向上找到跳來的地址004B47A0,用OD載入,在上面的4B4744處下斷點,輸入使用者名稱laochongzi, 假碼123456789後中斷下來。

004B4744  /.  55            PUSH EBP
004B4745  |.  8BEC          MOV EBP,ESP
004B4747  |.  33C9          XOR ECX,ECX
004B4749  |.  51            PUSH ECX
004B474A  |.  51            PUSH ECX
004B474B  |.  51            PUSH ECX
004B474C  |.  51            PUSH ECX
004B474D  |.  53            PUSH EBX
004B474E  |.  56            PUSH ESI
004B474F  |.  57            PUSH EDI
004B4750  |.  8BD8          MOV EBX,EAX
004B4752  |.  33C0          XOR EAX,EAX
004B4754  |.  55            PUSH EBP
004B4755  |.  68 CD484B00   PUSH Unpacked.004B48CD
004B475A  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
004B475D  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
004B4760  |.  A1 78514C00   MOV EAX,DWORD PTR DS:[4C5178]
004B4765  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
004B4767  |.  E8 90AC0000   CALL Unpacked.004BF3FC
004B476C  |.  8D55 F8       LEA EDX,DWORD PTR SS:[EBP-8]
004B476F  |.  8B83 F8020000 MOV EAX,DWORD PTR DS:[EBX+2F8]
004B4775  |.  E8 46F0F8FF   CALL Unpacked.004437C0
004B477A  |.  8B55 F8       MOV EDX,DWORD PTR SS:[EBP-8]     ;  取使用者名稱laochongzi
004B477D  |.  8D4D FC       LEA ECX,DWORD PTR SS:[EBP-4]
004B4780  |.  8BC3          MOV EAX,EBX
004B4782  |.  E8 49020000   CALL Unpacked.004B49D0           ;  演算法CALL,跟進去
004B4787  |.  8D55 F4       LEA EDX,DWORD PTR SS:[EBP-C]
004B478A  |.  8B83 FC020000 MOV EAX,DWORD PTR DS:[EBX+2FC]
004B4790  |.  E8 2BF0F8FF   CALL Unpacked.004437C0
004B4795  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]     ;  取假碼123456789
004B4798  |.  8B55 FC       MOV EDX,DWORD PTR SS:[EBP-4]     ;  取真碼
004B479B  |.  E8 F403F5FF   CALL Unpacked.00404B94           ;  進行比較,真碼在EDX,做記憶體序號產生器的地址
004B47A0  |.  0F85 B0000000 JNZ Unpacked.004B4856            ;  不相等則OVER
004B47A6  |.  8B0D 4C4F4C00 MOV ECX,DWORD PTR DS:[4C4F4C]    ;  Unpacked.004C6E34
004B47AC  |.  8B09          MOV ECX,DWORD PTR DS:[ECX]
004B47AE  |.  B2 01         MOV DL,1
004B47B0  |.  A1 94464600   MOV EAX,DWORD PTR DS:[464694]
004B47B5  |.  E8 8AFFFAFF   CALL Unpacked.00464744
004B47BA  |.  8BF0          MOV ESI,EAX
004B47BC  |.  8D55 F0       LEA EDX,DWORD PTR SS:[EBP-10]
004B47BF  |.  8B83 F8020000 MOV EAX,DWORD PTR DS:[EBX+2F8]
004B47C5  |.  E8 F6EFF8FF   CALL Unpacked.004437C0
004B47CA  |.  8B45 F0       MOV EAX,DWORD PTR SS:[EBP-10]
004B47CD  |.  50            PUSH EAX
004B47CE  |.  B9 E4484B00   MOV ECX,Unpacked.004B48E4        ;  ASCII "username"
004B47D3  |.  BA F8484B00   MOV EDX,Unpacked.004B48F8        ;  ASCII "inifile"
004B47D8  |.  8BC6          MOV EAX,ESI
004B47DA  |.  8B38          MOV EDI,DWORD PTR DS:[EAX]
004B47DC  |.  FF57 04       CALL DWORD PTR DS:[EDI+4]
004B47DF  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
004B47E2  |.  50            PUSH EAX
004B47E3  |.  B9 08494B00   MOV ECX,Unpacked.004B4908        ;  ASCII "regcode"
004B47E8  |.  BA F8484B00   MOV EDX,Unpacked.004B48F8        ;  ASCII "inifile"
004B47ED  |.  8BC6          MOV EAX,ESI
004B47EF  |.  8B38          MOV EDI,DWORD PTR DS:[EAX]
004B47F1  |.  FF57 04       CALL DWORD PTR DS:[EDI+4]
004B47F4  |.  8BC6          MOV EAX,ESI
004B47F6  |.  E8 51F1F4FF   CALL Unpacked.0040394C
004B47FB  |.  A1 704F4C00   MOV EAX,DWORD PTR DS:[4C4F70]
004B4800  |.  C600 01       MOV BYTE PTR DS:[EAX],1
004B4803  |.  A1 78514C00   MOV EAX,DWORD PTR DS:[4C5178]
004B4808  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
004B480A  |.  BA 18494B00   MOV EDX,Unpacked.004B4918
004B480F  |.  E8 DCEFF8FF   CALL Unpacked.004437F0
004B4814  |.  A1 584C4C00   MOV EAX,DWORD PTR DS:[4C4C58]
004B4819  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
004B481B  |.  BA 30494B00   MOV EDX,Unpacked.004B4930
004B4820  |.  E8 CBEFF8FF   CALL Unpacked.004437F0
004B4825  |.  A1 584C4C00   MOV EAX,DWORD PTR DS:[4C4C58]
004B482A  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
004B482C  |.  8B80 F4020000 MOV EAX,DWORD PTR DS:[EAX+2F4]
004B4832  |.  B9 40494B00   MOV ECX,Unpacked.004B4940
004B4837  |.  BA FBFDFFFF   MOV EDX,-205
004B483C  |.  E8 EF5CFBFF   CALL Unpacked.0046A530
004B4841  |.  A1 584C4C00   MOV EAX,DWORD PTR DS:[4C4C58]
004B4846  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
004B4848  |.  E8 2FB4FAFF   CALL Unpacked.0045FC7C
004B484D  |.  8BC3          MOV EAX,EBX
004B484F  |.  E8 80B2FAFF   CALL Unpacked.0045FAD4
004B4854  |.  EB 39         JMP SHORT Unpacked.004B488F
004B4856  |>  A1 584C4C00   MOV EAX,DWORD PTR DS:[4C4C58]
004B485B  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
004B485D  |.  BA 7C494B00   MOV EDX,Unpacked.004B497C
004B4862  |.  E8 89EFF8FF   CALL Unpacked.004437F0
004B4867  |.  A1 584C4C00   MOV EAX,DWORD PTR DS:[4C4C58]
004B486C  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
004B486E  |.  8B80 F4020000 MOV EAX,DWORD PTR DS:[EAX+2F4]
004B4874  |.  B9 8C494B00   MOV ECX,Unpacked.004B498C
004B4879  |.  BA FBFDFFFF   MOV EDX,-205
004B487E  |.  E8 AD5CFBFF   CALL Unpacked.0046A530
004B4883  |.  A1 584C4C00   MOV EAX,DWORD PTR DS:[4C4C58]
004B4888  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
004B488A  |.  E8 EDB3FAFF   CALL Unpacked.0045FC7C
004B488F  |>  FE05 8C6D4C00 INC BYTE PTR DS:[4C6D8C]
004B4895  |.  803D 8C6D4C00>CMP BYTE PTR DS:[4C6D8C],3
004B489C  |.  72 0C         JB SHORT Unpacked.004B48AA
004B489E  |.  A1 14504C00   MOV EAX,DWORD PTR DS:[4C5014]
004B48A3  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
004B48A5  |.  E8 4AE9FAFF   CALL Unpacked.004631F4
004B48AA  |>  33C0          XOR EAX,EAX
004B48AC  |.  5A            POP EDX
004B48AD  |.  59            POP ECX
004B48AE  |.  59            POP ECX
004B48AF  |.  64:8910       MOV DWORD PTR FS:[EAX],EDX
004B48B2  |.  68 D4484B00   PUSH Unpacked.004B48D4
004B48B7  |>  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]
004B48BA  |.  BA 03000000   MOV EDX,3
004B48BF  |.  E8 F8FEF4FF   CALL Unpacked.004047BC
004B48C4  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
004B48C7  |.  E8 CCFEF4FF   CALL Unpacked.00404798
004B48CC  \.  C3            RETN


===================================================================
演算法CALL內
004B49D0  /$  55            PUSH EBP
004B49D1  |.  8BEC          MOV EBP,ESP
004B49D3  |.  51            PUSH ECX
004B49D4  |.  B9 06000000   MOV ECX,6
004B49D9  |>  6A 00         /PUSH 0
004B49DB  |.  6A 00         |PUSH 0
004B49DD  |.  49            |DEC ECX
004B49DE  |.^ 75 F9         \JNZ SHORT Unpacked.004B49D9
004B49E0  |.  51            PUSH ECX
004B49E1  |.  874D FC       XCHG DWORD PTR SS:[EBP-4],ECX
004B49E4  |.  53            PUSH EBX
004B49E5  |.  56            PUSH ESI
004B49E6  |.  57            PUSH EDI
004B49E7  |.  894D F8       MOV DWORD PTR SS:[EBP-8],ECX
004B49EA  |.  8955 FC       MOV DWORD PTR SS:[EBP-4],EDX
004B49ED  |.  8BD8          MOV EBX,EAX
004B49EF  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
004B49F2  |.  E8 4102F5FF   CALL Unpacked.00404C38
004B49F7  |.  33C0          XOR EAX,EAX
004B49F9  |.  55            PUSH EBP
004B49FA  |.  68 A04C4B00   PUSH Unpacked.004B4CA0
004B49FF  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
004B4A02  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
004B4A05  |.  8D55 D8       LEA EDX,DWORD PTR SS:[EBP-28]
004B4A08  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
004B4A0B  |.  E8 D843F5FF   CALL Unpacked.00408DE8
004B4A10  |.  8B55 D8       MOV EDX,DWORD PTR SS:[EBP-28]    ;  取使用者名稱放EDX
004B4A13  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
004B4A16  |.  E8 15FEF4FF   CALL Unpacked.00404830
004B4A1B  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]     ;  取使用者放EAX
004B4A1E  |.  E8 2D00F5FF   CALL Unpacked.00404A50
004B4A23  |.  8BF8          MOV EDI,EAX                      ;  使用者名稱位數放EDI
004B4A25  |.  BE EE8D1E00   MOV ESI,1E8DEE                   ;  ESI=1E8DEE
004B4A2A  |.  85FF          TEST EDI,EDI
004B4A2C  |.  75 15         JNZ SHORT Unpacked.004B4A43
004B4A2E  |.  8B83 F8020000 MOV EAX,DWORD PTR DS:[EBX+2F8]
004B4A34  |.  BA B84C4B00   MOV EDX,Unpacked.004B4CB8
004B4A39  |.  E8 B2EDF8FF   CALL Unpacked.004437F0
004B4A3E  |.  E9 2D020000   JMP Unpacked.004B4C70
004B4A43  |>  83FF 32       CMP EDI,32                       ;  比較使用者名稱位數是否小於32
004B4A46  |.  7E 1B         JLE SHORT Unpacked.004B4A63
004B4A48  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
004B4A4B  |.  50            PUSH EAX
004B4A4C  |.  B9 32000000   MOV ECX,32
004B4A51  |.  BA 01000000   MOV EDX,1
004B4A56  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
004B4A59  |.  E8 4A02F5FF   CALL Unpacked.00404CA8
004B4A5E  |.  BF 32000000   MOV EDI,32
004B4A63  |>  85FF          TEST EDI,EDI
004B4A65  |.  0F8E FA010000 JLE Unpacked.004B4C65
004B4A6B  |.  83FF 32       CMP EDI,32                       ;  比較使用者名稱位數是否大於32
004B4A6E  |.  0F8F F1010000 JG Unpacked.004B4C65
004B4A74  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
004B4A77  |.  8A18          MOV BL,BYTE PTR DS:[EAX]         ;  取使用者名稱第一位的ASCII碼值放BL
004B4A79  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
004B4A7C  |.  8A4438 FF     MOV AL,BYTE PTR DS:[EAX+EDI-1]   ;  取最後一位的ASCII碼值放AL
004B4A80  |.  8845 F7       MOV BYTE PTR SS:[EBP-9],AL       ;  送入堆疊
004B4A83  |.  8D55 F0       LEA EDX,DWORD PTR SS:[EBP-10]
004B4A86  |.  33C0          XOR EAX,EAX                      ;  EAX清零
004B4A88  |.  8AC3          MOV AL,BL                        ;  第一位的值送入AL=6C
004B4A8A  |.  E8 7546F5FF   CALL Unpacked.00409104
004B4A8F  |.  8D55 EC       LEA EDX,DWORD PTR SS:[EBP-14]
004B4A92  |.  33C0          XOR EAX,EAX
004B4A94  |.  8A45 F7       MOV AL,BYTE PTR SS:[EBP-9]       ;  最後一位的值69送AL
004B4A97  |.  E8 6846F5FF   CALL Unpacked.00409104
004B4A9C  |.  8D45 D4       LEA EAX,DWORD PTR SS:[EBP-2C]
004B4A9F  |.  50            PUSH EAX
004B4AA0  |.  8B45 F0       MOV EAX,DWORD PTR SS:[EBP-10]
004B4AA3  |.  E8 A8FFF4FF   CALL Unpacked.00404A50           ;  第一位的值6C轉成十進位制數108
004B4AA8  |.  8BD0          MOV EDX,EAX                      ;  EDX=第一位的ASCII值轉十進位制後的位數3
004B4AAA  |.  B9 01000000   MOV ECX,1
004B4AAF  |.  8B45 F0       MOV EAX,DWORD PTR SS:[EBP-10]
004B4AB2  |.  E8 F101F5FF   CALL Unpacked.00404CA8
004B4AB7  |.  8B45 D4       MOV EAX,DWORD PTR SS:[EBP-2C]
004B4ABA  |.  E8 A946F5FF   CALL Unpacked.00409168
004B4ABF  |.  8BD8          MOV EBX,EAX
004B4AC1  |.  8D45 D0       LEA EAX,DWORD PTR SS:[EBP-30]
004B4AC4  |.  50            PUSH EAX
004B4AC5  |.  8B45 EC       MOV EAX,DWORD PTR SS:[EBP-14]    ;  最後一位的值轉十進位制105
004B4AC8  |.  E8 83FFF4FF   CALL Unpacked.00404A50
004B4ACD  |.  8BD0          MOV EDX,EAX                      ;  EDX=最後一位的ASCII值轉十進位制後的位數3
004B4ACF  |.  B9 01000000   MOV ECX,1                        ;  ECX=1
004B4AD4  |.  8B45 EC       MOV EAX,DWORD PTR SS:[EBP-14]    ;  105進EAX
004B4AD7  |.  E8 CC01F5FF   CALL Unpacked.00404CA8
004B4ADC  |.  8B45 D0       MOV EAX,DWORD PTR SS:[EBP-30]
004B4ADF  |.  E8 8446F5FF   CALL Unpacked.00409168
004B4AE4  |.  33D2          XOR EDX,EDX
004B4AE6  |.  8AD3          MOV DL,BL                        ;  108最後一位的值8放入DL
004B4AE8  |.  69D2 BD070000 IMUL EDX,EDX,7BD                 ;  EDX=8*7BD=3DE8
004B4AEE  |.  25 FF000000   AND EAX,0FF                      ;  105最後一位的值5與0FF做AND運算=5
004B4AF3  |.  0FAFD0        IMUL EDX,EAX                     ;  5*3DE8=13588
004B4AF6  |.  8955 E0       MOV DWORD PTR SS:[EBP-20],EDX    ;  13588送入堆疊
004B4AF9  |.  8BC7          MOV EAX,EDI                      ;  使用者名稱位數A放入EAX
004B4AFB  |.  84C0          TEST AL,AL
004B4AFD  |.  76 3C         JBE SHORT Unpacked.004B4B3B
004B4AFF  |.  8845 DF       MOV BYTE PTR SS:[EBP-21],AL      ;  AL的值0A放入堆疊
004B4B02  |.  B3 01         MOV BL,1                         ;  BL=1
004B4B04  |>  8BC3          /MOV EAX,EBX                     ;  依次取使用者名稱的位數
004B4B06  |.  48            |DEC EAX                         ;  減1
004B4B07  |.  2C 05         |SUB AL,5                        ;  減5,小於則跳; Switch (cases 0..31)
004B4B09  |.  72 06         |JB SHORT Unpacked.004B4B11
004B4B0B  |.  2C 2D         |SUB AL,2D                       ;  減2D小於則跳
004B4B0D  |.  72 18         |JB SHORT Unpacked.004B4B27
004B4B0F  |.  EB 24         |JMP SHORT Unpacked.004B4B35
004B4B11  |>  33C0          |XOR EAX,EAX                     ;  Cases 0,1,2,3,4 of switch 004B4B07
004B4B13  |.  8AC3          |MOV AL,BL
004B4B15  |.  8B55 FC       |MOV EDX,DWORD PTR SS:[EBP-4]    ;  取使用者名稱放EDX
004B4B18  |.  0FB64402 FF   |MOVZX EAX,BYTE PTR DS:[EDX+EAX->;  依次取使用者每一位的ASCII碼值,取到第5位
004B4B1D  |.  33D2          |XOR EDX,EDX                     ;  EDX清零
004B4B1F  |.  8AD3          |MOV DL,BL                       ;  依次取位數
004B4B21  |.  F7EA          |IMUL EDX                        ;  使用者名稱每一位的值與位數相乘
004B4B23  |.  03F0          |ADD ESI,EAX                     ;  累加起來再加上1E8DEE的結果儲存在ESI
004B4B25  |.  EB 0E         |JMP SHORT Unpacked.004B4B35
004B4B27  |>  33C0          |XOR EAX,EAX                     ;  EAX清零; Cases 5,6,7,8,9,A,B,C,D,E,F,10,11,12,13,14,15,16,17,18,19,1A,1B,1C,1D,1E,1F,20,21,22,23,24,25,26,27,28,29,2A,2B,2C,2D,2E,2F,30,31 of switch 004B4B07
004B4B29  |.  8AC3          |MOV AL,BL                       ;  使用者名稱第六位起的位數
004B4B2B  |.  8B55 FC       |MOV EDX,DWORD PTR SS:[EBP-4]
004B4B2E  |.  0FB64402 FF   |MOVZX EAX,BYTE PTR DS:[EDX+EAX->;  從第六位起依次取使用者名稱每一位的ASCII值
004B4B33  |.  03F0          |ADD ESI,EAX                     ;  和ESI的值累加
004B4B35  |>  43            |INC EBX                         ;  計數器加1; Default case of switch 004B4B07
004B4B36  |.  FE4D DF       |DEC BYTE PTR SS:[EBP-21]        ;  使用者名稱位數減1
004B4B39  |.^ 75 C9         \JNZ SHORT Unpacked.004B4B04     ;  迴圈
004B4B3B  |>  8BC6          MOV EAX,ESI                      ;  EAX=1E9624即上面計算的結果
004B4B3D  |.  33D2          XOR EDX,EDX
004B4B3F  |.  52            PUSH EDX                         ; /Arg2 => 00000000
004B4B40  |.  50            PUSH EAX                         ; |Arg1
004B4B41  |.  8D45 CC       LEA EAX,DWORD PTR SS:[EBP-34]    ; |
004B4B44  |.  E8 EB45F5FF   CALL Unpacked.00409134           ; \Unpacked.00409134
004B4B49  |.  8B45 CC       MOV EAX,DWORD PTR SS:[EBP-34]    ;  1E9624轉成十進位制2004516放EAX
004B4B4C  |.  50            PUSH EAX                         ;  EAX的值送入堆疊
004B4B4D  |.  8B45 E0       MOV EAX,DWORD PTR SS:[EBP-20]    ;  EAX=13588
004B4B50  |.  33D2          XOR EDX,EDX
004B4B52  |.  52            PUSH EDX                         ; /Arg2 => 00000000
004B4B53  |.  50            PUSH EAX                         ; |13588送入堆疊
004B4B54  |.  8D45 C8       LEA EAX,DWORD PTR SS:[EBP-38]    ; |
004B4B57  |.  E8 D845F5FF   CALL Unpacked.00409134           ; \Unpacked.00409134
004B4B5C  |.  8B55 C8       MOV EDX,DWORD PTR SS:[EBP-38]    ;  13588轉十進位制=79240送EDXA
004B4B5F  |.  8D45 E8       LEA EAX,DWORD PTR SS:[EBP-18]
004B4B62  |.  59            POP ECX
004B4B63  |.  E8 34FFF4FF   CALL Unpacked.00404A9C
004B4B68  |.  8B45 E8       MOV EAX,DWORD PTR SS:[EBP-18]    ;  將79240和2004516連線起來送EAX=792402004516
004B4B6B  |.  E8 E0FEF4FF   CALL Unpacked.00404A50
004B4B70  |.  84C0          TEST AL,AL                       ;  AL=C,即剛才得到的數792402004516的位數
004B4B72  |.  0F86 ED000000 JBE Unpacked.004B4C65
004B4B78  |.  8845 DF       MOV BYTE PTR SS:[EBP-21],AL
004B4B7B  |.  B3 01         MOV BL,1
004B4B7D  |>  33C0          /XOR EAX,EAX
004B4B7F  |.  8AC3          |MOV AL,BL
004B4B81  |.  8B55 E8       |MOV EDX,DWORD PTR SS:[EBP-18]   ;  取792402004516
004B4B84  |.  0FB64402 FF   |MOVZX EAX,BYTE PTR DS:[EDX+EAX->;  依次取每一位的ASCII值
004B4B89  |.  83C0 D0       |ADD EAX,-30                     ;  減30; Switch (cases 30..39)
004B4B8C  |.  83F8 09       |CMP EAX,9                       ;  比較是否大於9
004B4B8F  |.  0F87 C6000000 |JA Unpacked.004B4C5B            ;  高於則跳
004B4B95  |.  FF2485 9C4B4B>|JMP DWORD PTR DS:[EAX*4+4B4B9C] ;  跳往依次取每一位的減30後的值*4加上4B4B9C所得的地址進行查表
004B4B9C  |.  C44B4B00      |DD Unpacked.004B4BC4            ;  Switch table used at 004B4B95
004B4BA0  |.  D64B4B00      |DD Unpacked.004B4BD6
004B4BA4  |.  E54B4B00      |DD Unpacked.004B4BE5
004B4BA8  |.  F44B4B00      |DD Unpacked.004B4BF4
004B4BAC  |.  034C4B00      |DD Unpacked.004B4C03
004B4BB0  |.  124C4B00      |DD Unpacked.004B4C12
004B4BB4  |.  214C4B00      |DD Unpacked.004B4C21
004B4BB8  |.  304C4B00      |DD Unpacked.004B4C30
004B4BBC  |.  3F4C4B00      |DD Unpacked.004B4C3F
004B4BC0  |.  4E4C4B00      |DD Unpacked.004B4C4E
004B4BC4  |>  8D45 E4       |LEA EAX,DWORD PTR SS:[EBP-1C]   ;  Case 30 ('0') of switch 004B4B89
004B4BC7  |.  BA DC4C4B00   |MOV EDX,Unpacked.004B4CDC       ;  0對4
004B4BCC  |.  E8 87FEF4FF   |CALL Unpacked.00404A58
004B4BD1  |.  E9 85000000   |JMP Unpacked.004B4C5B
004B4BD6  |>  8D45 E4       |LEA EAX,DWORD PTR SS:[EBP-1C]   ;  Case 31 ('1') of switch 004B4B89
004B4BD9  |.  BA E84C4B00   |MOV EDX,Unpacked.004B4CE8       ;  1對0
004B4BDE  |.  E8 75FEF4FF   |CALL Unpacked.00404A58
004B4BE3  |.  EB 76         |JMP SHORT Unpacked.004B4C5B
004B4BE5  |>  8D45 E4       |LEA EAX,DWORD PTR SS:[EBP-1C]   ;  Case 32 ('2') of switch 004B4B89
004B4BE8  |.  BA F44C4B00   |MOV EDX,Unpacked.004B4CF4       ;  2對5
004B4BED  |.  E8 66FEF4FF   |CALL Unpacked.00404A58
004B4BF2  |.  EB 67         |JMP SHORT Unpacked.004B4C5B
004B4BF4  |>  8D45 E4       |LEA EAX,DWORD PTR SS:[EBP-1C]   ;  Case 33 ('3') of switch 004B4B89
004B4BF7  |.  BA 004D4B00   |MOV EDX,Unpacked.004B4D00       ;  3對9
004B4BFC  |.  E8 57FEF4FF   |CALL Unpacked.00404A58
004B4C01  |.  EB 58         |JMP SHORT Unpacked.004B4C5B
004B4C03  |>  8D45 E4       |LEA EAX,DWORD PTR SS:[EBP-1C]   ;  Case 34 ('4') of switch 004B4B89
004B4C06  |.  BA 0C4D4B00   |MOV EDX,Unpacked.004B4D0C       ;  4對6
004B4C0B  |.  E8 48FEF4FF   |CALL Unpacked.00404A58
004B4C10  |.  EB 49         |JMP SHORT Unpacked.004B4C5B
004B4C12  |>  8D45 E4       |LEA EAX,DWORD PTR SS:[EBP-1C]   ;  Case 35 ('5') of switch 004B4B89
004B4C15  |.  BA 184D4B00   |MOV EDX,Unpacked.004B4D18       ;  5對1
004B4C1A  |.  E8 39FEF4FF   |CALL Unpacked.00404A58
004B4C1F  |.  EB 3A         |JMP SHORT Unpacked.004B4C5B
004B4C21  |>  8D45 E4       |LEA EAX,DWORD PTR SS:[EBP-1C]   ;  Case 36 ('6') of switch 004B4B89
004B4C24  |.  BA 244D4B00   |MOV EDX,Unpacked.004B4D24       ;  6對7
004B4C29  |.  E8 2AFEF4FF   |CALL Unpacked.00404A58
004B4C2E  |.  EB 2B         |JMP SHORT Unpacked.004B4C5B
004B4C30  |>  8D45 E4       |LEA EAX,DWORD PTR SS:[EBP-1C]   ;  Case 37 ('7') of switch 004B4B89
004B4C33  |.  BA 304D4B00   |MOV EDX,Unpacked.004B4D30       ;  7對3
004B4C38  |.  E8 1BFEF4FF   |CALL Unpacked.00404A58
004B4C3D  |.  EB 1C         |JMP SHORT Unpacked.004B4C5B
004B4C3F  |>  8D45 E4       |LEA EAX,DWORD PTR SS:[EBP-1C]   ;  Case 38 ('8') of switch 004B4B89
004B4C42  |.  BA 3C4D4B00   |MOV EDX,Unpacked.004B4D3C       ;  8對8
004B4C47  |.  E8 0CFEF4FF   |CALL Unpacked.00404A58
004B4C4C  |.  EB 0D         |JMP SHORT Unpacked.004B4C5B
004B4C4E  |>  8D45 E4       |LEA EAX,DWORD PTR SS:[EBP-1C]   ;  Case 39 ('9') of switch 004B4B89
004B4C51  |.  BA 484D4B00   |MOV EDX,Unpacked.004B4D48       ;  9對2
004B4C56  |.  E8 FDFDF4FF   |CALL Unpacked.00404A58
004B4C5B  |>  43            |INC EBX                         ;  Default case of switch 004B4B89
004B4C5C  |.  FE4D DF       |DEC BYTE PTR SS:[EBP-21]
004B4C5F  |.^ 0F85 18FFFFFF \JNZ Unpacked.004B4B7D
004B4C65  |>  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]
004B4C68  |.  8B55 E4       MOV EDX,DWORD PTR SS:[EBP-1C]
004B4C6B  |.  E8 7CFBF4FF   CALL Unpacked.004047EC
004B4C70  |>  33C0          XOR EAX,EAX
004B4C72  |.  5A            POP EDX
004B4C73  |.  59            POP ECX
004B4C74  |>  59            POP ECX
004B4C75  |.  64:8910       MOV DWORD PTR FS:[EAX],EDX
004B4C78  |.  68 A74C4B00   PUSH Unpacked.004B4CA7
004B4C7D  |>  8D45 C8       LEA EAX,DWORD PTR SS:[EBP-38]
004B4C80  |.  BA 05000000   MOV EDX,5
004B4C85  |.  E8 32FBF4FF   CALL Unpacked.004047BC
004B4C8A  |.  8D45 E4       LEA EAX,DWORD PTR SS:[EBP-1C]
004B4C8D  |.  BA 04000000   MOV EDX,4
004B4C92  |.  E8 25FBF4FF   CALL Unpacked.004047BC
004B4C97  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
004B4C9A  |.  E8 F9FAF4FF   CALL Unpacked.00404798
004B4C9F  \.  C3            RETN
=================================================================================
查表的資料部份:
004B4CD4   .  FFFFFFFF      DD FFFFFFFF
004B4CD8   .  01000000      DD 00000001
004B4CDC   .  34 00         ASCII "4",0
004B4CDE      00            DB 00
004B4CDF      00            DB 00
004B4CE0   .  FFFFFFFF      DD FFFFFFFF
004B4CE4   .  01000000      DD 00000001
004B4CE8   .  30 00         ASCII "0",0
004B4CEA      00            DB 00
004B4CEB      00            DB 00
004B4CEC   .  FFFFFFFF      DD FFFFFFFF
004B4CF0   .  01000000      DD 00000001
004B4CF4   .  35 00         ASCII "5",0
004B4CF6      00            DB 00
004B4CF7      00            DB 00
004B4CF8   .  FFFFFFFF      DD FFFFFFFF
004B4CFC   .  01000000      DD 00000001
004B4D00   .  39 00         ASCII "9",0
004B4D02      00            DB 00
004B4D03      00            DB 00
004B4D04   .  FFFFFFFF      DD FFFFFFFF
004B4D08   .  01000000      DD 00000001
004B4D0C   .  36 00         ASCII "6",0
004B4D0E      00            DB 00
004B4D0F      00            DB 00
004B4D10   .  FFFFFFFF      DD FFFFFFFF
004B4D14   .  01000000      DD 00000001
004B4D18   .  31 00         ASCII "1",0
004B4D1A      00            DB 00
004B4D1B      00            DB 00
004B4D1C   .  FFFFFFFF      DD FFFFFFFF
004B4D20   .  01000000      DD 00000001
004B4D24   .  37 00         ASCII "7",0
004B4D26      00            DB 00
004B4D27      00            DB 00
004B4D28   .  FFFFFFFF      DD FFFFFFFF
004B4D2C   .  01000000      DD 00000001
004B4D30   .  33 00         ASCII "3",0
004B4D32      00            DB 00
004B4D33      00            DB 00
004B4D34   .  FFFFFFFF      DD FFFFFFFF
004B4D38   .  01000000      DD 00000001
004B4D3C   .  38 00         ASCII "8",0
004B4D3E      00            DB 00
004B4D3F      00            DB 00
004B4D40   .  FFFFFFFF      DD FFFFFFFF
004B4D44   .  01000000      DD 00000001
004B4D48   .  32 00         ASCII "2",0
004B4D4A      00            DB 00
004B4D4B      00            DB 00

--------------------------------------------------------------------------------
【破解總結】


演算法總結:取使用者名稱的第一位後最後一位的ASCII碼值轉成十進位制數,然後取第一位轉換後的數的最後一位的ASCII碼值減30的結果*7BD,取最後一位轉換後的數的最後一位的ASCII值與0FF做AND運算,然後把兩個結果相乘,然後轉換成十進位制數,做為查表數的第一部分,取使用者名稱的前五位的ASCII值分別與其位數相乘,然後累加,取第六位後面的每一位的ASCII值累加,再加上1E8DEE結果轉成十進位制數,做為查表數的第二部分,把兩部分連起來進行查表
0對4,1對0,2對5,3對9,4對6,5對1,6對7,7對3,8對8,9對2
算了兩組號
laochongzi                  qhst
792402004516 查表的數                    356582003544 查表的數
325645446107註冊碼                          917185449166註冊碼          
_______________________________________________________________________
【演算法序號產生器】
易語言編寫

子程式:_按鈕2_被單擊

銷燬 ()

TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT

子程式:_按鈕1_被單擊

區域性容器:變數1   資料型別:整數型
區域性容器:變數2   資料型別:整數型
區域性容器:變數3   資料型別:整數型
區域性容器:變數4   資料型別:整數型
區域性容器:變數5   資料型別:整數型
區域性容器:變數6   資料型別:整數型
區域性容器:變數7   資料型別:整數型
區域性容器:變數8   資料型別:整數型
區域性容器:變數9   資料型別:整數型
區域性容器:變數10  資料型別:整數型
區域性容器:變數11  資料型別:整數型
區域性容器:變數12  資料型別:文字型
區域性容器:變數13  資料型別:文字型
區域性容器:變數14  資料型別:文字型
區域性容器:變數15  資料型別:文字型
區域性容器:變數16  資料型別:整數型

變數1 = 到數值 (取程式碼 (取文字左邊 (編輯框1.內容, 1), ))
變數2 = 到數值 (取程式碼 (取文字右邊 (編輯框1.內容, 1), ))
變數3 = 到數值 (取文字右邊 (到文字 (變數1), 1)) × 1981
變數4 = 位與 (到數值 (取文字右邊 (到文字 (變數2), 1)), 255) × 變數3
變數5 = 取文字長度 (編輯框1.內容)
變數7 = 5
如果 (變數5 > 5)
    計次迴圈首 (變數7, 變數7)
        變數6 = 取程式碼 (編輯框1.內容, 變數7) × 變數7 + 變數6
    計次迴圈尾 ()
否則
    計次迴圈首 (變數5, 變數5)
        變數6 = 取程式碼 (編輯框1.內容, 變數5) × 變數5 + 變數6
    計次迴圈尾 ()
如果結束
如果真 (變數5 > 5)
    變數10 = 變數5 - 5
    計次迴圈首 (變數10, 變數10)
        變數8 = 取程式碼 (取文字右邊 (編輯框1.內容, 變數10), 1) + 變數8
    計次迴圈尾 ()
如果真結束
變數9 = 變數6 + 2002414 + 變數8
變數12 = 到文字 (變數4) + 到文字 (變數9)
變數16 = 取文字長度 (變數12)
計次迴圈首 (變數16, 變數16)
    如果 (取程式碼 (變數12, 變數16) = 48)
        變數14 = “4”
    否則
    如果結束
    如果 (取程式碼 (變數12, 變數16) = 49)
        變數14 = “0”
    否則
    如果結束
    如果 (取程式碼 (變數12, 變數16) = 50)
        變數14 = “5”
    否則
    如果結束
    如果 (取程式碼 (變數12, 變數16) = 51)
        變數14 = “9”
    否則
    如果結束
    如果 (取程式碼 (變數12, 變數16) = 52)
        變數14 = “6”
    否則
    如果結束
    如果 (取程式碼 (變數12, 變數16) = 53)
        變數14 = “1”
    否則
    如果結束
    如果 (取程式碼 (變數12, 變數16) = 54)
        變數14 = “7”
    否則
    如果結束
    如果 (取程式碼 (變數12, 變數16) = 55)
        變數14 = “3”
    否則
    如果結束
    如果 (取程式碼 (變數12, 變數16) = 56)
        變數14 = “8”
    否則
    如果結束
    如果 (取程式碼 (變數12, 變數16) = 57)
        變數14 = “2”
    否則
    如果結束
    變數15 = 變數15 + 變數14
計次迴圈尾 ()
如果 (編輯框1.內容 = “”)
    資訊框 (“請輸入使用者名稱”, 0, )
否則
如果結束
編輯框2.內容 = 到文字 (變數15)


--------------------------------------------------------------------------------
【記憶體序號產生器】


中斷地址:4B479B,中斷次數:1,第一位元組:E8,長度:5
記憶體方式:EDX
--------------------------------------------------------------------------------
【版權宣告】 本文純屬技術交流, 轉載請註明作者並保持文章的完整, 謝謝!

相關文章