首页
社区
课程
招聘
[原创]独立完成!本人第一个商用软件的破解分析
发表于: 2008-12-30 18:17 4750

[原创]独立完成!本人第一个商用软件的破解分析

2008-12-30 18:17
4750
--------------------------------------------------

仅供学习,请勿商用。

引言:这几天在学“大字牌”也在学OD,无奈,网上的“大字牌”单机游戏太少,只有“中国字牌

V2.01”和“常德跑和字99”。网络版有黄金岛(收费)和南宁同城游戏版。这两个游戏都要注册的,反正在学OD,所以拿它

们开刀,“常德跑和字99版”的注册方法是字符对比,直接“超级字符串参考+”就能看到本机注册码。“中国字牌V2.01”

就难了,今天以它为例,谈谈分析。
软件名:  中国字牌 2.01
下载地址:http://www.onlinedown.net/soft/28798.htm
一、先试用软件
到注册窗口,见机器码为16位无法改,注册码为27位为NY-aaaa-bbbb-cccc-dddd-eeee。乱输入提示“注册码错误,请重新输

入”记住这串字,从这里入手。再看看游戏根目录有一个sysdata.ini。进去看到一些设置和注册码,看来该软件是从这里复

查注册码,不知道爆破行不行。
二、用OD打开“中国字牌.exe”

1.用“超级字符串参考+”找“注册码错误,请重新输入”。找到2个。
地址=0047827D 反汇编=MOV EDX,中国字牌.00478460 文本字串=注册码错误,请重新输入
地址=00477F85 反汇编=MOV EDX,中国字牌.004780C0 文本字串=注册码错误,请重新输入
并加个“标签”,方便等下用CTRL+N快速回来

2.分别到地址=0047827D和地址=00477F8看看,向上几行都有一个TEST AL AL和JNZ。先用爆破的方法看看是不是关键跳。先

加断点在这两个地址这前,如果断下,说明方向基本正解。再把JNZ改成JMP试试会不会出注册正确的窗口。(但该软件爆破

后只会发牌打不了牌)
00478263 > .  A1 40FB4A00   MOV EAX,DWORD PTR DS:[4AFB40]            ;  取机器码
00478268   .  8B00          MOV EAX,DWORD PTR DS:[EAX]
0047826A   .  8B55 F4       MOV EDX,DWORD PTR SS:[EBP-C]             ;  取注册码
0047826D   .  E8 3EF6FFFF   CALL 004778B0                       ;  算法入口
00478272   .  84C0          TEST AL,AL
00478274      75 1D         JNZ SHORT 中国字牌.00478293        ;关键跳
00478276   .  6A 00         PUSH 0
00478278   .  B9 48844700   MOV ECX,中国字牌.00478448                    ;  系统信息
0047827D   .  BA 60844700   MOV EDX,中国字牌.00478460                    ;  注册码错误,请重新输入

3.分析算法,我是第一次深入的一条一条的分析反汇编代码,所以用了几天时间,走了不少弯路。但弯路没有白走。
分析了机器码和注册码的位数校验代码,发现注册码只能为数字。
分析了提取四位数字串代码,发现它会把16位机器码分成4组,一组4个数,注册码也一样4位一组。
分析了每组4位数的运算代码,发现它是把每组10进制数转换成16进制存入并内存DS
分析了注册码记录代码。输入正确的注册码后,它会打开sysdata.ini写入正确的注册码,所以爆破后会把错误的注册码写入

sysdata.ini
最后我才分析到关键算法:

0047826D   .  E8 3EF6FFFF   CALL 004778B0                       ;  算法入口
在这里下断,断下后F7进入

进入后逐条分析,发现它还是位数位数校验、提取四位数字串等前面分析过的。所以跳过,直接从004778B0跳到004779B6
004779B6 > .  8B55 D0       MOV EDX,DWORD PTR SS:[EBP-30];EDX=注册码第一组数字的16进制表示
004779B9   .  C1E2 03       SHL EDX,3                    ;二进制左移3位(相当于10进制的*8)
004779BC   .  8B4D E4       MOV ECX,DWORD PTR SS:[EBP-1C];ECX=机器码第一组数字的16进制表示
004779BF   .  2BCA          SUB ECX,EDX                         ;ECX=机器码-注册码
004779C1   .  2BC8          SUB ECX,EAX                         ;EAX=注册码最后一组第一个数可修改寄存器好分析下面
004779C3   .  74 0F         JE SHORT 中国字牌.004779D4         ;相等就OK 不等就完蛋
004779C5   .  33DB          XOR EBX,EBX
004779C7   .  33C0          XOR EAX,EAX
004779C9   .  5A            POP EDX
004779CA   .  59            POP ECX
004779CB   .  59            POP ECX
004779CC   .  64:8910       MOV DWORD PTR FS:[EAX],EDX
004779CF   .  E9 C8000000   JMP 中国字牌.00477A9C         ;上面错误就从这跳走
004779D4   >  8D45 C0       LEA EAX,DWORD PTR SS:[EBP-40]
004779D7   .  8B55 F4       MOV EDX,DWORD PTR SS:[EBP-C]
004779DA   .  8A52 01       MOV DL,BYTE PTR DS:[EDX+1]
004779DD   .  E8 52CDF8FF   CALL 中国字牌.00404734
004779E2   .  8B45 C0       MOV EAX,DWORD PTR SS:[EBP-40]
004779E5   .  E8 0A0DF9FF   CALL 中国字牌.004086F4
004779EA   .  8B55 D4       MOV EDX,DWORD PTR SS:[EBP-2C]
004779ED   .  C1E2 03       SHL EDX,3                                ;  左移3
004779F0   .  8B4D E8       MOV ECX,DWORD PTR SS:[EBP-18]
004779F3   .  2BCA          SUB ECX,EDX
004779F5   .  2BC8          SUB ECX,EAX
004779F7   .  74 0F         JE SHORT 中国字牌.00477A08
这里我只分析第一组注册码的算法,其它组的也差不多,不一一分析

4.得到算法:

算法:
机器码:aaaabbbbccccdddd   16位
注册码NY-XXXX-YYYY-ZZZZ-MMMM-ABCD

分四组算
1.        aaaa和XXXX都先转成16进制,aaaa-(XXXX右移3位(相当于*8))=A
2.        bbbb和YYYY都先转成16进制, bbbb-(YYYY右移3位(相当于*8))=B
3.        cccc和ZZZZ都先转成16进制,cccc-(XXXX*6)=C
4.        dddd和MMMM都先转成16进制,dddd-(MMMM*4)=D

5.做注册机。注册机我已经做好,但不知道看雪给不给上,所以这里先不上。

6.结束语,写的时候真的很简单,但请同我一样的新手还是去分析分析其它的代码才会有学习的作用。

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
2
首先恭喜一下。。
其次。。
论坛不鼓励以国内软件为研究对象。。

文章很好很详细很强大。。
2008-12-30 18:46
0
雪    币: 155
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
厉害,看看什么游戏
2008-12-30 19:41
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
俺也下来学习一下,顺便祝贺楼主成功
2008-12-30 20:28
0
雪    币: 1137
活跃值: (10)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
5
恭喜!

学习了
2008-12-30 21:33
0
雪    币: 419
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
没有VM真好
2008-12-30 22:28
0
雪    币: 197
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
up~~~~~~
2008-12-31 07:26
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
恭喜,对外挂下手不是罪,做外罪就是罪了
2008-12-31 09:55
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
很详细,谢谢了
2008-12-31 15:54
0
雪    币: 442
活跃值: (43)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
国产软件惯例不应该加名字
2008-12-31 18:30
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mjh
11
支持 好啊
2008-12-31 19:41
0
游客
登录 | 注册 方可回帖
返回
//