初级玩家

- 贡献度
- 6
- 金元
- 847
- 积分
- 49
- 精华
- 0
- 注册时间
- 2011-7-4
|
本帖最后由 achere221 于 2011-9-13 22:15 编辑
1,我们先看看一个最简单的传统的单机游戏破解。就拿星际争霸1来说,当你进入游戏的时候,如果是盗版会提示让你输入序列号,好,就此打住,分析:我草,我把这个输入序列号的这步直接从程序里面去掉,不就可以玩了吗?答案是,yes!相当聪明。这样就破解了,当然一个游戏可能会有很多类似触发输入序列号的条件,把这些触发输入序列号的程序都通通砍掉,重新打包编译,到此这个游戏就基本上破解了。可能中间会很复杂,但大部分就是这个原理。
2,然后我们再来分析暗黑3的破解思路,暗黑3采用传统的类c/s架构,换句话说就是客户端和服务器端架构。再换句话说,采用的是现在网游的设计结构。
那么我们的破解思路在哪里,同学们会说,按上面的方法,不就是要key吗,我把暗黑3beta版输入提示激活码的程序砍掉不就可以了吗?答案是:对,但不完整,继续分析,当我们想进一切办法之后,总算可以不用输入key了,第二个问题又来了,就是校验,你想想,既然你连进去,战网肯定会校验你的相关文件,连进来一看,你tmd居然不是我的主,服务器直接拒绝了。那怎么办,想办法咯,伪造文件进行校验,找准服务器要校验哪些文件,这是个思路,不过可行性不大。那么还有什么办法呢,未完待续。。。。。
我来了,好多热心群众回帖,看来大家确实很关注,本贴是扫盲贴,只是一步一步去分析和探索过程,欢迎高手们拍砖
继续。
上面的方法不管是破解key也好,破解登录也好,能破,这个没问题,接下来的问题是数据交互,哪些数据是在本地哪些是必须通过和服务器交换数据才行
第一种:单机任务:所有的物品人物实体都在本地,这个没错,绝对正确,要不开发这么大的客户端干嘛,直接B/S得了。。,那么客户端和服务器端的数据是怎么交互的呢,简单一点,首先我们想到了任务和装备,好,就从这里开始说,不管是装备掉落,还是任务系统,都会有一个触发器,OK,当人物走到npc面前说话,或者走到特定场景,任务就激活了,为什么会激活,因为有个触发系统,暂且叫为触发器,。那么这个触发系统是由谁来管,或者说是由谁来操控?假定是由客户端本地来操控和触发,那么就不存在延迟,也就是说,你在玩单人战役游戏的时候,不管网络有多差,会很顺畅,因为触发命令都是由本地发出来的,不存在延迟。从beta实际情况来看,我们发现网络延迟非常影响游戏,延迟大就很卡,说明什么?说明即便是在单人任务下,至少有部分触发器是必须由战网直接发令过来,客户端收到后,再触发事件,包括攻击事件,行动事件等等,这样的话,我们想到了一个办法,sf...,对没错,就是自己架设战网服务器来做数据交互,怎样架?两个办法:1,盗取暴雪的战网2.0系统,难度不是没有,是相当大,除非有内鬼,否则基本上不可能发生。2,自己开发战网服务器,代价是你必须非常清楚客户端和服务器数据交互的来龙去脉,必须一清二除,这还只是前提,知道数据包交互的过程后,还需要进一步破解数据包交换的加密过程和解密过程,简单说来就是加解密算法和key(这里的key和betakey类似,但不是一个概念),什么是加解密算法和key,一个简单的例子,y=ax,这个函数大家都了解吧,其中的y可以看成是加密后的内容,x可以看成是加密前的内容,a就是key了,ax就是算法。如果加密前的内容是3,key是2,加密后的内容就成了6,不难理解吧,这只是最简单的对称加密算法,可以通过加密算法推演解密算法,x=y/a,也就是你知道加密后的内容,再除以a(key)就得到了加密前的内容,非对称的加密就不具例子了,不过一般来说会用对称加密算法来加密数据,非对称算法来加密密钥。说多了,再转回暗黑3,可想而知,自己搞服务器难度是有的,但不是说就一定不能搞,需要时间去研究算法。那么还有什么方法呢,未完待续,先睡觉。。。
继续来完了,
上面提到了暗黑三的各种破解思路,只是范范的讲,大体上基本上是确认用sf的技术了,还有没有其他可能呢,答案是有!
我们现在知道了所有或者大部分事件的触发都是由服务器下发的,这点基本上可以确认了,那么我们再来分析下触发器的模型,触发器总的来说有两种
第一种触发模型:客户端不知道模型,触发结果完全由服务器下发。比如,事件1,人物走到npc, 客户端产生触发消息(信号),下一步要做什么,客户端也不知道,把该信号发给服务器,服务器收到之后,回复你应该显示npc第几页第几页的内容,收到服务器返回结果,npc回应说话并显示内容,这个事件中,我们可以了解到,客户端只负责产生场景触发,只负责提交触发事件,该事件触发后,客户端需要做什么操作是完全不知道的,需要服务器端返回完整的命令,然后客户端再执行相应的内容。
第二种触发模型: 客户端知道触发事件之后下一步要做什么,只需要等待服务端回复是做还是不做。很好这个模型就可以专空子,很简单,举个例子,人物走到npc,客户端产生触发,客户端知道这个事件的结果就是显示npc的对话内容,但是客户端同样需要发个信息给服务端(汇报),说,老大,我马上要显示npc的对话内容了,你同意还是不同意。服务器只返回yes or no,在这个模型下的事件,我们就可以根据第一种方法去除程序内的相关汇报模块,重新编译即可。不需要私服,当然这只是个思路。
第三种触发模型:结合第一种触发和第二种触发。
未完待续中。。。。 |
评分
-
4
查看全部评分
-
|