第四十六章 破译

卢赫揉了揉眼睛,打了个大大的哈欠,“这词是永存和不死的意思吧,寓意很好啊。”

艾达否撇撇嘴,打开一个叫ExeinfoPE的软件,把文件夹里一个名为Immortal.exe的文件拖了进去,然后按下了回车键。

进度条飞快地走着,不一会儿,软件下半部显示出了两条信息:

Microsoft Visual C++ V2.0 -100x -(x86)

脱壳成功

“完美!”艾达否激动到拍桌,“古董软件就是如此简单。也许他们的加壳手段在当时看来很复杂,但在20年后的今天,脱壳就像喝水一样简单。”

本小章还未完,请点击下一页继续阅读后面精彩内容!

“什么是加壳脱壳啊?”卢赫被触及到了知识盲区。

“加壳就是为了防止软件被破译,在指令的头部写入一层额外的指令,把程序入口点和动态链接库的地址表隐匿起来。”艾达否说完又思索片刻,“打个不太恰当的比方就是,你不想被别人看光光,所以要穿衣服,这叫加壳。现在我非要看光你,就强行把你衣服给扒了,这叫脱壳。”

“变态。”卢赫捂住自己的领口,“那下一步呢?”

“下一步啊,那就是我的拿手绝技了,对这些可执行文件和动态链接库进行逆向分析,尽可能全地反推出程序源码。”艾达否说着拍了拍自己胸脯,“这破软件是C屁屁写的,我拿手,放心好了!”

于是之后的一周里,503寝室的就寝率急剧地从0%提升到了77%,虽然天花板上的那盏老旧的吊灯,每日都不堪重负地彻夜长明。

那个和艾达否同名的软件,一如既往地给力,仅用静态分析,便还原出了80%以上的高级语言。艾达否孜孜不倦地啃食它们,可吃完了以后,却发现自己吃了个寂寞。

因为那些能够被解析的部分,全部都在调用系统接口,从对象属性、函数名和执行逻辑来看,它们的功能仅仅在于读取交互数据,以及把不知道从哪里蹦出来一长串字符通过自定义的接口,传递给另外一个明显是用来自动化操纵硬件的软件。

这就像好不容易把别人衣服给扒下来了,却发现人家还额外穿了一套内衣,一个点都没露。想要一饱眼福,就要再去做动态分析和黑盒分析。

动态分析就是给程序打断点或者干脆直接单步执行,观察寄存器、内存数据和堆栈的变化,猜测程序做了什么;黑盒分析就是给程序输入大量的测试样例,通过观察输入和输入数据的关系,猜测程序到底做了什么。

这两种分析方式都是难啃的硬骨头。

于是在未来的半个月里,每当艾达否静坐在电脑屏幕前一边挠头一边扣脚时,卢赫都会为他递上一杯热腾腾地黑芝麻糊。因为他本就不浓密的头发,愈加稀疏了。

在喝下37杯黑芝麻糊之后,艾达否终于崩溃了。他叫来卢赫,郑重地说:

“现在我宣布一个惊天大秘密:这个锌指平台没有任何技术含量,它的原理就是你随机给它输入一串碱基序列,然后它再随机地给你输出一串。就这样,他们花了大几百万买了一台彩票机,就电视上那种,一个鼓风机往透明塑料转盘里吹,随机吹出一个又一个的球。”

“现在我给你演示一下。”艾达否说着,在地址0C处打下一个断点,把内存数据修改为AGGCCGTTC的二进制形式,然后运行到下一个断点,有一串长达900的数字被存入内存。

“看,就是这样。它只是给你摇了一串彩票。”艾达否摊手,“老弟,对不住,是我说大话了。不过也不完全是,因为我通过各种手段分析了,这输入和输出真没什么关系!南州湾大学是这个世界上最大的冤大头,圣加蒙是这个世界上最大的大骗子,没有之一!”

“介斗似嘛玩儿意儿斗!”艾达否的心灵似乎受到了创伤,喋喋不休道:“里德那个老梆子,用一个虚拟彩票机,骗了全世界二十多年!”

艾达否说完后,仰面干掉了杯底的芝麻糊,一把把杯子砸在桌上,然后与卢赫一起呆滞着。

正当两人沉默时,他们身后幽幽地传来了一句话。

“这不是Fortran吗?”

两人同时回头:“易大仙你什么时候回来的?你走路怎么没声?吓死个人了!”