海滨城市的夏季向来以温暖湿润著称,而仪器室里由于需要用低温和干燥来延长仪器和试剂的寿命,所以除了依靠大功率空调保持20度室温的同时,还有一台除湿机24小时全功率运作。
卢赫被冻得直哆嗦的同时,也感觉到鼻子一直在往外冒火。他就这么一个人焦躁地躲着脚,等待着返回宿舍拿硬盘和衣物的艾达否。
半个小时后,门终于被推开了。他惊喜地转头,却发现来者不是艾达否,而是王戊。
“卢赫?大半夜的还在这儿做什么呢?”王戊没有走进门,只是探进来了个头,吃惊地问。
卢赫也有些惊讶,一改瑟缩的姿态,挺起胸问:“王老师这么晚怎么也没下班?”
“哎呀,别提了。我教学生做实验,那帮小姑娘笨手笨脚的,一晚上都没学会。”王戊皱着眉说,话里满是无奈和不满,神情和语气却饱含着沾沾自喜。
“那可真是辛苦您了呢。”卢赫装作不经意地走到摆着散乱螺丝头的置物架前,试图用身子遮挡住锌指平台的屏幕,“我趁晚上人少,约了台仪器。已经用完了,马上也就回去了。”
王戊把脖子往前探了探,注视着卢赫身后的那一角莹莹蓝光,意味深长地说:“锌指平台这种东西,还需要等人少的时候用吗?这破烂仪器平日里一个月都不会有人用一次。”
“是,是我多虑了。今天晚上还真没人跟我抢。行了,我准备收拾收回去了,您也早点回家休息啊,王老师。”卢赫讪笑着说完,掏出手机想要给艾达否发信息让他别回来了。
王戊站在原地,似笑非笑地眯着眼继续问道:“卢赫,你不会是,又在养乌龟了吧?”
卢赫怔了一下,收起脸上的笑,认真地答道:“王老师真是多虑了呢,您是了解我的,我既不养乌龟,也不养黑胶虫。我没那个能耐。”
正说着,身后响起了熟悉的声音,“喂,让一让,借过一下。”
只见艾达否一把把屏蔽门推到大开,然后从王戊身后冒了出来,径直走到卢赫身边,好似王戊不存在一样。
王戊见状,悻悻地走了。
艾达否从口袋里掏出硬盘,插在仪器上,重启进了dos界面。
卢赫在他身后观望着,好奇地问:“老艾,我看你好像不太待见王戊啊。”
艾达否一边敲打出一行行命令,一边语气不屑地回答道:“那种人有什么好待见的,学术妲己而已。”
卢赫吃到了惊天大瓜,连忙追问:“此话怎讲啊?他一个男的,怎么就妲己了。莫非,他是同志?”
“你个死变态,想哪儿去了?”艾达否嫌弃地转头看了一眼卢赫,然后继续着手里的活儿,“他是学院里出了名的交际花,每天孜孜不倦地给同组的女博士和刚升上去的女讲师献殷勤,只为蹭论文作者。”
“哎你别说,有人还真就吃他这一套,让他顺利蹭到了一个顶刊共一和几个二作,顺利留了校。这人学术水平不咋地,人品也不咋地,脑子还缺根弦。据说他毕业前夕,大年夜地跑到王峰家里去送礼,把人家烦得要死。”
“虽然王峰也不怎么待见他,但架不住人家和学院女领导关系好啊,最终还是被留下来了。我可跟你说,趁早躲着他点,就这种能人,分分钟把你枯燥的科研路给变成甄嬛传。”
艾达否说完,把硬盘一拔,往兜里一揣,拍了拍手,“走吧,回宫去吧!”
“就,就这?就完事儿了?”卢赫被不可思议到话都说不利索了,“那你快说说这仪器里到底有什么秘密?”
艾达否一个手刀削过了卢赫头顶的呆毛,“异想天开什么呢?我只是克隆了一个镜像系统,这大几百万的东西,可不能在上面胡来。快扶本王回宫。”
“喳。”
回宫后,艾达否坐到自己王位上,翘着右手小拇指,捏着硬盘的USB口,插入到他的主机上,把镜像系统导入虚拟机,然后畅游在其中。
503寝室的灯亮了一夜,第二天一早,艾达否推醒了一旁抱着椅子睡得正香的卢赫。
“小赫子,快醒醒,朕要施展绝技了。”艾达否指着屏幕上一个屎黄色的文件夹,“看看,这个Immortal,就是核心程序的主文件夹。不得不说,上个世纪的码农还都挺中二的,这单词是什么意思?永垂不朽?”
卢赫揉了揉眼睛,打了个大大的哈欠,“这词是永存和不死的意思吧,寓意很好啊。”
艾达否撇撇嘴,打开一个叫ExeinfoPE的软件,把文件夹里一个名为Immortal.exe的文件拖了进去,然后按下了回车键。
进度条飞快地走着,不一会儿,软件下半部显示出了两条信息:
MicrosoftVisualC++V2.0-100x-(x86)
脱壳成功
“完美!”艾达否激动到拍桌,“古董软件就是如此简单。也许他们的加壳手段在当时看来很复杂,但在20年后的今天,脱壳就像喝水一样简单。”
“什么是加壳脱壳啊?”卢赫被触及到了知识盲区。
“加壳就是为了防止软件被破译,在指令的头部写入一层额外的指令,把程序入口点和动态链接库的地址表隐匿起来。”艾达否说完又思索片刻,“打个不太恰当的比方就是,你不想被别人看光光,所以要穿衣服,这叫加壳。现在我非要看光你,就强行把你衣服给扒了,这叫脱壳。”
“变态。”卢赫捂住自己的领口,“那下一步呢?”
“下一步啊,那就是我的拿手绝技了,对这些可执行文件和动态链接库进行逆向分析,尽可能全地反推出程序源码。”艾达否说着拍了拍自己胸脯,“这破软件是C屁屁写的,我拿手,放心好了!”
于是之后的一周里,503寝室的就寝率急剧地从0%提升到了77%,虽然天花板上的那盏老旧的吊灯,每日都不堪重负地彻夜长明。
那个和艾达否同名的软件,一如既往地给力,仅用静态分析,便还原出了80%以上的高级语言。艾达否孜孜不倦地啃食它们,可吃完了以后,却发现自己吃了个寂寞。
因为那些能够被解析的部分,全部都在调用系统接口,从对象属性、函数名和执行逻辑来看,它们的功能仅仅在于读取交互数据,以及把不知道从哪里蹦出来一长串字符通过自定义的接口,传递给另外一个明显是用来自动化操纵硬件的软件。
这就像好不容易把别人衣服给扒下来了,却发现人家还额外穿了一套内衣,一个点都没露。想要一饱眼福,就要再去做动态分析和黑盒分析。
动态分析就是给程序打断点或者干脆直接单步执行,观察寄存器、内存数据和堆栈的变化,猜测程序做了什么;黑盒分析就是给程序输入大量的测试样例,通过观察输入和输入数据的关系,猜测程序到底做了什么。
这两种分析方式都是难啃的硬骨头。
于是在未来的半个月里,每当艾达否静坐在电脑屏幕前一边挠头一边扣脚时,卢赫都会为他递上一杯热腾腾地黑芝麻糊。因为他本就不浓密的头发,愈加稀疏了。
在喝下37杯黑芝麻糊之后,艾达否终于崩溃了。他叫来卢赫,郑重地说:
“现在我宣布一个惊天大秘密:这个锌指平台没有任何技术含量,它的原理就是你随机给它输入一串碱基序列,然后它再随机地给你输出一串。就这样,他们花了大几百万买了一台彩票机,就电视上那种,一个鼓风机往透明塑料转盘里吹,随机吹出一个又一个的球。”
“现在我给你演示一下。”艾达否说着,在地址0100345C处打下一个断点,把内存数据修改为AGGCCGTTC的二进制形式,然后运行到下一个断点,有一串长达900的数字被存入内存。
“看,就是这样。它只是给你摇了一串彩票。”艾达否摊手,“老弟,对不住,是我说大话了。不过也不完全是,因为我通过各种手段分析了,这输入和输出真没什么关系!南州湾大学是这个世界上最大的冤大头,圣加蒙是这个世界上最大的大骗子,没有之一!”
“介斗似嘛玩儿意儿斗!”艾达否的心灵似乎受到了创伤,喋喋不休道:“里德那个老梆子,用一个虚拟彩票机,骗了全世界二十多年!”
艾达否说完后,仰面干掉了杯底的芝麻糊,一把把杯子砸在桌上,然后与卢赫一起呆滞着。
正当两人沉默时,他们身后幽幽地传来了一句话。
“这不是Fortran吗?”
两人同时回头:“易大仙你什么时候回来的?你走路怎么没声?吓死个人了!”
“佛抻是什么?”艾达否连忙追问。
易天霖没有理会二人,而是盯着屏幕继续说道:“佛抻是一个比C还早诞生二十多年的高级语言,经常用于科学计算,我们专业常用。它和C之间最大的区别在于,数组的排列方式一个是先行后列,一个是先列后行。”
“你看。”易天霖指着内存区说,“你输入的那个数组,在内存里明显就是先列后行排列的,所以这程序肯定是用佛抻写的。”
卢赫和艾达否恍然大悟,一同转身扑向易天霖,易天霖逃也似地跑掉了。
艾达否欣喜若狂,从桌下掏出一个笔记本,提在手里颠颠地跑出了门,只留卢赫一人独守空房。
独处的时间里,卢赫陷入了精神内耗。因为他的偶像,看起来好像快要塌房了。也不对,主观来说,他的偶像早已塌房。
罗伯特·里德,这位开启了基因编辑传奇的风云人物,曾让世人误以为,人类即将摆脱自然的限制,走向无限可能。他曾带着一身丰功伟业断然离世,只留下了一个彩票机。
卢赫已不对软件破译抱有任何希望,因为无论那段用最古老编程语言书写的程序是什么,它始终都是一个彩票机。因为艾达否已多次尝试,就算多次给它输入同一串字符,它每次的输出都是大不相同的。
即便他曾经有那么一段抱着机器尝试上千次的历史,但作为一个理智的理科生,他清楚地知道,金哥的诞生,是一个非常偶然的成功,是被幸运女神短暂地亲吻了一下。
想到这里,他重归心灰意冷。刚刚燃起了一个月的宝贵希望,重新破灭掉。他就像是一头落单的骆驼,回到那熟悉的荒漠茫然地绕着圈,直至驼峰里的脂肪逐渐消耗殆尽,至死都看不到一眼绿洲的影子。
正当他全身爆发出无法抵御的疲倦,一步一步挪到梯子前,准备爬上床蒙头大睡时,艾达否风风火火地回来了。和他一起出现的还有易天霖。
只见艾达否揪着易天霖的后衣领,拖着他进了宿舍,嘴里连连爆发出怨念:“我说你最近发什么神经?怎么总是躲着我俩?快说,是不是干什么亏心事了?是不是背着我出去偷汉子了?”
“我一堂堂正正的风水先生,可不兴做那些泯灭人性的事,会遭天谴的。”易天霖拍打着艾达否的手,“你给我松开,我这都是为了你俩好,我都看见你俩互相壁咚了,我这是给你们制造相处的空间!”
“花好月圆,成人之美!”易天霖挣脱了艾达否的魔爪,挺胸抬头,一身正气地说。
艾达否和卢赫细品一下易天霖的话,同时爆发出一句:“我去你大爷的!”
一番解释过后,易天霖终于相信了二人之间的清白,意味深长地说了一句:“没关系的,万一以后有什么,我也都支持你们!”
“你个顺鸟儿!”艾达否一边用家乡话骂着人,一边把易天霖按到自己的椅子上,啪地一下拍亮了电脑屏幕。屏幕上是一行行陌生的代码。
“给你个赎罪的机会,赶紧帮着看看这段程序是什么意思。”艾达否把鼠标往易天霖面前一拍,“我找我的跨界老同学还原出的一段佛抻代码,但他几年没用过佛抻,已经看不懂了,剩下的就靠你了。”
易天霖接过鼠标,光标在那一行行黑的、蓝的、墨绿色的字符上划过,直至结尾。程序不长,只有寥寥的一百多行,他很快看完后,又返回开头重新划了一遍。
又一次划到结尾时,他皱着眉头说:“我能看懂,但我不理解。这段程序没有任何功能,它只是定义了一个伪随机数生成器,把随机数加到一个数组上,然后输出。你说只还原出了一段,那其它的呢?”
“其它的加了脱不了的壳。”艾达否说着一把把易天霖扒拉到了一边,自己做到电脑前,“不过已经不重要了,就这样已经够了。”
只见艾达否噼噼啪啪地砸着键盘,做着些只有他自己才能看懂的事情。最后,在地址0100345C处打下一个断点,把内存数据修改为AGGCCGTTC的二进制形式,然后运行到下一个断点,有一串长达900的数组被存入内存。这一个数组,与之前那个一模一样。
艾达否对着结果楞了一下,然后转头看向卢赫:“我没有食言,我成功破译了。我取消了随机数生成,然后,输入和输出之间,便有了确定的关系。”
“虽然不知道那个老梆子究竟在葫芦里卖的什么药,但可以肯定的是,这台机器的核心就是那套脱不了壳的程序。锌指平台本不是一台彩票机,是被人生生变成了彩票机。”
一时间,三人一同陷入沉默,疑惑在心中堆积。
如果说锌指技术曾是基因编辑领域里最亮眼的一块宝石,那么到底是谁,又究竟是为什么,要把它永久埋葬?