社群遊戲伴侶 V2.0 簡章的東東 破解以來第一次看明白的演算法

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

【脫文作者】 shaitan

【使用工具】 Ollydbg1.09d  W32DASM

【破解平臺】 WinXP

社群遊戲伴侶 V2.0
軟體大小:  214 KB
軟體語言:  簡體中文
軟體類別:  國產軟體 / 共享版 / 遊戲工具
應用平臺:  Win9x/NT/2000/XP
介面預覽:  
加入時間:  2004-03-14 10:18:52
下載地址    http://61.139.33.183/down.php?id=8428
開 發 商:  http://www.ptcn.com/

軟體介紹:
    該軟體用於聯眾邊鋒遊戲,是輔助記牌的工具(記牌器),目前支援〈夠級〉〈升級〉〈拱豬〉〈梭哈〉<鬥地主><三扣一>,將來會支援更多的遊戲。該軟體部分免費,部分收費。軟體開機自動啟動(可選)、自動判定遊戲廠家(聯眾,邊鋒)、自動判定遊戲種類、自動適應牌的付數(升級,拱豬,鬥地主)、自動彈出相應視窗、遊戲完畢自動關閉視窗、退出遊戲自動進入休眠狀態

偵脫殼=ASPACK2.12 OD載入

004C5001 >  60              PUSHAD                             ASP2.12的入口
004C5002    E8 03000000     CALL puker20.004C500A
004C5007  - E9 EB045D45     JMP 45A954F7
004C500C    55              PUSH EBP
004C500D    C3              RETN

搜 6175 脫殼

W32DASM載入脫殼檔案...

看到以下串..

"分牌:發牌家 "
"D$@"
"感謝您註冊使用本軟體,您註冊碼已儲存在本機,以後" 
(0045D34A  |.  B8 4CD44500   MOV EAX,puker20_.0045D44C                ;  註冊成功)
"mA"
"wX"
"E"


0045D34A  |.  B8 4CD44500   MOV EAX,puker20_.0045D44C                ;  註冊成功


使用者名稱:shaitan   試碼 52899480
從這裡向上看....到這
0045D16C  /.  55            PUSH EBP
0045D16D  |.  8BEC          MOV EBP,ESP
0045D16F  |.  B9 0C000000   MOV ECX,0C
0045D174  |>  6A 00         /PUSH 0
0045D176  |.  6A 00         |PUSH 0
0045D178  |.  49            |DEC ECX
0045D179  |.^ 75 F9         JNZ SHORT puker20_.0045D174
0045D17B  |.  53            PUSH EBX
0045D17C  |.  56            PUSH ESI
0045D17D  |.  8945 FC       MOV DWORD PTR SS:[EBP-4],EAX
0045D180  |.  33C0          XOR EAX,EAX
0045D182  |.  55            PUSH EBP
0045D183  |.  68 A1D34500   PUSH puker20_.0045D3A1
0045D188  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
0045D18B  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
0045D18E  |.  8D55 C8       LEA EDX,DWORD PTR SS:[EBP-38]
0045D191  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
0045D194  |.  8B80 08030000 MOV EAX,DWORD PTR DS:[EAX+308]
0045D19A  |.  E8 5996FDFF   CALL puker20_.004367F8
0045D19F  |.  8B45 C8       MOV EAX,DWORD PTR SS:[EBP-38]            ;  取出試碼
0045D1A2  |.  33D2          XOR EDX,EDX
0045D1A4  |.  E8 07B9FAFF   CALL puker20_.00408AB0
0045D1A9  |.  8BC8          MOV ECX,EAX
0045D1AB  |.  81F9 80969800 CMP ECX,989680                           ;  是不是8位
0045D1B1  |.  7D 0F         JGE SHORT puker20_.0045D1C2
0045D1B3  |.  B8 B8D34500   MOV EAX,puker20_.0045D3B8
0045D1B8  |.  E8 3F31FDFF   CALL puker20_.004302FC
0045D1BD  |.  E9 92010000   JMP puker20_.0045D354
0045D1C2  |>  8D45 C4       LEA EAX,DWORD PTR SS:[EBP-3C]
0045D1C5  |.  50            PUSH EAX
0045D1C6  |.  8D55 C0       LEA EDX,DWORD PTR SS:[EBP-40]
0045D1C9  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
0045D1CC  |.  8B80 08030000 MOV EAX,DWORD PTR DS:[EAX+308]
0045D1D2  |.  E8 2196FDFF   CALL puker20_.004367F8
0045D1D7  |.  8B45 C0       MOV EAX,DWORD PTR SS:[EBP-40]
0045D1DA  |.  B9 04000000   MOV ECX,4
0045D1DF  |.  33D2          XOR EDX,EDX
0045D1E1  |.  E8 B277FAFF   CALL puker20_.00404998
0045D1E6  |.  8B45 C4       MOV EAX,DWORD PTR SS:[EBP-3C]            ;  取前4位
0045D1E9  |.  E8 86B8FAFF   CALL puker20_.00408A74                   ;  前4位換成16進位制數
0045D1EE  |.  8945 F0       MOV DWORD PTR SS:[EBP-10],EAX
0045D1F1  |.  8D55 B8       LEA EDX,DWORD PTR SS:[EBP-48]
0045D1F4  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
0045D1F7  |.  8B80 04030000 MOV EAX,DWORD PTR DS:[EAX+304]
0045D1FD  |.  E8 F695FDFF   CALL puker20_.004367F8
0045D202  |.  8B45 B8       MOV EAX,DWORD PTR SS:[EBP-48]            ;  使用者名稱
0045D205  |.  8D55 BC       LEA EDX,DWORD PTR SS:[EBP-44]
0045D208  |.  E8 0BB5FAFF   CALL puker20_.00408718
0045D20D  |.  8B45 BC       MOV EAX,DWORD PTR SS:[EBP-44]
0045D210  |.  8D55 F4       LEA EDX,DWORD PTR SS:[EBP-C]
0045D213  |.  E8 DCB5FAFF   CALL puker20_.004087F4
0045D218  |.  8D45 B4       LEA EAX,DWORD PTR SS:[EBP-4C]
0045D21B  |.  50            PUSH EAX
0045D21C  |.  8D55 B0       LEA EDX,DWORD PTR SS:[EBP-50]
0045D21F  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
0045D222  |.  8B80 08030000 MOV EAX,DWORD PTR DS:[EAX+308]
0045D228  |.  E8 CB95FDFF   CALL puker20_.004367F8
0045D22D  |.  8B45 B0       MOV EAX,DWORD PTR SS:[EBP-50]
0045D230  |.  B9 04000000   MOV ECX,4
0045D235  |.  BA 05000000   MOV EDX,5
0045D23A  |.  E8 5977FAFF   CALL puker20_.00404998
0045D23F  |.  8B55 B4       MOV EDX,DWORD PTR SS:[EBP-4C]
0045D242  |.  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]
0045D245  |.  E8 FE74FAFF   CALL puker20_.00404748
0045D24A  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]             ;  使用者+後4位試號
0045D24D  |.  E8 EE74FAFF   CALL puker20_.00404740
0045D252  |.  8945 F8       MOV DWORD PTR SS:[EBP-8],EAX
0045D255  |.  8D45 CD       LEA EAX,DWORD PTR SS:[EBP-33]
0045D258  |.  8B55 F4       MOV EDX,DWORD PTR SS:[EBP-C]
0045D25B  |.  E8 F0BBFAFF   CALL puker20_.00408E50
0045D260  |.  BB DE040000   MOV EBX,4DE                              ;  演算法關鍵字
0045D265  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]
0045D268  |.  48            DEC EAX
0045D269  |.  85C0          TEST EAX,EAX
0045D26B  |.  7C 37         JL SHORT puker20_.0045D2A4
0045D26D  |.  40            INC EAX
0045D26E  |.  8945 EC       MOV DWORD PTR SS:[EBP-14],EAX
0045D271  |.  33C9          XOR ECX,ECX
0045D273  |.  8D45 CD       LEA EAX,DWORD PTR SS:[EBP-33]
0045D276  |>  8BD1          /MOV EDX,ECX
0045D278  |.  0FAFD1        |IMUL EDX,ECX                            ;  N的平方
0045D27B  |.  03DA          |ADD EBX,EDX                             ;  S+N*N
0045D27D  |.  33D2          |XOR EDX,EDX                             ;  EDX清0
0045D27F  |.  8A10          |MOV DL,BYTE PTR DS:[EAX]                ;  取出一個試碼X
0045D281  |.  0FAFD1        |IMUL EDX,ECX                            ;  X*N
0045D284  |.  03DA          |ADD EBX,EDX                             ;  S+X*N
0045D286  |.  8B55 F8       |MOV EDX,DWORD PTR SS:[EBP-8]
0045D289  |.  4A            |DEC EDX                                 ;  計數器
0045D28A  |.  83FA 00       |CMP EDX,0
0045D28D  |.  7C 0E         |JL SHORT puker20_.0045D29D
0045D28F  |>  8D1C19        |/LEA EBX,DWORD PTR DS:[ECX+EBX]         ;  S+N
0045D292  |.  0FB630        ||MOVZX ESI,BYTE PTR DS:[EAX]            ;  取出一個試碼X
0045D295  |.  03DE          ||ADD EBX,ESI                            ;  S=S+10*X
0045D297  |.  4A            ||DEC EDX
0045D298  |.  83FA FF       ||CMP EDX,-1
0045D29B  |.^ 75 F2         |JNZ SHORT puker20_.0045D28F
0045D29D  |>  41            |INC ECX                                 ;  計數器
0045D29E  |.  40            |INC EAX
0045D29F  |.  FF4D EC       |DEC DWORD PTR SS:[EBP-14]
0045D2A2  |.^ 75 D2         JNZ SHORT puker20_.0045D276
0045D2A4  |>  85DB          TEST EBX,EBX                             ;  EBX就是算的結果S
0045D2A6  |.  7D 0D         JGE SHORT puker20_.0045D2B5
0045D2A8  |.  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]
0045D2AB  |.  BA D4D34500   MOV EDX,puker20_.0045D3D4                ;  ASCII "gg"
0045D2B0  |.  E8 6B72FAFF   CALL puker20_.00404520
0045D2B5  |>  8BC3          MOV EAX,EBX
0045D2B7  |.  B9 10270000   MOV ECX,2710                             ;  演算法關鍵數
0045D2BC  |.  99            CDQ
0045D2BD  |.  F7F9          IDIV ECX                                 ;  求EBX的餘
0045D2BF  |.  8BDA          MOV EBX,EDX                              ;  這裡就是前4位的真註冊碼了
0045D2C1  |.  81FB E8030000 CMP EBX,3E8
0045D2C7  |.  7D 06         JGE SHORT puker20_.0045D2CF
0045D2C9  |.  81C3 70170000 ADD EBX,1770
0045D2CF  |>  3B5D F0       CMP EBX,DWORD PTR SS:[EBP-10]            ;  比較註冊碼的前4位
0045D2D2  |.  74 0C         JE SHORT puker20_.0045D2E0               ;  關鍵跳轉 ..爆破點


總結思路:

S=S+N*N+X*N+N+AH*X
S=S-2710
S的帶符號數是6784,這就是算出來的前4位註冊碼

註冊碼是透過註冊名+註冊碼後4位,算出前邊4位
得到完整的註冊的

破解結果:

聯眾使用者
使用者名稱 shaitan
註冊號 67849480

邊鋒註冊碼方法相同:
邊鋒使用者
使用者名稱 shaitan
註冊號 183639480

相關文章