首页
社区
课程
招聘
[原创]lelfei的CRACKME算法不完全分析及其注册机
发表于: 2009-9-15 16:11 10191

[原创]lelfei的CRACKME算法不完全分析及其注册机

2009-9-15 16:11
10191

首先膜拜下ccfer,大多代码是根据给出的key才看懂的......
        具体算法分析因为能力有限,可能有些地方没有很仔细所以应该会有弄错的地方。
       
        相信一笔连线和吃豆子游戏大家应该都有玩过,大致整个算法的意思就是这种
        首先建立一个10*8的数组(棋盘),然后在上面的某些位置置1表示要经过的点,这个crackme建立的数组如下
       
       
        然后根据输入的用户名和注册码进行相应的变化,设结果为数组code1[], 变化的结果的作为方向,从数组(0,0)开始画出一条线

        规则是:读入一个方向,一直保持当前方向前进,只有在遇到有置1的位置,才读入下一个方向,清除1,继续,直到重复已经经过的位置或出界为止。

        注册成功的条件是:1、根据code1[]提供的方向,从(0,0)开始直到(9,7),不重复的穿过了所有的点;
                          2、剩下的code1[]的数据作为坐标指出了所有上面画的那条线未经过的所有点。
        其中的一个结果如图(貌似画的有点失败...):
       

        图中的叉就是所有未经过的点了

        下面是按照自己分析程序的过程写的,可能会有点乱。
        首先是一些结构体和定义

	#define DOWN	0	//方向
	#define RIGHT	1
	#define UP	2
	#define LEFT	3
struct recode{
		BYTE IsInLine;	//所画的线是否经过该点,0:未经过,1:置位点,2:已经经过的点
		BYTE IsCover;	//后面检验的时候用
		BYTE x;		//上面数组(棋盘)坐标
		BYTE y;		//上面数组(棋盘)坐标
		BYTE IsVertical;//经过此点是否是竖
		BYTE IsHorizontal;//经过此点是否是横
		BYTE Direction;	 //当前点选择的方向
		BYTE 0;
		DWORD next_pointer;//下个点的位置
	}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (20)
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
2
分析的不错,有些地方我也是只猜个结果,没有你分析的这么详细
比如求和63的地方,我填满它就满足了,没看具体怎么计算的
2009-9-15 16:19
0
雪    币: 224
活跃值: (15)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
3
真是一种境界呀!!!
2009-9-15 16:44
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
4
太强了 ,这个关当年我玩了3节生化课才玩出来

我记得好像是第20关
2009-9-15 17:12
0
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
5
这个分析很强大,基本上和我的思路一样了,呵呵

原来大家都玩过吃豆子的游戏啊,我是在去年才在一位同事的手机上第一次玩过,感觉很有意思,很想把这个游戏做成一个cm,所以把头像改成游戏的棋盘,想等什么时候有空再做,头像用作彩蛋也比较好玩,后来因为乱七八糟的事放下了,正好在这次比赛上用了,呵呵

这个cm实际上含有二个游戏,一个是吃豆子,游戏规则是不走重复路把所有豆子吃完,只有有豆子的格子才能停下来转弯。第二个游戏是划方格,游戏规则是二人轮流划方格的四条边,划方格第四条边的人赢得那个方格,并可以再划一次,最后赢得方格多的获胜。

我的cm里第一个游戏是完全按规则来的,第二个游戏要是按规则来的话注册码就太长了,我就把规则改成了按第一个游戏走的路径填充格子的边,注册码第二部分补充,要求补充完的格子边能够一次性赢得所有的格子。

改天我把源码发上来吧

另请教一下ccfer大师:你调试的时候猜出这二个游戏规则了吗?怎么猜出来的?分享一下思路吧
2009-9-15 17:15
0
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
6
海风兄记的没错,就是nokia某型号手机上一个游戏的第20关

海风兄没我强,我花了4节课时间通关了,呵呵
2009-9-15 17:19
0
雪    币: 461
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
肉肉鸡进来膜拜学习!
2009-9-15 17:33
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
8
Nokia 6681
游戏名:聪明的MIKE
2009-9-15 17:34
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
9
我只分析出了8*10的数组,就想到你的头像也是8*10的
就拿去对比一下,发现数据分布是相同的
我没玩过类似的游戏,第一个规则是分析出来了,然后用画图软件画了6次左右就画出了那个结果
第二个规则没分析,只是把空格填满就满足了,没管什么规则
2009-9-15 17:35
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
10
2009-9-15 17:40
0
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
11
没管规则也能过关?看来还是设计的太简单了,我原来的设想是人机对战,电脑按第一个游戏的路径下棋,并先检测能赢的格子,用户根据注册码应对,要求必须要电脑下完所有棋子后用户必须赢的超过32个。不过这样注册码长度要超过100了,太长了没什么意思,就放弃这个设计了。
2009-9-15 17:49
0
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
12
海风兄很强大,这种古董级的东西都能翻出来
2009-9-15 17:51
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
13
攻略里的那一条路线我感觉难,我想不出来
2009-9-15 17:52
0
雪    币: 232
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
膜拜了,太强悍了
2009-9-15 18:06
0
雪    币: 192
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
一觉醒来居然发觉加精置顶了,激动一下,
再打开贴发现众N人,再次被震精了下~~~
2009-9-15 19:38
0
雪    币: 433
活跃值: (1870)
能力值: ( LV17,RANK:1820 )
在线值:
发帖
回帖
粉丝
16
太强大了,只能膜拜了
2009-9-15 20:14
0
雪    币: 1969
活跃值: (46)
能力值: (RANK:550 )
在线值:
发帖
回帖
粉丝
17
向楼主及各位N学习
2009-9-15 22:39
0
雪    币: 167
活跃值: (1574)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
18
设计思路很不错 学习一下 ~~
2009-9-16 08:55
0
雪    币: 243
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
呵呵,有趣,学习了
2009-9-17 13:21
0
雪    币: 319
活跃值: (49)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
20
太强悍了,这样的算法你都能分析出来。。。。。。。。。。。。。。膜拜ing...........
2009-9-18 15:37
0
雪    币: 2637
活跃值: (2138)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
21
只能说事膜拜,太厉害咯
2009-9-18 21:13
0
游客
登录 | 注册 方可回帖
返回
//