第八章日常外挂制作(上)
“2016.5.6:客户端自动物品整理,低品质‘黑铁矿石’自动丢弃功能模块。”昨天忙活了一下午直到23点的刘飞,早上6点就起来了。洗漱完毕,便在便签本上写上了今天的任务,第一条“2016.5.5:客户端程序架构。”的任务刚好在昨晚23点寝室断网前测试通过,并且已将‘自动分解矿石’模块导入客户端程序框架里面了,而且使用没有问题。
记下了今天的任务以后,刘飞就出来寝室,直接慢跑一路到了工部体育场,也就是松园东路学生一食堂对面的松园体育馆后面。与往常一样只要不下雨,刘飞多数早晨锻炼时间都花在了这里,固定时间为6点到7点。慢跑快跑中速跑轮流着来,沿着跑道顺时针开始了今天的晨跑。
大多数人一般都在7点以后起来,这块区域就算是晨读的人,一般都会去东湖边上。所以这个时间,操场上不意外的会一个人也没有。刘飞长时间观察后才定下的这个晨跑时间,就连另外三个室友都不知道刘飞明天清晨起来运动了,毕竟刘飞老是带着一本英语材料出来,室友偶尔6点醒来发现,都以为刘飞出门读英语。其实刘飞高中的时候,英语估计最少就过了8级(夸张说法,刘飞也就大一上考了4级,大一下考了6级而已),日常听说可能差点,但是读写、词汇量那是不用说的,特别是计算机专业方面的英语词汇。
不知道跑了多少圈,刘飞手上的智能穿戴设备---手表振动了两下,刘飞知道7点到了,慢慢放缓脚步,抬起左手摸了一下手表亮起来了的屏幕下方,关闭了屏幕。
这时刘飞刚好在靠近水环境综合实验场这边的跑道上,刘飞顺着跑道慢走,准备转过前面半个弧线到达松园中路与运动场接口处,然后沿着松园中路去一食堂吃早餐。却不料从湖十二舍左侧的小路迎面跑来了一个身穿运动服的女孩,刘飞走在跑道弧线处时,女孩与他擦肩而过进入了跑道,开始逆时针沿着跑道跑了起来。
刘飞一愣,没有看错的话,这应该就是昨天那个女孩了。女孩及腰的黑发半中扎着披在背后。运动服很修身,包裹着女孩姣好的身躯,盈盈一握的腰与细长匀称的腿,让并没有太多肉的臀部显现十分丰腴,随着腿部的迈动,在空中划过迷人的曲线。看着女孩渐渐跑远了,刘飞摇摇头甩掉脑海中的旖念,沿着跑道弧线走到松园中路进足球场路口的地方,准备等一下这个女孩,毕竟昨天最后那一句‘不要在跟着我了’实在是误会了人家,萍水相逢,想想昨天的所作所为,实在冒昧,是应该说句对不起。
女孩速度比较快,刘飞还未走到路口处,她已经迎面而来了。左斜短刘海,瓜子脸白皙微红带着一点点婴儿肥,皮肤粉白细腻,樱桃小口微微翕张,晶莹粉嫩的耳朵带着一对浅绿色的耳机,胸部挺傲大小正好,随着女孩的跑动,与成V字形的耳机线一起轻轻颤动。
刘飞吞了一口口水,咬了一下舌尖镇定了下来。待到女孩离自己差不多只有3米远的时候,抬手招呼女孩,示意其停下了,却不料女孩只是稍微放慢了脚步,撇了他一眼,经过刘飞后又加快速度继续向前跑了过去,没办法刘飞只得朝女孩的背影喊了一句,“昨天的事情,对不起了,如果你想要的图片在网上找不到,可以加我的OO,357,3579,11!”看女孩没有反应,仍然跑着自己的,慢慢远去。刘飞也没有厚脸皮准备再等下去,沿着松园中路准备直接去食堂了。却不知道,这名叫林青茵的女孩在转过弯进达跑道直线以后,就一直微侧着脸盯着刘飞的背影,直到他转过体育馆墙角。
买了两个梅干菜包子与一杯豆浆,痛快爽利的吃喝完,收拾残余丢进了垃圾桶,也就悠闲的返回寝室了。
反手锁上了们,从床沿挂着的衣架上取下了长毛巾,拿到撑衣杆在洗漱间顶上取下一条四角内裤,将撑衣杆随手靠在了墙边,也就进了厕所。
热水时间是早上7点到9,中午11点到1点,晚上7点到10点。但是学校的自来热水一般最多也就45度,这还得没有人用先烧一会。
早上7点半这个点是大家刚起床的点,用热水的人比较多,所以水温也就那样,不过现在已经入夏了,只要水不是凉的,确是不担心着凉感冒。
洗完澡,穿好衣服,刘飞就照旧拿起放在对面书桌上的哑铃,只玩了三五分钟,然后放下哑铃在自己的电脑前坐定了。
因为《传奇永恒》游戏是在Windows系统中运行的,所以刘飞进入了黑屏命令界面,输入run-root-111111win7-32bit命令,回车就进入了一个win7系统之中(这个系统与开机选项中的win7是不一样的,是一个虚拟系统)。刘飞这台电脑之中有相当之多的‘系统’,Redhat、Fedora、Ubuntu、centos等等一系列新老版本的linux、Unix系统,还有Windows系列xp、win732/64、win832/64、win1032/64等等,当然也少不了Apple的MAC系统了,只是不常用而已。
但是刘飞这台机子确实只是一台双系统(开机时有两个系统启动项可以选择)的机器,第一启动项是刘飞自己写的FeeQueen系统,第二启动项是一个win732bit系统。以上提到的那么多系统,都只是挂载在FeeQueen系统中虚拟机里面。
计算机系的同学应该知道VMware这个虚拟机软件,而刘飞的FeeQueen系统,就是一个由虚拟机软件演化而来的,只是这个虚拟机软件有点特殊---本身也是一个操作系统而已,或者说FeeQueen系统自带虚拟机功能。
刘飞使用自己写的管道(数据传输通信协议),利用一些端口,将所有系统上面提到的一系列操作系统都连接到了FeeQueen上面,这些系统运时的所有外界数据都必须通过FeeQueen,因为刘飞关闭了这些系统所有常规通信端口,而使用自己的通信协议。所以这些系统可以称为有实体的虚拟机,也可以称为FeeQueen系统的‘应用程序’,刘飞的run-root-111111win7-32bit命令就相当于你用鼠标双击QQ快捷方式一样,运行了一个win7系统程序。
这个win7的32位系统里面就只安装了《传奇永恒》这一个游戏程序,再有就是自动分解矿石的插件,然后就是游戏运行需要的firmware.NET4.5、flash等一些插件什么的。其他win7自带的什么各种类似计算器、音乐播放器等等工具与应用程序,都被刘飞裁剪了,也就裸机(没有任何应用程序)。
这样游戏客户端运行时,刘飞就可以很方便的通过自定义的管道监控所有游戏客户端与游戏服务器之间数据传递,虽然这些数据包都有加密,但是解析这些数据包对呀刘飞来说根本就是小菜一碟。
刘飞指挥这游戏人物来到矿洞,找了一个小角落开始挖矿。切回FeeQueen系统打开了抓包工具,监控着所有这个win7系统与FeeQueen系统连接的管道。然后又切回win7,刘飞点开游戏人物背包就这样看着,手上拿着笔,每当游戏人物挖到‘黑铁矿石’的时候刘飞就记一下时间与矿石的品质。
直到半个小时以后20格空背包装满了(物品一个占一格),刘飞回到桌面运行了自动分解矿石的插件,然后切回游戏界面,按了一下ALT+F1,游戏界面里的鼠标图标自动移动到背包右上角的“整理”按钮上,然后点击了一下,随后背包里的物品按照“红药-蓝药-武器-材料-矿石”规律排列整齐了。
这时鼠标从背包第一格开始,一格一格往后面数着,直到找到了“开石刀”这把像匕首一样的工具,自动单击右键,然后点击‘装备’按钮。
然后变成小匕首的鼠标继续一格一格往后移动,直到找到‘铜矿石’,鼠标自动单击左键,因为系统没有类似“您确认要分解这块矿石吗?”这样的弹出提示,所以鼠标也就直接移动到下一格,一直这样切到背包最后一格,将所有能分解的矿石全部分解,为啥鼠标会‘认识’物品,后面在提。
因为‘黑铁矿石’无法分解,所以就会一直在背包里,二背包如果满了,那肯定就没办法在挖到矿石,这个就不用说明了。刘飞半个小时挖到了4块‘黑铁矿’,品质是4、7、8、16。因为低品质的黑铁矿除了卖给系统商店能换几百金币,对呀玩家来说品质低于15是没有什么价值的,所以刘飞接下来的任务就是写一个功能插件,要自动将品质为4、7、8的三块黑铁矿丢掉。
按照刘飞的逻辑,想丢掉品质为4、7、8的三块黑铁矿,那他写的程序就必须‘认得’黑铁矿的品质,这就是为什么刘飞要开数据包监控的原因了。如果要问刘飞为什么不通过贴图来识别黑铁矿,玩过《传奇永恒》的都会知道所有黑铁矿在背包里的贴图都是一样的!下标虽然有一个小数字标识,但是通过‘图片识别’似乎有点麻烦,所以刘飞就打算直接读数据了。
刘飞对应着自己记下的时间,在数据包解析报表里慢慢寻找。虽然只是半个小时的游戏数据,但是总计的体量还是相当大的,而且数据条目都是一毫秒来计时的,经过解析程序自动过滤后,也还有上万条,毕竟每一毫秒都有几条或十几条数据。
经过半个多小时的的对比,刘飞找到了记录挖到黑铁矿石时,游戏客户端返回游戏服务器的矿石属性数据。记录了这四条数据的‘特征码’与矿石品质记录数据点以后,刘飞就直接回到了FeeQueen系统界面,开始敲代码。
有了‘特征码’,刘飞直接在自己的代码库里找到了自己的“解析程序”与“数据包监控器”的源代码,大肆精简,然后将两者结合起来,然后修改监控规则为“截获带有‘特征码’的数据包”,然后解析程序就会解析这些截获的数据包,从中找到记录黑铁矿石的品质数据,并判断品质是否大于等于15,否的话就返回1。这样“黑铁矿品质识别器”就写好了,随后刘飞又写了一个计数器,“黑铁矿品质识别器”没返回一个1,计数器就累加1。
最后就差一个鼠标控制脚本了,之所以能用鼠标脚本,有一个很大的原因,《传奇永恒》游戏全屏显示后,打开背包,背包会固定展开在屏幕上的中间位置。但是鼠标脚本怎么判断鼠标光标位置呢?
一般我们都是以屏幕左上角横竖边交点为原点(0,0),屏幕上边为X轴,左边为Y轴,这样屏幕上的每一个像素点的位置就都能确定了。比如,你的电脑显示器屏幕分辨率为1920p*1080p,那么你的屏幕显示时间的右下角最里面的那个像素点的坐标就是(1920,1080)。同理,箭头鼠标图标的箭头尖尖上的那个像素点就是鼠标的位置坐标了。(未完待续)