“小毅,你怎么可以轻易就放弃这局呢!”郑洁有些“恨铁不成钢”,她一个劲的在帮他争取,却没想到他自己倒大方地放弃了。
苏兰上前拉住郑洁的手,安慰道:“别生气了,接着看下去吧,小毅不会输的。”
第二题还是解密题,不过不再是那种加了密码型壳的加密,而是直接给出一个加密文件,机密者将该文件还原出来。
在dodo的cd中,但是那些文档非常的晦涩,而且这些文档并没有提供足够的信息,所以有时候连开发者们往往都无法很好地弄懂这一格式。
windows下的加密和解密说白了就是针对pe文件格式结构的相关操作,所以掌握这种格式是每一个破解者的必备技能。
第二场比试开始,这次的题目很显然大大难于上一个,两人有条不紊地开始进行破解。
这个难度比较大,所以允许他们从网络上下载一些常用的破解软件,当然,如果他们自己有工具的话,也允许用自己的工具。
许毅从网络上的一台肉鸡中下载了几个小软件,有用来检测壳的,也有用来调试跟踪的,其中大部分功能和网络上流传的那些工具差不多,不过经过了他的一些相应修改,功能更为强大。例如如果其中有反跟踪代码,可能那些工具有影响,但他的工具可以无视等。
许毅用一个检测壳的小软件将那个要破解的文件加载进去,想看看,是否能够看出到底是加了什么类型的壳。
“壳”是一种很形象的说法,意思就是对软件进行保护的那一层代码。说起来,壳和病毒在某些方面比较类似,即壳和病毒都需要比原程序代码更早地获得控制权,这一功能可以通过在原程序的代码执行前加入自己的一段代码来实现。在文件执行的时候,壳修改了原程序的执行文件的组织结构,从而达到壳的代码能够比原程序的代码提前获得控制权的目的,并且还不会影响原程序的正常运行,从这点上来说,壳和病毒是很类似的。
许毅编写的这个软件是根据一些壳的特征代码来识别到底是什么壳的,当然,识别的准确度也有可能不准确,因为这些特征代码也是可以伪造的。
许毅查看了一下,软件中显示,“壳”是vc++的,于是许毅用另外一个脱壳工具试了一下,发现脱出来的文件是损坏的文件,也就是说,这个壳并没有这么简单。他再经过一番努力,发现这个壳根本就是伪造的,工具脱壳并行不通,看来只有手动脱壳了。
詹姆斯的进展就比许毅慢多了,他发现,这种加密方式自己很陌生,以前根本没有接触过,脑门的汗渐渐冒了出来。看来,上帝并不是每次都这么照顾他。詹姆斯现在正被那个具有欺骗性质的壳弄得头昏脑涨,他现在还在相信这个壳是vc++的,所以正朝这方面努力着。
米歇尔教授一直在后面观察着他们两个的情况,看到詹姆斯有些手忙脚乱地样子,他微微地摇头,他和许毅相比,差得实在是太远了。光从心态上来看,他就已经输了。破解的时候,最忌讳的就是心浮气躁,破解是一个非常需要耐性的活,冷静的头脑是必不可少的,越心急进展就会越慢。反观许毅,他一步一个脚印,心平气和,井井有条。
不过米歇尔教授心中并不担心,因为这个题目的难度远远超乎大家的意料,在几周之前,他自己也肯定不能够在短时间内将其搞定,这可是他最近才研究出来的新的加密方式。米歇尔教授是想让他们都破解不出来,这样他们就又成了平局。
许毅原本对这次比试也没怎么在乎,可是现在,他改变了自己的想法,他对这个文件的加密方式感兴趣起来。这正是许毅的性格,越难越能挑起他的斗志。
pe格式文件是按节区进行规划组织的,不同的节区一般保存的数据的作用也不相同。壳出于保护原程序代码和数据的目的,一般都会加密原程序文件的各个节区。当然,既然是加密保存,但程序在执行的时候又不能也保持加密状态,所以解密也是壳必做的工作之一。节区不只一个,如果壳是按节区加密的,那么在解密时也按节区解密,并且要把解密的节区数据按照节区的定义放在合适的内存位置。
入口点 节区 基地址 重定位 钩子函数
如果加壳时用到了压缩技术,那么在解密之前还有一道工序,当然是解压缩。
这也是一些壳的特色之一,比如说原来的程序文件未加壳时1-2m大小,加壳后反而只有几百k,这种瘦身技术当然会吸引了不少眼球。
时间一点一滴地过去,众人静静地在那等着也有些无聊了,他们开始慢慢议论起来。单从表面上来看,许毅比詹姆斯要镇定多了,至少他额头还没有冒汗。并且,许毅的手一直有事做,不像詹姆斯,他每隔一段时间就会发上一阵呆,简直有些手足无措了。
比赛在这边进行,而一些情况也早就传到了网络上。mit论坛现在正针对已经进行了的那场作废了的比赛进行激烈地讨论着。许毅用winrar就简单破解了一个密码型壳的加密文件,这太让人惊讶了,从来没有人想到过,这个软件竟然还可以这么用!大家纷纷拿出网络上很多加密软件的加密结果进行试验,结果发现,这个软件竟然可以破解掉网络上流行的几乎三分之一的加密软件!
“这些加密软件也太垃圾了!”众人纷纷骂道。大家没想到,原来值得信赖的加密软件原来是如此的不堪一击。大家纷纷意识到,以后加密文件的时候,一定不能随便选择加密软件,一定要选择信得过的,质量有保证的,要不然自己的秘密就随便可以被别人浏览了。
时间已经过去两个多小时,米歇尔觉得已经差不多了,可以宣布停止比赛了,因为他相信,就算再延长几个小时,结果也还是会这样。
“看来这次的题目我出得太难了,以至于他们两个都没能做出来,看来,只能宣布”
“终于搞定了!”这时,许毅突然感叹一声,打断了米歇尔教授的话,“教授,这个加密方法还真是不错呢!”
“什什么?你破解出来了?!”米歇尔彻底震惊了。
“没想到,这个文件不但是分节区进行加密,竟然还对其中的数据进行了压缩处理,更为巧妙的是,在加壳的同时,还让加壳后的程序调用了壳中的几个子程序教授,这个加密方法可是第一次出现呢!”许毅刚才就是把大量的时间花在了最后一个“子程序”技术上,许毅进行脱壳处理之后,虽然将壳脱掉了,但是程序执行也还是不正常,因为在脱壳的同时也将这些子程序给脱掉了。
另外,这个加密技术中的压缩处理技术也是一个亮点,原本有快2m的程序文件在加壳之后,竟然只剩下几百k了。
米歇尔刚开始还有些不相信许毅真的破解出来了,但是听到许毅的话之后,他不得不信了。他跑到许毅的计算机前查看了一下,结果真的出来了。他能说什么呢?只能承认自己的确是老了,这个问题竟然困扰了他几个月的时间,自己将这个技术发明出来之后,竟然被许毅在几个小时之内就给解决掉了。
米歇尔教授叹了口气,转头问詹姆斯:“詹姆斯,你做到哪了?”
詹姆斯犹豫了一下,说道:“解解压缩。”
“耶~太棒了,赢了,赢了!”郑洁欢呼起来,跑上场来强制性地给许毅来了一个熊抱。弄得许毅尴尬不已,连忙将其推开一段距离,还真受不了她的热情。
肯看不过去,站了出来怪声道:“先别高兴得太早,詹姆斯还有机会扭转战局,别忘了,他现在才胜一场而已。”