飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4665|回复: 8

[原创] 一个游戏软件的算法分析

[复制链接]

该用户从未签到

发表于 2009-1-21 11:53:48 | 显示全部楼层 |阅读模式
【破文标题】一个游戏软件的算法分析
【破文作者】canyun
【作者邮箱】[email protected]
【作者主页】[email protected]
破解工具】OD ,Peid
【破解平台】WINXP
【软件名称】笨笨鸟简体中文版
【软件大小】15.8M
【原版下载】http://www.onlinedown.net/soft/3886.htm
【保护方式】注册码
【软件简介】一个很好玩的桌面宠物!!有兴趣的可以下载看看
【破解声明】新年第一篇破文,希望大家支持
------------------------------------------------------------------------
【破解过程】
1,查壳ASPack 2.12 -> Alexey Solodovnikov,esp定律简单脱之,脱完发现是Borland Delphi 6.0 - 7.0
   试着用dede,但老卡住,没办法,放弃dede
2,运行软件试注册,发现没任何提示
3,OD载入,用查看字符串法找到“感谢您注册笨笨鸟!”
   明人一看就知道该怎么做了,
4,运行软件,试注册,断在如下代码,单步走会发现

0057F255    E8 3A3FEDFF         call Unpack.00453194          判断注册码是否溢出
0057F25A    E8 9D55E8FF         call Unpack.004047FC          ; 将假码转换成16进制
0057F25F    8B45 F8                  mov eax,dword ptr ss:[ebp-8]  ;段在这里,观查dword ptr ss:[ebp-8]的值,正是假码的16进制
0057F262    B9 BB050000          mov ecx,5BB
0057F267    99                            cdq
0057F268    F7F9                        idiv ecx                      ; 转换成16进制的假码除以5BB(1467)
0057F26A    81FA E6020000      cmp edx,2E6                   ; edx存放的是上面那句除后的余数,然后和2E6(742)比较
0057F270    75 16                       jnz short Unpack.0057F288     ; 不相等就没有任何反应
0057F272    A1 9C506600           mov eax,dword ptr ds:[66509C]
0057F277    E8 78EEF0FF          call Unpack.0048E0F4
0057F27C    B8 00F35700          mov eax,Unpack.0057F300       ; 感谢您注册笨笨鸟!
0057F281    E8 0E3FEDFF         call Unpack.00453194
0057F286    EB 1B                      jmp short Unpack.0057F2A3
0057F288    8D85 E8FEFFFF      lea eax,dword ptr ss:[ebp-118]

通过上面的分析,可得到注册码算法如下sn=x*1467+742  x为整数
本以为到这里就结束了,虽然提示感谢您注册笨笨鸟!,但还是没有注册成功
这时就要用到另一个字符串了“您已经注册了本软件,感谢您的大力支持!”,来到代码处
0057F349    E8 C6ECF0FF         call Unpack.0048E014
0057F34E    8B45 FC                  mov eax,dword ptr ss:[ebp-4]
0057F351    E8 4EB1E8FF         call Unpack.0040A4A4
0057F356    8BC8                       mov ecx,eax
0057F358    8BC1                      mov eax,ecx
0057F35A    B9 D7040000         mov ecx,4D7
0057F35F    99                           cdq
0057F360    F7F9                      idiv ecx
0057F362    81FA E6020000       cmp edx,2E6
0057F368    75 47                       jnz short Unpack.0057F3B1
0057F36A    BA DCF35700         mov edx,Unpack.0057F3DC     ; 您已经注册了本软件,感谢您的大力支持!
这个结构和上面那段代码是不是很像,唯一不一样的就是5BB换成了4D7(1239)
分析到这里,他的注册机制大致如下
sn=x*1467+742 sn=y*1239+742  (x,y为任意整数)
sn要满足着两个条件才行
所以注册码的算法转换为sn=m*1467*1239+742
VB注册机算法代码如下:
Private Sub Command1_Click()
Dim a, b As Long
a = Int(Rnd * 1180 + 1)
b = 1467*1239 * a + 742
Text1.Text = Trim(Str(b))
End Sub
------------------------------------------------------------------------
【破解总结】关于找按钮事件我还没发现什么方法,此方法有点笨,请高手指点
注册信息存放在config.ini里面的userid,将后面的值改为0即可反复研究
------------------------------------------------------------------------
【版权声明】破文是学习的手记,兴趣是成功的源泉;本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

笨笨鸟V3.2注册机.rar

2.87 KB, 下载次数: 3, 下载积分: 飘云币 -2 枚

评分

参与人数 1飘云币 +80 收起 理由
tianxj + 80 感谢您发布的原创作品!

查看全部评分

PYG19周年生日快乐!

该用户从未签到

发表于 2009-1-21 12:22:41 | 显示全部楼层
楼主很强  支持一下/:good
PYG19周年生日快乐!

该用户从未签到

发表于 2009-1-21 12:32:21 | 显示全部楼层
很棒的说.~  继续分析更多精彩文章~/:good
PYG19周年生日快乐!
  • TA的每日心情
    开心
    2017-5-3 20:51
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2009-1-21 19:15:15 | 显示全部楼层
    算法分析得很好,支持一下
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2017-5-9 01:01
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    发表于 2009-1-21 19:19:20 | 显示全部楼层
    分析的很祥细,支持。
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2016-6-9 19:50
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2009-1-22 13:01:24 | 显示全部楼层
    分析的不错。支持搂住
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-1-23 20:13:06 | 显示全部楼层

    感谢分享 ~~

    00403740 > $  68 FCC54000   push    0040C5FC
    00403745   .  E8 F0FFFFFF   call    <jmp.&msvbvm60.ThunRTMain>
    0040374A   >  0000          add     byte ptr [eax], al
    0040374C   .  48            dec     eax
    0040374D   .  0000          add     byte ptr [eax], al
    0040374F   .  0030          add     byte ptr [eax], dh
    00403751   .  0000          add     byte ptr [eax], al
    00403753   .  0040 00       add     byte ptr [eax], al
    00403756   .  0000          add     byte ptr [eax], al
    00403758   .  0000          add     byte ptr [eax], al
    0040375A   .  0000          add     byte ptr [eax], al
    0040375C   .  92            xchg    eax, edx
    0040375D   .  53            push    ebx
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-1-24 18:13:06 | 显示全部楼层
    受教啦  非常感谢。。努力学习算法中
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-1-27 13:29:06 | 显示全部楼层
    谢谢分享。。。。。。。。。。慢慢学习来
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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