飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2964|回复: 9

[原创] [一起学算法三]象棋桥V2.1算法分析+简单爆破

[复制链接]

该用户从未签到

发表于 2008-6-20 02:14:26 | 显示全部楼层 |阅读模式
【破文标题】[一起学算法]象棋桥V2.1算法分析+简单爆破
【破文作者】lzover[PYG]
破解工具】PEiD,OD
【破解平台】DB.XP SP2
【软件名称】象棋桥 V2.1
【软件大小】2225 KB
【原版下载】http://www.skycn.com/soft/4122.html
【保护方式】注册码
【软件简介】 象棋桥是一个功能强大的中国象棋打谱软件,支持局域网的联机对弈,可以进行人机的模拟对弈,已有的韬略元机、适情雅趣、桔中密、梅花谱、崇本堂梅花秘谱等精彩棋谱定会让您爱不释手。
【破解声明】我是小菜菜,只为学习,高人见谅了!


一个简单的软件,大家一起学。PEID查一下,无壳,试注册呀下,有错误提示框出现,好了,那就用OD载入程序,F9运行起来(中间会有些异常,一直SHIFT+F9就得了),下BP  MessageBoxA断点,注册一下,断下后ALT+F9返回程序领空,F8走一会再返回一次,OK了,段首下个断以后重新注册,断下后开始分析:
0051E318   .  55            push    ebp
0051E319   .  68 5AE65100   push    0051E65A
0051E31E   .  64:FF30       push    dword ptr fs:[eax]
0051E321   .  64:8920       mov     dword ptr fs:[eax], esp
0051E324   .  8B45 FC       mov     eax, dword ptr [ebp-4]
0051E327   .  8B90 68090000 mov     edx, dword ptr [eax+968]
0051E32D   .  A1 3C915400   mov     eax, dword ptr [54913C]
0051E332   .  8B80 D8020000 mov     eax, dword ptr [eax+2D8]
0051E338   .  E8 0F5DF1FF   call    0043404C
0051E33D   .  A1 3C915400   mov     eax, dword ptr [54913C]
0051E342   .  05 00030000   add     eax, 300
0051E347   .  8B55 FC       mov     edx, dword ptr [ebp-4]
0051E34A   .  8B92 5C090000 mov     edx, dword ptr [edx+95C]
0051E350   .  E8 4F59EEFF   call    00403CA4
0051E355   .  A1 3C915400   mov     eax, dword ptr [54913C]
0051E35A   .  8B10          mov     edx, dword ptr [eax]
0051E35C   .  FF92 D8000000 call    dword ptr [edx+D8]               ;  出现注册框
0051E362   .  48            dec     eax
0051E363   .  0F85 B1020000 jnz     0051E61A
0051E369   .  8D55 EC       lea     edx, dword ptr [ebp-14]
0051E36C   .  A1 3C915400   mov     eax, dword ptr [54913C]
0051E371   .  8B80 D8020000 mov     eax, dword ptr [eax+2D8]
0051E377   .  E8 A05CF1FF   call    0043401C                         ;  取用户名
0051E37C   .  8B55 EC       mov     edx, dword ptr [ebp-14]
0051E37F   .  8B45 FC       mov     eax, dword ptr [ebp-4]
0051E382   .  05 70090000   add     eax, 970
0051E387   .  E8 1859EEFF   call    00403CA4
0051E38C   .  8D55 E8       lea     edx, dword ptr [ebp-18]
0051E38F   .  A1 3C915400   mov     eax, dword ptr [54913C]
0051E394   .  8B80 E0020000 mov     eax, dword ptr [eax+2E0]
0051E39A   .  E8 7D5CF1FF   call    0043401C                         ;  取注册码
0051E39F   .  8B45 E8       mov     eax, dword ptr [ebp-18]
0051E3A2   .  8D55 F4       lea     edx, dword ptr [ebp-C]
0051E3A5   .  E8 42A5EEFF   call    004088EC
0051E3AA   .  B3 01         mov     bl, 1
0051E3AC   .  8B45 F4       mov     eax, dword ptr [ebp-C]
0051E3AF   .  E8 1C5BEEFF   call    00403ED0
0051E3B4   .  83F8 0C       cmp     eax, 0C                          ;  注册码为12位,否则OVER
0051E3B7      75 60         jnz     short 0051E419
0051E3B9   .  8D45 F0       lea     eax, dword ptr [ebp-10]
0051E3BC   .  8B55 F4       mov     edx, dword ptr [ebp-C]
0051E3BF   .  E8 2459EEFF   call    00403CE8
0051E3C4   .  8D45 F0       lea     eax, dword ptr [ebp-10]
0051E3C7   .  B9 07000000   mov     ecx, 7
0051E3CC   .  BA 01000000   mov     edx, 1
0051E3D1   .  E8 425DEEFF   call    00404118                         ;  取后5位
0051E3D6   .  8D45 F4       lea     eax, dword ptr [ebp-C]
0051E3D9   .  B9 05000000   mov     ecx, 5
0051E3DE   .  BA 08000000   mov     edx, 8
0051E3E3   .  E8 305DEEFF   call    00404118                         ;  取前7位
0051E3E8   .  8B45 F4       mov     eax, dword ptr [ebp-C]
0051E3EB   .  BA 70E65100   mov     edx, 0051E670                    ;  ASCII "CCB21R-"
0051E3F0   .  E8 EB5BEEFF   call    00403FE0
0051E3F5   .  75 1E         jnz     short 0051E415                   ;  前7位要等于CCB21R-
0051E3F7   .  8D55 E4       lea     edx, dword ptr [ebp-1C]
0051E3FA   .  8B45 FC       mov     eax, dword ptr [ebp-4]
0051E3FD   .  8B80 70090000 mov     eax, dword ptr [eax+970]
0051E403   .  E8 5462F6FF   call    0048465C                         ;  用户名计算出后5位
0051E408   .  8B55 E4       mov     edx, dword ptr [ebp-1C]
0051E40B   .  8B45 F0       mov     eax, dword ptr [ebp-10]
0051E40E   .  E8 CD5BEEFF   call    00403FE0                         ;  比较后5位,想等则OK
0051E413   .  74 06         je      short 0051E41B                   ;  跳则成功
0051E415   >  33DB          xor     ebx, ebx
0051E417   .  EB 02         jmp     short 0051E41B
0051E419   >  33DB          xor     ebx, ebx
0051E41B   >  84DB          test    bl, bl
0051E41D   .  0F84 11010000 je      0051E534
0051E423   .  8B45 FC       mov     eax, dword ptr [ebp-4]
0051E426   .  C680 84090000>mov     byte ptr [eax+984], 1
0051E42D   .  8B45 FC       mov     eax, dword ptr [ebp-4]
0051E430   .  C680 85090000>mov     byte ptr [eax+985], 0
0051E437   .  8B45 FC       mov     eax, dword ptr [ebp-4]

这里可以分析出注册码为12位,而且前面7为是固定字符串"CCB21R-",0051E403的CALL是关键算法,F7进入可以看到:

00484691  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
00484694  |.  E8 37F8F7FF   call    00403ED0
00484699  |.  40            inc     eax
0048469A  |.  8BD8          mov     ebx, eax
0048469C  |.  83FB 05       cmp     ebx, 5
0048469F  |.  7F 13         jg      short 004846B4               ;  用户名大于4位跳向计算部分
004846A1  |>  8D45 F4       /lea     eax, dword ptr [ebp-C]
004846A4  |.  BA 60474800   |mov     edx, 00484760
004846A9  |.  E8 2AF8F7FF   |call    00403ED8
004846AE  |.  43            |inc     ebx
004846AF  |.  83FB 06       |cmp     ebx, 6
004846B2  |.^ 75 ED         \jnz     short 004846A1              ;  循环:如果小于等于4位则在后面加空格填充至5位
004846B4  |>  8B45 F4       mov     eax, dword ptr [ebp-C]
004846B7  |.  33C9          xor     ecx, ecx
004846B9  |.  8A08          mov     cl, byte ptr [eax]           ;  第一位进CL   X1
004846BB  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
004846BE  |.  33DB          xor     ebx, ebx
004846C0  |.  8A58 01       mov     bl, byte ptr [eax+1]         ;  第二位进BL   X2
004846C3  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
004846C6  |.  0FB670 02     movzx   esi, byte ptr [eax+2]        ;  第三位扩展进ESI    X3
004846CA  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
004846CD  |.  0FB678 03     movzx   edi, byte ptr [eax+3]        ;  第4位扩展进EDI    X4
004846D1  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
004846D4  |.  0FB640 04     movzx   eax, byte ptr [eax+4]        ;  第5位扩展进EAX    X5
004846D8  |.  8945 F0       mov     dword ptr [ebp-10], eax      ;  EAX进地址[EBP-10]
004846DB  |.  8D040B        lea     eax, dword ptr [ebx+ecx]     ;  地址EAX=EBX+ECX    X1+X2
004846DE  |.  03FE          add     edi, esi                     ;  EDI = EDI + ESI     X4+X3
004846E0  |.  F7EF          imul    edi                          ;  EAX = EAX * EDI
004846E2  |.  F76D F0       imul    dword ptr [ebp-10]           ;  EAX与前面存进去的第五位想乘(X1 + X2) * (x3 + x4)
004846E5  |.  B9 A0860100   mov     ecx, 186A0                   ;  ECX = 186A0
004846EA  |.  99            cdq                                  ;  清空
004846EB  |.  F7F9          idiv    ecx                          ;  带符号数除法运算:EAX = EAX/ECX
004846ED  |.  8BDA          mov     ebx, edx                     ;  余数进EBX
004846EF  |.  8D55 F4       lea     edx, dword ptr [ebp-C]
004846F2  |.  8BC3          mov     eax, ebx
004846F4  |.  E8 B745F8FF   call    00408CB0                     ;  把余数转为10进制
004846F9  |.  8B45 F4       mov     eax, dword ptr [ebp-C]       ;  转换后进EAX
004846FC  |.  E8 CFF7F7FF   call    00403ED0                     ;      EAX的字数
00484701  |.  40            inc     eax
00484702  |.  8BD8          mov     ebx, eax
00484704  |.  83FB 05       cmp     ebx, 5
00484707  |.  7F 16         jg      short 0048471F               ;  小于5则不跳
00484709  |>  8D45 F4       /lea     eax, dword ptr [ebp-C]
0048470C  |.  8B4D F4       |mov     ecx, dword ptr [ebp-C]
0048470F  |.  BA 6C474800   |mov     edx, 0048476C
00484714  |.  E8 03F8F7FF   |call    00403F1C
00484719  |.  43            |inc     ebx
0048471A  |.  83FB 06       |cmp     ebx, 6
0048471D  |.^ 75 EA         \jnz     short 00484709              ;  循环给在前面加上0直到5位
0048471F  |>  8B45 F8       mov     eax, dword ptr [ebp-8]
00484722  |.  8B55 F4       mov     edx, dword ptr [ebp-C]
00484725  |.  E8 7AF5F7FF   call    00403CA4
0048472A  |.  33C0          xor     eax, eax
0048472C  |.  5A            pop     edx

这里计算出Y=(x1+x2)*(x3+x4)*x5 mod 100000 ,如果注册码后5位为Y则成功.注册信息保存地址:HKEY_CURRENT_USER\Software\ShengYu\CCBridge     

//////////////////////////////////////////////////////////////////////////////////////////////////////////
关于此软件的爆破也相对简单,这个软件无重起验证,只要在软件中注册成功一次,以后再开就是注册版了,所以改以下几处就OK了:

0051E3B7      75 60         jnz     short 0051E419     //把这个JNZ给NOP掉就是输入多少位数都行~~~~

0051E3F5   .  75 1E         jnz     short 0051E415                   ;  前7位要等于CCB21R-    //NOP掉~~~~

0051E413   .  74 06         je      short 0051E41B    //这里的JE改为JMP
/////////////////////////////////////////////////////////////////////////////////////////////////////////


  
///VB写注册机代码如下,很简单:

Private Sub Command1_Click()
Dim a() As Byte
Dim Name As String
Name = CStr(Text1.Text)
L = LenB(StrConv(Name, vbFromUnicode))

If L < 5 Then
Name = Name + "     "
End If

a = StrConv(Name, vbFromUnicode)

X1 = a(0)
X2 = a(1)
X3 = a(2)
x4 = a(3)
x5 = a(4)

Y = CStr(((X1 + X2) * (X3 + x4) * x5) Mod 100000)

If Len(Y) < 5 Then
For i = 1 To (5 - Len(Y))
Y = "0" + Y
Next i
End If

Text2.Text = "CCB21R-" + Y

End Sub

Private Sub Command2_Click()
End

未命名.GIF

[ 本帖最后由 lzover 于 2008-6-20 12:23 编辑 ]

象棋桥 2.1 KeyGen.rar

9.78 KB, 下载次数: 22, 下载积分: 飘云币 -2 枚

评分

参与人数 1威望 +40 飘云币 +40 收起 理由
hj2008mt + 40 + 40 PYG有你更精彩!

查看全部评分

PYG19周年生日快乐!

该用户从未签到

发表于 2008-6-25 19:05:00 | 显示全部楼层
楼主厉害,进步真快!!!
PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-4-11 11:26
  • 签到天数: 264 天

    [LV.8]以坛为家I

    发表于 2008-6-25 21:08:55 | 显示全部楼层
    楼主真厉害呀,学习中……
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-7-21 16:31:34 | 显示全部楼层
    好长好长啊!好想啥时候能看懂那就高兴死我了!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-7-22 14:54:15 | 显示全部楼层
    /:001 VB代码看懂了~哈哈~谢谢楼主的算法分析
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-9-4 07:29:54 | 显示全部楼层
    好东西!学习中............
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-9-8 08:47:56 | 显示全部楼层
    楼主真厉害呀,学习中……
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-9-23 08:12:40 | 显示全部楼层
    好东东,值得新手们学习
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-9-26 21:04:04 | 显示全部楼层
    学习算法中,支持一下。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-9-28 11:12:06 | 显示全部楼层
    高手啊,向高手们学习。
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表