当天晚上,李磊一夜没睡。
林谦半夜醒来的时候,看到上铺的床帘里还透出屏幕的蓝光,键盘声被刻意压得很轻,但在安静的宿舍里依然清晰可辨。他没出声,翻了个身继续睡。
第二天早上六点半,宿舍的喇叭准时炸响。
王浩从上铺探出半张脸,骂了一句,又把脑袋缩回被子里。张鹏直接把枕头盖在头上。李磊的床铺已经空了。
林谦坐起来,看到李磊坐在书桌前,眼睛盯着屏幕,手指在键盘上缓慢地敲着什么。桌角放着一杯凉透的白开水。
“搞定了?”林谦问。
李磊转过头。眼睛里有血丝,但神情很兴奋。
“搞定了。夜鹰的加密层不是异或,是一套自创的压缩算法,先把数据压缩再加密。我一开始方向错了,卡了三个多小时。后来按你说的思路——不管中间怎么处理,看它的输入和输出——一下子就通了。”
“协议全部逆向完了?”
“完了。通信格式、加密方式、数据包结构,全部整理出来了。”李磊把一个文档打开,“你看。”
林谦走过去,快速扫了一遍文档。
李磊整理得很详细。不只是逆向出了协议格式,还把夜鹰外挂的模块结构、功能逻辑、反检测机制全部拆解了一遍,做成了一个完整的分析报告。格式清晰,逻辑清楚,关键节点都标注了注释。
“做得不错。”林谦说。
李磊愣了一下:“真的?”
“真的。一个晚上能做到这个程度,超出了我的预期。”
李磊没说话,但嘴角压不住地往上翘。
王浩从上铺探出头,揉着眼睛:“你们俩起这么早?”他看了一眼李磊的屏幕,愣住了,“李磊你一夜没睡?”
“嗯。”
“牛。”王浩竖起大拇指,然后又缩回被子里,“我再睡十分钟。”
林谦在李磊旁边坐下,打开自己的笔记本电脑。
“夜鹰的协议分析完了,接下来是写悟空的核心框架。你跟着我一起写,我写一步,你写一步。”
李磊立刻坐直了。
“第一层,网络通信层。负责拦截和转发游戏客户端与服务器之间的数据包。”林谦新建了一个文件,开始敲代码。
键盘声密集而清脆。
李磊盯着屏幕,眼睛一眨不眨。林谦每写完一个函数,就停下来解释一遍——这个函数的作用是什么,为什么要这样设计,有哪些需要注意的细节。李磊一边听一边记,偶尔问一两个问题。
四十分钟后,网络通信层写完。
“第二层,数据解析层。负责把拦截到的数据包按照协议格式拆解成可读的字段。”林谦又新建了一个文件。
这一次他的速度明显加快了。手指在键盘上几乎没有停顿,代码像水一样从指尖流出来。李磊跟得有些吃力,但没有叫停,咬着牙往下看。
一个小时后,数据解析层写完。
“第三层,功能逻辑层。负责实现具体的功能——自动打怪、自动喝水、自动捡取。”林谦新建了第三个文件,“这一层最复杂,因为每一个功能都要模拟真人的作习惯。”
他停下来,看着李磊。
“自动打怪的核心是什么?”
李磊想了想:“找到怪物,攻击它,打死之后捡东西。”
“太粗糙了。”林谦说,“真正的自动打怪,要考虑十几个细节。怎么选择目标怪物——优先打血量低的还是经验高的?攻击技能的释放顺序——先放哪个技能后放哪个技能,怎么最大化输出?血量管理——自己的血量低于多少要回血?怪物的血量低于多少可以斩?蓝量管理——蓝不够了是吃药还是切换低耗蓝模式?意外情况处理——怪物被其他玩家抢了怎么办?自己被打断了怎么办?附近有敌对阵营玩家怎么办?”
李磊的笔停住了。
“这么多?”
“这些只是基础。高级的自动打怪还要考虑地形利用——站在哪个位置可以卡怪物的视野,让它打不到你。技能组合优化——不同天赋下的最优技能循环。多目标战斗——同时打两到三只怪的时候怎么走位、怎么拉怪、怎么AOE。”
李磊沉默了几秒。
“这些……你全都打算写进去?”
“第一个版本只写最核心的。后面的功能逐步迭代。”林谦把手指放回键盘上,“但架构上要预留扩展空间。不能写到后面发现架构撑不住,推倒重来。”
“这就是你说的模块化?”
“对。每一个功能模块都是独立的,可以单独开关、单独升级、单独替换。暴雪更新了某个功能点,只改对应的模块就行,不影响其他部分。”
林谦开始写第三层的代码。
这一次他没有边写边讲,而是让李磊自己看。李磊搬着椅子凑到屏幕前,眼睛跟着光标移动。有些地方能看懂,有些地方看不懂,他就先把看不懂的地方记下来,等林谦写完再问。
两个小时过去。
王浩和张鹏陆续起床。王浩刷完牙回来,凑到林谦身后看了一眼屏幕,然后默默走开了。张鹏也凑过来看了一眼,跟王浩交换了一个眼神,两个人同时摇了摇头。
“完全看不懂。”王浩小声说。
“我也看不懂。”张鹏同样小声。
“咱们俩是不是太废物了?”
“好像是的。”
两个人对视一眼,然后各自打开电脑,开始自己的活。王浩打开QQ群,开始整理今天的用户反馈。张鹏打开淘宝和论坛,开始铺渠道。
宿舍里形成了诡异的分工——林谦和李磊在写代码,王浩和张鹏在搞运营。四个人各忙各的,偶尔有人说话也是工作相关。
中午十二点,林谦停下了手。
“第三层核心框架写完了。休息一下,下午继续。”
李磊长长地呼出一口气,靠在椅背上。他的笔记本上密密麻麻记了七八页,全是上午的要点和问题。
王浩立刻端着泡面凑过来:“谦哥谦哥,我这边有个情况。”
“说。”
“夜鹰群今天炸了。夜鹰发完停更公告之后就再也没出现过,退款的事也没人处理。群里好多人骂他卷钱跑路,还有人说要报警。”
“退款处理了吗?”
“有一部分人申请了,但夜鹰没回应。群里两个管理员也不说话。”
林谦想了想。
“你用小号在群里发一条消息,就说夜鹰停更之后,有一款叫悟空辅助的外挂三天后上线,功能和夜鹰差不多,价格更便宜。不要直接发广告,用‘我听说’的语气。”
王浩眼睛亮了:“明白。假装是路人透露消息,不暴露身份。”
“对。”
“那我马上去发。”
王浩端着泡面回到电脑前,开始打字。
张鹏也凑过来汇报:“谦哥,淘宝店已经注册好了,店铺名叫‘悟空科技’。QQ群建了三个,论坛账号注册了五个。就等你一声令下,全部铺开。”
“先不要全部铺开。”林谦说,“上线前一天晚上再公布QQ群号。太早公布,群里的热度维持不住,反而显得冷清。”
“有道理。”张鹏记了下来。
下午一点,林谦和李磊继续写代码。
第四层是反检测层。这一层的代码量不大,但逻辑最复杂。要让外挂的行为看起来像真人,需要模拟大量的随机变量——作间隔、鼠标移动轨迹、技能释放顺序、移动路径选择。每一个变量都要设定合理的随机范围和分布规律。
林谦写了三个小时的代码,反复调整随机算法的参数。
李磊在旁边看着,忽然问了一句:“谦哥,你这些参数是怎么确定的?”
“经验。”
“什么经验?”
“我自己打游戏的作习惯。”林谦说,“我昨天让王浩录了一段他手动打怪的视频,分析了他的作频率、技能释放习惯、鼠标移动轨迹。然后把这些数据作为基准,加上随机扰动。”
李磊愣住了:“你什么时候让他录的?”
“昨天下午,他去网吧打战场的时候。我让他顺便录了二十分钟的打怪视频。”
李磊转头看向王浩。
王浩正戴着耳机在群里聊天,浑然不觉自己昨天被当了样本。
“所以这个反检测的逻辑,其实是模拟王浩的作习惯?”
“对。每个人的作习惯不一样,但有一些共同特征——作间隔不是精确的,技能释放顺序不是固定的,鼠标移动轨迹不是直线。只要把这些共同特征模拟出来,暴雪的反作弊系统就很难分辨。”
李磊沉默了一会儿。
“谦哥,这些东西……Ghost也教过你吗?”
林谦的手指在键盘上停了一下。
Ghost。这个名字已经成了李磊追问的固定句式——遇到超出理解范围的东西,他就下意识地问“是不是Ghost教的”。
“不是。”林谦说,“这是我自己琢磨的。”
李磊哦了一声,没再问。但眼神里的敬佩又多了一层。
下午六点,第四层写完。
林谦把四个模块整合到一起,运行了第一版完整代码。
屏幕上弹出一个命令行窗口,开始刷出一行行志。
连接游戏客户端……成功。
拦截数据包……正常。
解析通信协议……正常。
功能模块加载……自动打怪已加载、自动喝水已加载、自动捡取已加载。
反检测模块……运行中。
林谦盯着志看了三十秒,然后打开魔兽世界客户端,登录王浩的账号,启动悟空辅助。
角色自动开始打怪。
火球术、寒冰箭、奥术飞弹——技能释放的节奏和真人几乎没有区别。打完一只,自动移动到下一只的位置,捡取掉落,然后继续打。血量低了自动喝水,蓝量低了自动回蓝。
整个过程流畅得像一个熟练玩家在作。
王浩不知什么时候已经站在林谦身后,嘴巴张得老大。
“这是悟空?”
“嗯。”
“你昨天才开始写的?”
“对。”
王浩不说话了。他看着屏幕上那个自动战斗的亡灵法师,眼神从震惊变成了狂喜。
“这比夜鹰流畅多了!夜鹰打怪的时候经常卡技能,打完一只会在原地发呆好几秒。悟空完全不会!”
张鹏也凑过来,看了一会儿,问了句:“封号率呢?”
“反检测模块刚写完,需要测试验证。”林谦关掉游戏客户端,“今天晚上开始挂机测试,连续挂七十二小时。如果三天之内不封号,说明反检测有效。”
“如果封了呢?”
“那就分析封号原因,调整参数,继续测。测到不封为止。”
张鹏咽了口唾沫:“那要是测了好几次都封,咱们的账号不就全没了吗?”
林谦看着他。
“所以要准备足够多的测试账号。王浩,你那个朋友老周,手里有多少个账号?”
“二三十个吧。”
“全部借过来。封一个换一个,测到稳定为止。”
“好。”
林谦把悟空的代码保存好,合上笔记本电脑。
“今天的进度完成了。李磊,今晚你休息,不用熬夜。王浩,群里继续预热。张鹏,渠道准备好,随时待命。”
三个人同时应声。
王浩忽然问:“谦哥,你说三天之后悟空上线,能卖多少?”
“不知道。”
“你猜一个呗。”
林谦想了想。
“第一个月,月销破千单。”
王浩倒吸一口气。
“一千单?一单二十块,那不就是两万块?”
“嗯。”
“两万块……”王浩掰着手指头算,“咱们四个人分,一人五千?”
“第一个月不分。”林谦说,“收入全部投入进去。”
“投入什么?”
“服务器、带宽、推广、账号储备、应急赔付。外挂是灰色地带的生意,随时可能出意外。手里没有足够的现金流,一遇到突况就会。”
王浩点了点头。
张鹏又问:“那咱们什么时候能分钱?”
“三个月后。”
“三个月?”
“嗯。三个月后,悟空的市场份额稳定了,现金流充裕了,再谈分钱的事。在此之前,所有收入全部用于扩大规模和风险储备。”
张鹏没有异议。
林谦站起来,走到窗边。
窗外,九月的庐州天色渐暗。场上的路灯亮起来,打篮球的人散了,只剩下几个跑步的。更远处,高新区的工地灯火通明,塔吊的轮廓在暮色中格外清晰。
2008年9月7。
悟空辅助的核心代码写完。测试从今晚开始。
林谦转过身,看着三个室友。
“三天之后,悟空上线。在这之前,所有人都要记住一件事。”
三个人同时看着他。
“夜鹰退场,空出来的市场不止我们在盯着。这几天会有其他竞品冒出来,也会有人盯上我们。低调,专注,把自己的事做好。”
王浩用力点头。
张鹏也点头。
李磊没说话,但眼神已经说明了一切。
林谦收回目光,重新打开笔记本电脑。
屏幕上,悟空辅助的代码安静地躺在文件夹里。
他打开测试志,启动监控脚本。
七十二小时挂机测试,正式开始。
本章完