数值有时候并不是就是游戏里可以看到的数值,我在《大航海家三》里面试图修改仓库里物品的数量的时候,第一次搜索找到了好多个地址,第二次发现一个地址也没有了,一直就无法确定存放物品数量的内存地址在哪里,后来我发现,其实游戏里看到的数值和实际存放的地址之间刚好差了X倍。另外,我还学会了模糊搜索,就是第一次在内存里搜索出游戏的所有数值,接着按照数值的变大,变小还是不变来继续搜索,这种办法适用于游戏中一些属性只是一个类似于血之类的东西而没有标出实际数据的情况。
在用游侠五修改《大航海家三》的时候,我找到了商船的水手人数的地址,我把船开到海上,一艘载着50多人的海盗船欺负我商船上只有3名水手,就直接开过来要和我的商船来甲板战,肉搏战,想夺取我的商船,结果两只船刚刚靠在一起,开始战斗的时候,我把我的商船上的人数改成了9999,而且是锁定的,这下电脑的海盗船赶紧开溜,但是只有50多人开的海盗船的速度怎么比得上我9999人驾驶的商船的速度(游戏的年代里面的船还是那种靠人力的帆船),马上就被我追上,开始甲板战,很快对方50多个海盗全部被消灭,我夺取了海盗船,把船开回母港之后,想重新出海,电脑却提示说:超载,无法开动。原来是9999个水手太多,超过船的负荷,我只好把水手改回3个,心里却有一个疑问:当初我夺取海盗船的时候,还不是9999个水手的船从照样海上开回来了,现在怎么不行了呢?我想,这就是游戏的一个BUG。
在对很多单机游戏程序进行研究之后,我积累了很多修改游戏程序的经验,其中静态修改游戏存档文件和其他文件也尝试过。后来,我产生了一个想法:既然单机游戏可以修改,那网络游戏是不是也可以修改?我马上用迅雷到网上下载了一个网络游戏客户端,注册了一个帐号,进去游戏之后,照猫画虎的改了一下一些数值,发现游戏里面的数值根本没变。
我明白了,原来单机游戏的数值全部储存在本地的电脑上,而网络游戏是服务器和客户端之间的交互,一些重要的数值,比如金钱,经验等是存储在服务器端的,客户端更多的时候只是显示出服务器端的数据。
是不是网络游戏都不能修改呢?我去图书馆查了一些相关资料,发现网络游戏也是可以改的,只不过不像单机游戏那样非常容易改,专门修改网络游戏的程序,我们通常都叫做外挂。最常见的有两种:一种是木马式外挂,这是专门盗取游戏帐号的,这不是我感兴趣的,另一种是封包式外挂,封包,是客户端与服务器端交换游戏数据的一个通信数据包,客户端发送给服务器的,多是游戏者对游戏的操作等,而服务器端则负责对客户端提交的各种操作进行处理,最后把处理后的结果发送回客户端。我们比较容易做的,就是截取客户端与服务器之间通信的封包,对其进行分析,最后实现修改的目的。
为了制作自己的封包截取工具,我开始研究HTTP通信机制以及网络编程。随着学习的深入,我发现我不懂的东西越来越多。一转眼,一个多月已经过去了。
书包 网 。 想看书来
象牙塔神话(三十)
在制作我的外挂过程中,我的一些难点主要有Windows*API调用与钩子函数,网游封包加密技术,反汇编技术等,等我学得足够多最后作出我的第一个外挂之后,整整4个月的业余时间已经全部花在上面了。
看着自己开发的外挂,我心里多少有点成就感,同时也感叹编程路上的每一个前进的脚步,都是那么艰难。
兴冲冲的进入网络游戏,启动外挂,我欣喜的看到我的那个游戏角色在那里自动练级,自动加血,自动叫卖。。。。。。我开着外挂挂着游戏,发现除了练级速度比手工慢之外,简直是完美!
这时我的QQ显示有人找我,我进去一看,是一个在游戏里认识的朋友东方不胜,他劈头就给我一句话:
“你今天有病啊?”
我丈二金刚摸不到头脑。
“怎么成了个练级机器人了啊,我怎么叫你你都不回答,才隔那么几天不见,就不认识我了吗?”对方气冲冲的说。
我说:“原来是这样啊,我还以为是什么呢?实话跟你说了吧,里面的那个角色的确不是我,当然不认识你。”
“啊?你被盗号了,还是请人代练了啊?”东方不胜问道。
“算请人代练吧,不过呢,是免费代练的。”我故意卖了个关子。
“不可能吧,有这等好事?”东方不胜不太相信。
“不信就拉倒。”我就故意不理他,看电影去了。
大概过了5分种吧,东方不胜终于忍不住了,再次在QQ里说:“跟你认识这么久了,好兄弟,你就告诉我,到底这是怎么一回事啊?”
“嘿嘿。”我说:“这是我开发的第一个网络游戏外挂,可以实现自动练级,自动加血,自动PK,自动叫卖。。。。。。”
“啊??????!!!!!!”对方给我打过来这个,虽然看不见对方,我却在隔着电脑猜想对方张的大大的O型嘴巴。
“外挂,外挂是什么啊?”
我耐着性子给对方讲了好久,对方才明白,这位老兄的领悟力实在不刚恭维。
“你自己开发的?”对方有点不信。
“当然。”我说。
“这么好的东西,就给老兄我共享一下嘛。”对方恳求我说。
我却犯难了,这可是我4个月的心血,轻易给他,心里实在无法接受。
我沉默了。
“怎么不说话了,都这么熟了,借我玩玩不行吗?”对方穷追猛打:“就一会儿,行不?”
我想了想说:“你说就一会儿是吧,好吧,我下午给你。”
“为什么还要下午给我呢?现在不是更好吗?”对方有点无法理解。
嘿嘿,这个就不能让你理解了,我想到这,就随便说:“现在要出去,没空,下午再说。”
对方见我已经答应,似乎也不在意再多等几个小时。
我当然不是要出去,我一直在电脑面前,给我的外挂加工,首先,去掉了一些最高级的功能,其次,做成注册版(防止被大规模传播),第三,这里就暂时不说了。
下午我一上Q(其实只是把隐身状态切换到在线),对方就急不可耐的发消息过来:“怎么这么久才上,我都等了2个小时了。”
“先等等,你知道怎么用吗?”我说。
“你教我吧,大哥。”
“首先,你先点击主程序,会有一个注册界面,你把你的机器码发给我,我再把注册码发给你。”
“这么麻烦啊?”
“不要算了。”我心想,这个保护版权的措施是首要的,没有这个,其他的什么都免谈。
“好吧。你先传给我。”对方催促道。
我用QQ传给他,压缩后也就1M多,很快就传完了。
“机器码是******”对方QQ里说。
我把它复制下来,放在我自己制作的算号器里面,很快,注册码出来了(我自己做的注册功能当然知道注册密钥和算法)。
“注册码是****************……”我拷贝过去,一下子把QQ聊天的整个页面给占满了。
“哇。”对方说:“太恐怖的注册码了,里面有汉字,英文字母,数字,字符,还有日文,韩文。。。。。。”
我心想,中国是世界第一“破解”大国,我不弄得复杂点,避免碰上一个专业搞“破解”的,一下子把我的劳动成果给抢走了。
“好了,提示注册成功。那,下一步怎么用呢?”
“首先我要声明一下,这个外挂的注册功能是和你的硬件绑定的,你不要想把它传播给其他人,也就是说,没有我的注册码,它拷贝到其它机器上是不能运行的。”
“啊……”对方说。
“下面你开启QQ的远程协助功能,我先演示一下给你看。”我说。
对方答应了,我就借助QQ的远程协助,在对方的那部电脑上,演示了一下外挂的使用方法。
我刚刚演示完,对方就关掉了远程协助,说:“谢了,哈哈哈,我去试验了,88!!”
我心想:你小子过河拆桥啊。我还没说出来,就见对方的QQ下线了(可能是隐身),我再怎么叫对方都不回了。
看来,网络上最重要的就是防欺骗。不过呢,这点小伎俩我早就想到了。
象牙塔神话(三十一)
今天我急着赶作业,所以也就没上网,外挂的事情就暂时忘了。
忙碌的一天终于结束了,我又迎来了一个稍微空闲的一天。
一大早,我就想登陆那个网络游戏,想继续测试一下我的外挂,以便于完善功能。
谁知道系统提示说:“尊敬的玩家您好,服务器正在维护中,等服务器维护完毕,我们会在官方网站第一时间通知你们。谢谢您对我们游戏一如继往的支持!”
我心想:不对啊,这家网络游戏的服务器每周都有固定的维护时间,但是今天还是第一次啊,如果是例行维护,维护完毕的时间也是固定的,怎么会连维护完毕的时间也要另行通知呢。这其中有原因。
我登陆官方网站一看,也有这个通知,也是说临时维护,维护完毕的时间也是说无法估计,好了之后会另行通知。我正在纳闷的当儿,QQ响了,是昨天那个过河拆桥和我耍手段的东方不胜。
“老大,你太强了。”这小子一上来就说恭维话,看来又想打什么坏主意了。
“你昨天怎么闷声不响地拿了东西就走人,你的良心大大的坏了!”我说。
“老大,昨天是我不对。你的外挂太强了,我尝试过所有的功能,实在是牛!”这小子还是不着边际的说。
我想:瞧你那副德性,说供维话可不是随便乱说的。估计又碰到什么问题有求于我了。
“我昨天尝试过你的那个刷屏功能,实在太强了,你猜怎么着,我每秒1000次的刷屏,一刷,就掉线了。”
听这话,我知道这小子终于打开天窗说亮话了。
“后来我才知道,其他人也在同时掉线了。最后知道,不是几个人掉线,是整个服务器当机了。”
“后来服务器又好了,我再刷一次屏,结果服务器又当机了,乖乖,直到现在为止,服务器还在维护中呢。‘东方不胜继续说:‘你这个功能实在是好,只是我试过两次之后,发现这个功能的按钮变灰了,后来我发现整个外挂都自己删除掉了。你说,这是怎么回事?”
现在该我说话了,我说:“我就怕你这小子耍小聪明,所以事先防了你一手,你拿了东西就走人我不怕,我那个东西早就设计好了你只能用几下,特别是那个让服务器当机的功能设计了只能用两次。”
“所以外挂自己把自己删除掉了也是我事先设计好的。”我补充说。
“啊,怎么可以这样啊,这样,是不是有点不够朋友啊?”东方不胜说。
“我不够朋友?你才不够朋友呢!”我说:“你再这样乱搞下去,迟早会把我送到局子里面喝茶的!”
“那,你把那个功能去掉,把其他的功能保留,在发给我一次,好不好,求你了!”这小子倒还脸皮厚的:“我,还想自动练级呢!我想带我的大号练,小号自动练级,我家里有两部电脑。”
我心想:你的白