• 标 题:社区游戏伴侣 V2.0 简章的东东 破解以来第一次看明白的算法
  • 作 者:nj528
  • 时 间:2004年3月15日 10:56
  • 链 接:http://bbs.pediy.com

【脱文作者】 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载入脱壳文件...

看到以下串..

"分牌:发牌家 "
"婦$鰼"
"感谢您注册使用本软件,您注册码已保存在本机,以后" 
(0045D34A  |.  B8 4CD44500   MOV EAX,puker20_.0045D44C                ;  注册成功)
"鴐A"
"閣X"
"碋"


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