第388章 中间人攻击(2 / 2)
林鸿所说的话,通俗易懂,他们也听明白了。
虽然**不离十,但是为了保险起见,林鸿还是得自己动手验证一下才能打包票。
“这样吧,如果方便的话,我就使用我自己的方式进行验证一下。”他说道。
徐直中稍微想了一下,便点头同意了。
在曹兴平的示意下,余波只好让出了自己的座位。
林鸿坐了上去,然后调出编译器,立刻动手编写一个小工具。
这个小工具非常简单,只有一个功能,那就是持续不断地对之前那个函数进行调用,然后使用内存DUMP的方式,将内存里面的指定数据保存在一个文本文件里面,与此同时,也监测那个函数的返回结果。
接着,林鸿便将余波之前做的过程重新做了一遍,重启,然后进入静默状态,再重新恢复……
一个新的文件便被生成了。
林鸿使用编辑器将其打开,开始分析文本文件里面的内容。
站在林鸿身后,想看他好戏的余波顿时有些傻眼了。
也不知道林鸿是故意的还是怎的,他的动作非常快,写代码也感觉就像是心中早就编写过无数次那样,直接一溜烟地就编写了过去,稍微修复了几个由于疏忽而导致的错误之后,这个小工具便很快就写完了。整个过程,用了不到三分钟的时间。
余波站在身后一直目不眨眼地盯着都没有跟上他的步伐。虽然看懂了大概的意思,但是其细节却是完全理解不了,不知道对方为什么这么编写。
而看到最终生成的那个文本文件,他更是傻眼,因为里面的内容按理说来,是根本访问不到的,是系统层的内存数据。
“这不可……”余波还想说什么,不过立刻有闭了嘴,因为事实摆在眼前,他再说不可能,那不是一句废话么?
林鸿将记录迅速的看了一遍,最终点头道:“果然如此。里面的确有一个隐藏的程序,接管了这个函数。”
这个LOG文件中的记录,非常明显地显示出,进入静默状态的时候,内存里面的函数栈有了比较明显的变化,数据显示一个新的函数被压入了栈。
栈是数据结构中一个比较特殊的数据结构,其特点就是“先进后出”例如弹夹就是一个典型的栈结构,子弹装进去的时候,先压入,再弹出,最先装入的是最后被射出。
在程序中,函数里面的各个数据和变量,也是按照一定的顺序,一个一个“压入”执行完毕之后,再一个一个“弹出”。
要想监控函数的变化,就只要监控指定位置的那个栈结构就行了。林鸿从内存中DUMP出来的数据,就是栈里面的东西。
这个结果,在场的其他三人脸色都有些变了。
这意味着,林鸿所说的话是正确的,系统底层的确有一个隐藏的程序在秘密活动,而他们之前对此却毫不知情。
徐直中还好,已经有了心理准备,曹兴平却是脸色变得极其难看。
“那为什么在刚开始启动的时候没有这个问题,而进入静默状态才会出现?”
这个时候,余波突然插言问道,他这个时候,已经没有心思去膈应林鸿了。
“这是因为在系统启动的时候,你们的这个壳程序优先启动,然后对方才启动,这样就根本没有受到它的影响,两者相安无事。但是进入静默状态的时候,壳程序会要关闭,再次启动的时候,那个隐藏程序已经完全接管了整个函数接口,可能是对方在这一块没有处理好,导致两者产生了冲突,壳程序调用的那个函数没有能够返回有效的数值,而你们恰好又没有对这个返回值进行判断处理,最终导致了整个壳程序的崩溃。”