首页
社区
课程
招聘
TimeBell破解小记(入门级)
发表于: 2013-12-23 00:10 22333

TimeBell破解小记(入门级)

2013-12-23 00:10
22333

从来没有发过破文,就从国外论坛找了一个入门级的小工具来分析,以后会逐步提高难度...,大牛可以飘过...,只是为了引导新童鞋入门...
软件下载是从国外共享软件网站d40N6%4N6%4i4K6u0W2j5$3&6W2N6q4)9J5k6h3y4G2L8b7`.`.找到的,学习破解的新童鞋可能从该网站找软件来分析,待破解的小工具就是下面红框框中的

软件基本样子如下:


破解步骤:
1.首先第一步PEID查看

发现居然是汇编写的,而且是无壳...,(*^__^*) 嘻嘻……,相当地适合新人练手哇...当然也有可能PEID检测出来的结果是不正确的,合适的做法是根据程序的入门点特征来判断
是什么语言的编写以及加了何种壳...

2.初探软件注册机制
一般位于关于或者帮助菜单项会有注册的选项,这个软件就是如此.

单击注册按钮来到注册对话框

随便输入一个错误的注册码,看看错误提示是什么...

可以看到是一个消息框,学过win32汇编的童鞋很自然的可以想到是调用了MessageBoxA或者MessageBoxW之类的API函数来弹出这个消息框滴...
一般我们有几种方式可以定位到注册码验证代码附近
1.对于纯SDK程序,我们可以直接下断MessageBoxA和MessageBoxW之类的函数,这个程序就是如此...
2.同样针对于纯SDK程序,可以使用OD搜索字符串,看看能否定位到错误提示字符串,如果可能,那么就万事大吉了,不过,通常这种方式很难奏效,因为软件开发者都学聪明了,
比如现在很多单机游戏里面字符串就是放着加密资源里面,需要使用的时候在从资源里面解密出来,如此使用OD搜索字符串就不能奏效了.
3.针对于MFC等框架程序,你可以编写一个MFC SPY之类的辅助工具来快速定位按钮事件的入口地址,防止陷入到C++框架程序的浩瀚的消息路由里面去了.
4.这对于Delphi程序,可以使用DEDE这款工具来解析按钮事件地址
5.VB以及.net程序可以使用相应的辅助工具来加速定位关键代码

这里因为软件是用win32汇编写的,那么直接在MessageBoxA和MessageBoxW的入口处下断

重新运行软件输入错误的注册码,然后F9跑起来,会断在MessageBoxA处,这个时候可以把你的注意力转到堆栈窗口里面,堆栈里面会显示MessageBoxA的各个参数此时
的值是什么,如果不出意外的话,会是之前弹出的消息框提示那个错误信息


右键单击上图中的13FB28这个地址,选择弹出菜单里面的反汇编窗口中跟随

这个时候反汇编窗口就会定位到调用MessageBoxA指令的下一条语句.

可以看到上面不远处有提示注册成功的提示信息

说明已经在注册码验证的关键位置附近了

这个时候即可以使用OD的动态分析注册验证算法,也可以使用IDA来一览注册算法的全貌...
这里我就直接用IDA来静态分析了

大致浏览一下这个函数的头部你就会发现这个一个消息响应函数... 注册按钮的消息响应也在其中...
这里会惊奇的发现作者居然使用明文注册码,连加密算法都没有,这个老外也忒厚道了吧
简单注释如下


3.验证注册码是否正确
在注册框输入14DC747GL,看看效果

单击OK,提示注册成功,重启之后,查看已经注册了.


总结:
这是第一次写破文,就搞个最简单的吧,以后会常到cnet上面去找软件来写破文的,会包括算法分析以及注册机的编写,难度会逐步提高,望和童鞋们共同进步...


[培训]科锐逆向工程师培训第53期2025年7月8日开班!

上传的附件:
收藏
免费 5
支持
分享
最新回复 (42)
雪    币: 10
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
坐沙发...
2013-12-23 00:42
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
太神奇了。。
2013-12-23 09:23
0
雪    币: 41
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
适合入门的小case啊,标记一下学习了
2013-12-23 21:15
0
雪    币: 645
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
文章写的相当浅显易懂 很适新手 支持下楼主
2013-12-23 21:52
0
雪    币: 2673
活跃值: (3560)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
6
浅显易懂是一个好习惯...
2013-12-23 23:04
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我是来吐槽这个软件作者的,这种验证注册方式,我想知道,他软件到底卖了多少钱?
2013-12-23 23:15
0
雪    币: 2673
活跃值: (3560)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
8
O(∩_∩)O哈哈哈~
2013-12-23 23:18
0
雪    币: 272
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
不错的Case,学习!
2013-12-24 21:08
0
雪    币: 41
活跃值: (159)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
请问楼主这个软件只有一个注册码吗?
2013-12-25 10:58
0
雪    币: 2673
活跃值: (3560)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
11
恩,这个注册机制很简单...
2013-12-25 12:14
0
雪    币: 41
活跃值: (159)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
12
我还有一个问题想请教楼主:
SendDlgItemMessageA这个函数楼主在IDA给出的注释是“获取用户输入的用户名,保存到全局数组g_szRegCode[]当中“,但MSDN上说”Sends a message to the specified control in a dialog box.“”把一个消息发送给指定的对话框中的控件“,这个地方我不太明白。
2013-12-25 12:46
0
雪    币: 2673
活跃值: (3560)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
13
对,SendDlgItemMessage是给指定控件发消息,这里他发的消息是获取编辑框中的字符串... 最后的一个参数传入的是一个全局数组的首地址... 你可以OD断在这个函数,看它的参数情况.单步步过这个函数,你会发现这个全局地址已经保存了你输入的用户名...
2013-12-25 12:56
0
雪    币: 135
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
写得不错,现在这样的软件还能找到,哈哈。
2013-12-25 13:28
0
雪    币: 350
活跃值: (27)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
写的蛮详细的,适合像我这种初学者,感谢楼主的分享!
2013-12-25 13:42
0
雪    币: 41
活跃值: (159)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
16
我明白了,感谢楼主。厚着脸皮再问一个问题:

将正确的注册码输入后,每次打开软件,Help—>Enter Registration code ,就会直接弹出注册成功的提示框。但是,我在这一行爆破后:

00411B43     /75 64         jnz     short 00411BA9

关闭软件重新打开,又提示我注册(虽然直接按ok就又注册成功了)。

是不是和这些函数有关:
lstrcpyA
lstrcatA
WritePrivateProfileStringA

似乎向rg.tb这个文件里写东西了?
可是我爆破后修改的可执行文件和原来的可执行文件是放在同一个目录下的。
楼主能否帮我解惑一下
2013-12-25 17:07
0
雪    币: 2673
活跃值: (3560)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
17
写配置文件或者注册表然后重启之后一开始就会验证,这是重启验证的基本方式
2013-12-25 17:10
0
雪    币: 206
活跃值: (85)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
有收获,实践一下,谢谢!
2013-12-25 17:31
0
雪    币: 90
活跃值: (92)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
19
哈哈,现在还有这样的软件,看来看雪的兄弟们还不够努力啊。
2013-12-26 11:03
0
雪    币: 90
活跃值: (92)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
20
再来吐槽一下这个软件,软件有个password功能,设置了每次启动需要密码才能打开,od一看,竟然也是用的lstrcmpA直接明文比较,作者真的是完全看不起玩crack的么。。。
2013-12-26 11:25
0
雪    币: 2673
活跃值: (3560)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
21
呵呵,老外貌似还真不太看得起破解滴
2013-12-26 12:25
0
雪    币: 91
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
在国外,搞破解是很严重的犯罪
2013-12-26 18:52
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
真的是简单易懂
2013-12-27 00:00
0
雪    币: 159
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
适合初学者的东西。
2013-12-27 01:56
0
雪    币: 12
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
mark一下,适合新手的教程
2013-12-27 10:14
0
游客
登录 | 注册 方可回帖
返回