首页
论坛
课程
招聘
[旧帖] [原创]多层次破解某象棋软件 0.00雪花
2011-1-20 18:31 4069

[旧帖] [原创]多层次破解某象棋软件 0.00雪花

2011-1-20 18:31
4069
多层次破解某象棋软件(申请邀请码)
中国象棋V2.0
软件大小:908KB
软件语言:中文
软件类别:国内/共享版
运行环境:win9x/me/NT/XP/2003
Download:网上搜索
首先说明,本人刚学破解几个月的菜鸟,感觉破解这门学问太深了,也想通过论去继续学习,模访网上的文章写的,个人感觉内容还是很丰富的,希望大家不要见笑。
方法一:清除软件使用次数限制(两种途径)
首先查壳,运行PEID,载入中国象棋V2.0,无壳,如下图:


运行软件,启动时有注册提示窗口和30天试用信息,如下图:
 

点击现在注册,注册软件,发现有错误提示窗口,如下图:
 

点击开始—运行,输入regedit,打开注册表,点击编辑—查找,输入chess:
 
点击查找下一个,F3继续,来到下图处:
 
观察DayOfUsed键的数据似乎与时间有关,将时间修改为2011.1.9试一下,在DayOfUsed键上单击鼠标右键—修改,2011.1.19修改为2011.1.9:
 
重新运行软件,发现软件使用天数变为11天,
 
可以肯定,该键值的数据就是计算使用天数的基准日期,将2011.1.19改为3011.1.19,可以达到永久试用的目的。
还有一种思路也可达到永久试用的目的,既然软件有计算试用天数的程序,我们只要跳过这部分不就可以达到永久试用的目的吗?
OD载入软件,既然计算试用天数要用到注册表中的基准时间,可下bp RegOpenKeyExA断点,按F9运行,观察堆栈,F9继续运行,直到出现GZ_POWER_CHESS注册表项,如图:
 
Alt+F9执行到用户代码,

00408BAA    8B4424 10       mov eax,dword ptr ss:[esp+10]  ,返回到此处
00408BAE    3BC3            cmp eax,ebx
00408BB0    0F84 FB000000   je ChineseC.00408CB1        ,关键跳,修改此处正好跳过计算试用天数
00408BB6    8D4C24 14       lea ecx,dword ptr ss:[esp+14]
00408BBA    51              push ecx
00408BBB    68 3F000F00     push 0F003F
00408BC0    53              push ebx
00408BC1    68 20054400  push ChineseC.00440520         ; set
00408BC6    50              push eax
00408BC7    FFD6            call esi
00408BC9    8B4424 14       mov eax,dword ptr ss:[esp+14]
00408BCD    3BC3            cmp eax,ebx
00408BCF    0F84 DA010000   je ChineseC.00408DAF
00408BD5    8D5424 2C       lea edx,dword ptr ss:[esp+2C]
00408BD9    8D4C24 48       lea ecx,dword ptr ss:[esp+48]
00408BDD    52              push edx
00408BDE    51              push ecx
00408BDF    53              push ebx
00408BE0    53              push ebx
00408BE1    68 14054400  push ChineseC.00440514     ; dayofused
00408BE6    50              push eax
00408BE7    C74424 48 00020>mov dword ptr ss:[esp+48],200
00408BEF    C74424 44 1E000>mov dword ptr ss:[esp+44],1E
00408BF7    FFD5            call ebp
00408BF9    85C0            test eax,eax
00408BFB    75 1A           jnz short ChineseC.00408C17
00408BFD    51              push ecx
00408BFE    8D5424 4C       lea edx,dword ptr ss:[esp+4C]
00408C02    8BCC            mov ecx,esp
00408C04    896424 38       mov dword ptr ss:[esp+38],esp
00408C08    52              push edx
00408C09    E8 9CB30200     call <jmp.&MFC42.#537>
00408C0E    8B4C24 20       mov ecx,dword ptr ss:[esp+20]
00408C12    E8 F9080000     call ChineseC.00409510
00408C17    8B5424 14       mov edx,dword ptr ss:[esp+14]
00408C1B    8D4424 2C       lea eax,dword ptr ss:[esp+2C]
00408C1F    8D4C24 48       lea ecx,dword ptr ss:[esp+48]
00408C23    50              push eax
00408C24    51              push ecx
00408C25    53              push ebx
00408C26    53              push ebx
00408C27    68 08054400  push ChineseC.00440508             ; chesscount
00408C2C    52              push edx
00408C2D    FFD5            call ebp
00408C2F    85C0            test eax,eax
00408C31    75 18           jnz short ChineseC.00408C4B
00408C33    8D4424 48       lea eax,dword ptr ss:[esp+48]
00408C37    50              push eax
00408C38   FF15 2C874300   call dword ptr ds:[<&MSVCRT.atol>]      ; msvcrt.atol
00408C3E    8B4C24 20       mov ecx,dword ptr ss:[esp+20]
00408C42    83C4 04         add esp,4
00408C45    8981 C4000000   mov dword ptr ds:[ecx+C4],eax
00408C4B    8B4C24 14       mov ecx,dword ptr ss:[esp+14]
00408C4F    8D5424 30       lea edx,dword ptr ss:[esp+30]
00408C53    8D8424 68020000 lea eax,dword ptr ss:[esp+268]
00408C5A    52              push edx
00408C5B    50              push eax
00408C5C    53              push ebx
00408C5D    53              push ebx
00408C5E    68 FC044400 push ChineseC.004404FC                 ; registernum
00408C63    51              push ecx
00408C64    FFD5            call ebp
00408C66    3BC3            cmp eax,ebx
00408C68    74 14           je short ChineseC.00408C7E
00408C6A    8B5424 10       mov edx,dword ptr ss:[esp+10]
00408C6E  8B35 14804300   mov esi,dword ptr ds:[<&ADVAPI32.RegCloseKey>]         ; ADVAPI32.RegCloseKey
00408C74    52              push edx
00408C75    FFD6            call esi
00408C77    8B4424 14       mov eax,dword ptr ss:[esp+14]
00408C7B    50              push eax
00408C7C    EB 31           jmp short ChineseC.00408CAF
00408C7E    8B4424 14       mov eax,dword ptr ss:[esp+14]
00408C82    8D4C24 28       lea ecx,dword ptr ss:[esp+28]
00408C86    8D9424 68010000 lea edx,dword ptr ss:[esp+168]
00408C8D    51              push ecx
00408C8E    52              push edx
00408C8F    53              push ebx
00408C90    53              push ebx
00408C91    68 F0044400  push ChineseC.004404F0              ; username
00408C96    50              push eax
00408C97    FFD5            call ebp
00408C99    3BC3            cmp eax,ebx
00408C9B    74 2D           je short ChineseC.00408CCA
00408C9D    8B4C24 10       mov ecx,dword ptr ss:[esp+10]
00408CA1 8B35 14804300   mov esi,dword ptr ds:[<&ADVAPI32.RegCloseKey>]         ; ADVAPI32.RegCloseKey
00408CA7    51              push ecx
00408CA8    FFD6            call esi
00408CAA    8B5424 14       mov edx,dword ptr ss:[esp+14]
00408CAE    52              push edx
00408CAF    FFD6            call esi
00408CB1    8D4C24 18       lea ecx,dword ptr ss:[esp+18]
00408CB5    C78424 70040000>mov dword ptr ss:[esp+470],-1

在00408BB0这行单击鼠标右键,选择汇编,将je修改为jmp,
 
在汇编窗口单击鼠标右键,选择复制到可执行文件—所有修改,然后选择全部复制,
 
单击鼠标右键,选择保存文件,OK!软件可以永久试用,不信的话可以修改注册表DayOfUsed项的数据,发现试用天数不变。
方法二:爆破
既然注册时有错误提示,可以通过查找字符串来查找按钮事件,OD载入软件
 
在汇编窗口单击鼠标右键,选择Ultra字符串参考—1.查找ASCII,
 
双击“姓名和注册码不匹配,注册不成功!”这一行,来到主程序窗口,
 
往上观察,发现了一些关键东西:
00430B67    E8 24E9FFFF     call ChineseC.0042F490       关键CALL
00430B6C    84C0            test al,al                    关键比较
00430B6E    6A 40           push 40
00430B70    68 90044400  push ChineseC.00440490          ; gzpower chess
00430B75    75 21           jnz short ChineseC.00430B98    关键跳
00430B77    68 9C1A4400 push ChineseC.00441A9C  ; 姓名和注册码不匹配,注册不成功!
00430B7C    8BCE            mov ecx,esi

在00430B70这行单击鼠标右键,选择汇编,将jnz修改为jz,在汇编窗口单击鼠标右键,选择复制到可执行文件—所有修改,然后选择全部复制,
 

单击鼠标右键,选择保存文件。
重启中国象棋V2.0,仍有注册提示窗口,但可以注册成功,
 
重启后仍然是未注册版,因些必须去掉提示注册的NAG窗口中。
OD载入软件,用F12暂停法去掉NAG窗口,F9运行软件,然后到反汇编窗口,按F12键,Alt+F9执行到用户代码,


00408499 这一行是调用注册提示的NAG窗口, 往上查找,发现00408461这一行正好跳过调用注册提示的NAG窗口,在00408461这一行单击鼠标右键,选择汇编,将jnz改为jmp,
 
在汇编窗口单击鼠标右键,选择复制到可执行文件—所有修改,然后选择全部复制,然后单击鼠标右键,选择保存文件。
重启中国象棋V2.0,没有注册提示窗口,直接进入软件,如下图:
 

仍然有未注册字样,但不影响使用,也可将未注册字样去掉,OD重新载入修改后中国象棋V2.0,在汇编窗口单击鼠标右键,选择Ultra字符串参考—1.查找ASCII,
 
双击“(未注册)”这一行,来到主程序窗口,
 
从004086C6这一行往上观察,发现004086C4这一行跳转正好跳过“未注册”字样这一行,在004086C4这一行单击鼠标右键,选择汇编,将jnz改为jmp,

 
在汇编窗口单击鼠标右键,选择复制到可执行文件—所有修改,然后选择全部复制,然后单击鼠标右键,选择保存文件。
重启中国象棋V2.0,直接进入软件,且没有“未注册”字样。OK!现在就是正式用户了!

方法三:追踪注册码,制作内存注册机
根据前文分析,00430B67这一行是关键CALL,用OD载入中国象棋V2.0,Ctrl+G输入00430B67
 
点击确定,来到00430B67这一行,F2下断点,

 
F9运行软件,输入注册名和注册码,
 
点击“注册”,软件被OD断下来, F8单步,观察堆栈窗口,
 
正在进行真假码对照,复制"9eb9a33259ad034db8b0a8462dac9aee"字符串进行注册,注册成功。
下面制作内存注册机,见上面分析,软件被OD断在00430B67这一行,F7单步进入,F8单步走,来到0042F4A0这一行,观察寄存器窗口,
 
EAX寄存器中就是真的注册码,打开keymake注册机,选择其它—内存注册机,浏览选择中国象棋ChineseChess应用程序,点击添加,在是中断位置填写0042F4A0,中断次数位置填写1,第一字节位置填写FF,指令长度位置填写6,
 
选中“保存下列信息为注册码”,选中内存方式,寄存器方式选择EAX,然后点击添加,关闭添加窗口,点击生成按钮,
 
选择界面三,点击确定,保存注册机。运行内存注册机,注册码会自动出现,OK!
 

方法四:算法分析,写注册机
目前正在学习中,有点难度。

议题征集启动!看雪·第七届安全开发者峰会

上传的附件:
收藏
点赞1
打赏
分享
最新回复 (20)
雪    币: 2986
活跃值: 活跃值 (811)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
icoon 活跃值 2011-1-20 18:55
2
0
多花样爆炸,
算法看样子应该不难,MD5
雪    币: 27
活跃值: 活跃值 (43)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
邋遢鬼 活跃值 2011-1-20 23:33
3
0
顶上,对新人太有用了
雪    币: 270
活跃值: 活跃值 (45)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
黄瓜熟了 活跃值 1 2011-1-20 23:41
4
0
很好。。我也去下个破破玩去
雪    币: 138
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
haowolf 活跃值 2011-1-21 09:59
5
0
有LZ的方法 可以下回来自己练习了
雪    币: 33
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ilovehere 活跃值 2011-1-21 23:39
6
0
很好的范例,学习中
雪    币: 76
活跃值: 活跃值 (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
JohnH 活跃值 1 2011-1-22 07:36
7
0
文章很精彩,比我的技术强很多哦!
学习了!
雪    币: 6963
活跃值: 活跃值 (614)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
jimxy 活跃值 1 2011-2-3 01:51
8
0
不知什么样的帖子才给邀请吗?真想要一个!
雪    币: 1835
活跃值: 活跃值 (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
yingyue 活跃值 2011-2-3 12:45
9
0
哦,很强大哦 ,顶一下
雪    币: 20
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
流逝在夏 活跃值 2011-2-3 15:00
10
0
多功能爆破   ,
雪    币: 225
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wxhanshan 活跃值 2011-2-3 18:22
11
0
MoleBox Pro 2.6.5捆绑的强加密数据文件提取方法
雪    币: 6963
活跃值: 活跃值 (614)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
jimxy 活跃值 1 2011-2-13 00:52
12
0
申请邀请码!
雪    币: 502
活跃值: 活跃值 (35)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
BlueT 活跃值 2 2011-2-13 10:13
13
0
好像是变形的MD5。
雪    币: 0
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
李浩洋 活跃值 2011-2-13 14:06
14
0
不知什么样的帖子才给邀请吗?真想要一个!
雪    币: 78
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
libraces 活跃值 2011-2-14 19:12
15
0
对新人很有帮助,谢谢LZ!
雪    币: 6
活跃值: 活跃值 (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
西域小车 活跃值 2011-2-15 02:38
16
0
入门文章,对像我这样的新人很有帮助~!
雪    币: 31
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
寒欣 活跃值 2012-6-2 21:59
17
0
对我的学习很有用,谢谢你的分享。
雪    币: 47
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
受伤鸽子 活跃值 2012-6-2 22:16
18
0
灰常好,赞一个。
雪    币: 90
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
addeva 活跃值 2012-6-2 23:20
19
0
楼主辛苦,很好的文章!
雪    币: 274
活跃值: 活跃值 (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
陶睿 活跃值 2012-6-3 12:10
20
0
这个程序比较简单啊
雪    币: 1631
活跃值: 活跃值 (1228)
能力值: ( LV7,RANK:117 )
在线值:
发帖
回帖
粉丝
ttimasdf 活跃值 2 2012-6-3 14:37
21
0
对俺们新手很详细的参考!
哪天也弄一个试试
游客
登录 | 注册 方可回帖
返回