第二天是周六。
林谦醒的时候,王浩已经坐在张鹏的新电脑前了。屏幕上是魔兽世界的登录界面,熟悉的黑暗之门背景图,BGM从漫步者音箱里传出来,震得整个宿舍嗡嗡响。
“谦哥你醒了?”王浩头也没回,“快来帮我看看,我昨天打到一个蓝装,你帮我估估价。”
林谦从床上跳下来,走到电脑旁边。
王浩正在作一个亡灵法师,站在奥格瑞玛拍卖行门口。装备栏里有一件刚换上去的蓝色护肩,属性加的是智力和耐力。
“这个能卖多少?”王浩问。
“不知道。”
“你不是什么都懂吗?”
“我不玩魔兽。”
王浩愣了一下,然后像看外星人一样看着林谦:“你不玩魔兽?2008年,你一个学计算机的男生,不玩魔兽世界?”
“不玩。”
“那你的人生有什么乐趣?”
林谦没理他,拉过椅子坐下,看着王浩作。
王浩控着角色在拍卖行里翻了一圈,最后还是把那件蓝装挂了一个自认为合理的价格,然后骑马出了奥格瑞玛,往贫瘠之地跑。
“你跑这么远嘛?”林谦问。
“做任务啊。这游戏升级全靠任务,刷怪经验太少了。”
“刷怪经验少?”
“少得可怜。一只怪才给两百多点经验,升一级要十几万。纯刷怪的话,一级能刷到你吐。”
林谦盯着屏幕上那个骑着骷髅马在荒野上狂奔的亡灵法师。
“那你现在多少级?”
“六十三。满级七十,还差七级。”
“升一级要多久?”
“纯做任务的话,一级大概三四个小时吧。中间还得跑路、找任务点、等怪刷新,乱七八糟加起来,一级得小半天。”
“有更快的方法吗?”
王浩想了想:“有啊,用外挂。我那个朋友老周,他用法师号开外挂刷副本,一晚上能升两级。”
“一晚上两级?”
“对。自动跑副本、自动拉怪、自动AOE、自动捡东西、自动修装备。全自动。早上起来一看,经验条涨了一大截,包里还多了几百金。”
林谦没说话,看着屏幕上那个正在荒野上奔跑的小人。
王浩继续说:“不过老周那个外挂是夜鹰的高级版,月卡两百。普通版只能野外挂机,效率差很多。而且夜鹰的外挂有个毛病,偶尔会卡地形。早上起来经常发现角色卡在树桩上或者石头缝里,一晚上白挂了。”
“为什么卡住?”
“自动寻路的算法不行吧。魔兽的地图太复杂了,有些地方看着能走,其实有障碍物。外挂识别不了,就卡住了。”
林谦把这个信息记了下来。
“除了升级,外挂还能什么?”
“多了去了。”王浩来了精神,“自动采集、自动钓鱼、自动跑商、自动战场、自动竞技场——只要你想到的,基本上都有人做。最值钱的是采集挂,一台电脑二十四小时挂着,一天能采几千金的材料,拿去卖人民币,一个月能赚好几千。”
“你做过?”
王浩嘿嘿一笑:“我没那个耐心。不过我认识一个工作室的,搞了二十台电脑,全挂着采集挂,一个月纯赚三四万。”
张鹏从上铺探出头来:“三四万?真的假的?”
“真的。2008年,三四万什么概念?咱们学校教授一个月才挣五六千。”
张鹏翻身坐起来:“那咱们也搞啊!”
“搞不了。”王浩摇头,“采集挂技术要求太高了。魔兽的采集点是全地图随机刷新的,外挂得能自动扫描、自动寻路、自动避开其他玩家、自动处理意外情况。市面上能用的采集挂就那么几款,最便宜的月卡都要五百。”
“五百?”
“对。而且经常被暴雪检测到,一封号就血本无归。”
林谦忽然开口:“你刚才说市面上能用的采集挂就那么几款,是哪几款?”
王浩掰着手指头数:“夜鹰有一款,不过不稳定,经常掉线。还有一个叫‘矿工之王’的,专门采矿石的,销量最高,但作者早就不更新了,暴雪一更新就废。还有一个叫‘自然之赐’,采草药用的,功能最全,但价格最贵,月卡八百。”
“夜鹰的不稳定,矿工之王不更新,自然之赐太贵。”
“对。所以工作室一般都是几个挂混着用,这个不行换那个。”
林谦把这些信息一字不漏地记在脑子里。
王浩的亡灵法师跑到任务点,开始打怪。火球术、寒冰箭、奥术飞弹,一套技能轮着放。打了两只怪,坐下来喝水回蓝。
“你看,这游戏最烦的就是回蓝。”王浩抱怨,“法师蓝耗太高了,打三只怪就得喝水。喝一次水三十秒,一小时光喝水就得十几分钟。”
“不能自动喝水?”
“可以。外挂都有自动喝水的功能。但游戏里喝水有动作条读条,外挂得模拟这个动作,有时候网络延迟一高,动作就卡住了。人不在电脑前盯着,角色就傻站着不动。”
林谦点了点头。
王浩喝完水,继续打怪。又打了三只,又坐下喝水。
林谦看了大概二十分钟,忽然问:“你觉得一个完美的外挂,应该具备哪些功能?”
王浩想都没想:“稳定。首先得稳定,不能三天两头掉线、卡地形、封号。其次是功能全,自动打怪、自动采集、自动跑图、自动交易,最好什么都有。然后是价格别太贵,夜鹰那个两百块一个月就太贵了,一百左右差不多。”
“还有呢?”
“还有……作简单吧。最好装上就能用,不用配置一堆东西。老周那个夜鹰外挂,光配置文件就改了半个多小时,还得自己写脚本。”
“脚本?”
“对。夜鹰的高级版支持自定义脚本,可以自己写打怪逻辑。但那个脚本语言特别难学,一般人本搞不明白。”
林谦的眼睛微微眯了一下。
自定义脚本。这个功能他没想过。但王浩这么一说,他立刻意识到这是一个巨大的差异化竞争点——让用户自己定义外挂的行为逻辑,相当于把外挂变成了一个平台。
当然,这个功能太复杂了,第一个版本不用上。但方向是对的。
“行,我知道了。”
林谦站起来,走回自己的床边,打开笔记本电脑。
王浩问:“谦哥你要嘛?”
“写代码。”
“写什么代码?”
“悟空辅助的第一个模块。”
王浩立马从电脑前蹦起来,凑到林谦旁边。张鹏也从床上爬下来,李磊放下手里的书,三个人把林谦围在中间。
林谦新建了一个文件夹,命名:悟空辅助_v1。
然后打开代码编辑器,开始敲第一段代码。
王浩盯着屏幕看了三十秒,放弃了。
“看不懂。李磊,你能看懂吗?”
李磊盯着屏幕,眉头越皱越紧。
“能看懂一部分。谦哥在写的是一个封包拦截模块。”
“什么意思?”
“就是截获游戏客户端和服务器之间的数据包。”
林谦头也没抬:“对。任何外挂的第一步,都是截包。截不到包,什么都做不了。”
“第二步呢?”
“分析包结构。魔兽世界的封包是加密的,需要逆向它的加密算法。”
“你能逆向出来?”
林谦的手指在键盘上停了一下。
“夜鹰能,我也能。”
然后继续敲代码。
王浩和张鹏对视一眼,都没再说话。宿舍里只剩下键盘的敲击声,密集而清脆,像下雨一样。
李磊坐在旁边,眼睛一眨不眨地盯着屏幕。他看不懂全部的代码,但他能看懂林谦在做什么——在写一个完整的网络数据包拦截框架。不是零散的代码片段,是一个模块化、可扩展、能复用的完整框架。
这种东西,不是随便哪个程序员都能写出来的。
一个小时后,林谦停下了手。
“第一版截包模块,写完了。”
王浩瞪大眼睛:“这就写完了?才一个小时?”
“截包本身不复杂,复杂的是后面的加密逆向。”
“那加密逆向要多久?”
林谦想了想。
“夜鹰的加密我昨晚已经分析过了,算法很基础。从头逆向的话,两天左右。”
“两天?”
“嗯。”
王浩咽了口唾沫,没再问。
李磊忽然开口:“谦哥,你刚才写的那个截包模块,能给我讲讲吗?”
林谦把电脑转过去,指着屏幕上的代码,一行一行地解释。
“这一部分是建立网络连接的钩子。这一部分是拦截发出的数据包。这一部分是拦截接收的数据包。这一部分是数据包的缓存队列,防止高并发下丢包。”
李磊听得额头冒汗。
“这些……都是Ghost教你的?”
“一部分。大部分是自己琢磨的。”
李磊沉默了。
王浩嘴问了一句:“谦哥,你写这个外挂,大概多久能出第一个能用的版本?”
“三天。第一天截包和逆向,第二天写核心逻辑,第三天测试和优化。三天之后,悟空辅助的第一个版本就能跑起来。”
“功能呢?第一个版本有哪些功能?”
“自动打怪、自动喝水、自动捡取。三个核心功能。复杂的功能后续再加。”
王浩掰着手指头算了一下。
“自动打怪、自动喝水、自动捡取……这已经比夜鹰的普通版强了。他那个普通版只有自动打怪,喝水还得手动。”
“对。”
“那你准备卖多少钱?”
“上次说了,比夜鹰便宜十块。夜鹰普通版月卡三十,我们卖二十。”
王浩的眼睛亮了。
“二十块一个月,一天不到一块钱。这价格谁买不起啊?”
张鹏也点头:“而且咱们功能还比夜鹰多。价格便宜,功能更多,这不卖爆?”
“别高兴太早。”林谦说,“外挂的核心竞争力不是功能,是稳定。功能再多,三天两头封号,没人会用。所以测试阶段要把反检测做扎实。”
王浩问:“反检测怎么做?”
“让外挂的行为看起来像真人。作间隔随机化,移动轨迹拟人化,异常情况有兜底处理。暴雪的反作弊系统本质是一个行为分析模型,只要你表现得像真人,它就不会报警。”
“听起来好像不难?”
“不难,但繁琐。每一个动作都要模拟真人的习惯,从点击频率到鼠标移动轨迹,从技能释放顺序到走路路径选择。几百个细节,漏掉一个就可能被检测出来。”
王浩听得咋舌。
“这也太细了吧?”
“不细不行。”林谦说,“夜鹰为什么不稳定?就是因为细节处理太粗糙。它的自动打怪是固定间隔作,每次都是精确到毫秒的固定节奏。真人不可能这么有规律。暴雪的反作弊系统检测到这种规律性作,直接判定为外挂。”
李磊问:“那我们要模拟多少种随机行为?”
“越多越好。人类作的特征就是随机性。你永远不知道他下一次点击是快还是慢,下一个技能会放哪一个,走路会走直线还是绕个弯。我们要做的,就是让外挂的行为也具备这种不可预测性。”
张鹏忽然嘴:“谦哥,你说得这么详细,不怕我们学会了跑出去单?”
林谦看了他一眼。
“不怕。”
“为什么?”
“因为你们学不会。”
张鹏噎住了。
王浩哈哈大笑:“鹏哥,你就别想了。谦哥写的那玩意儿,李磊都看不懂,你还想学会?”
张鹏摸了摸鼻子,也笑了:“我就问问,问问还不行吗。”
林谦关掉代码编辑器,打开夜鹰外挂的逆向分析文档。
屏幕上是一张密密麻麻的图表,标注着夜鹰外挂的模块结构、通信协议格式、加密算法流程、反检测机制。
“这是我昨晚整理出来的。”林谦说,“夜鹰外挂的完整技术架构。”
李磊凑过来看了三十秒,倒吸一口凉气。
“你昨晚不是一直在写商业计划书吗?”
“计划书写完了,顺手拆了一下夜鹰。”
“顺手?”
“嗯。花了一个多小时。”
宿舍里安静了。
王浩、张鹏、李磊三个人看着林谦,眼神已经不是震惊了,是一种近乎看怪物一样的表情。
一个多小时,把一个外挂团队做了几个月的产品,从头到尾拆了个底朝天。
林谦没理会他们的目光,指着图表上的一处说:“夜鹰最大的问题是加密层太薄。他只对数据包做了一次简单的异或加密,密钥还是写死在代码里的。这种加密方式,稍微懂点逆向的人五分钟就能破掉。”
“所以暴雪检测他也检测得很容易?”
“对。他的通信特征太明显了。暴雪不需要完全破解他的加密,只需要识别出‘具有这种特征的通信就是夜鹰外挂’,然后批量封号。”
“那我们怎么做?”
“动态密钥。每次通信生成不同的密钥,让通信特征每次都不一样。暴雪就算截到数据包,也找不出固定的特征码。”
李磊的笔在本子上飞快地记。
“谦哥,你说的这个动态密钥,是怎么实现的?”
林谦开始在键盘上敲代码。
“我写个简单的示例,你看一遍。”
键盘声响起来。
宿舍窗外,庐州九月的阳光照进来,落在地板上,落在那台一万二的ThinkPad上,落在四个十八岁年轻人的脸上。
王浩、张鹏、李磊都没有再说话。
他们看着林谦的屏幕,看着一行行代码在黑色背景上跳跃。
2008年9月6。
悟空辅助的核心代码,正式开始编写。
本章完