超脑黑客-第259章
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
得心应手。
接着,徐直中径直找到了曹兴平这里,对方正站在他外甥余波的身后,指挥着余波进行一些操作。
徐直中问道:“老曹,问题解决了么?什么情况?”
曹兴平这才发现他们不知道什么时候都已经到了自己的身后,他看了林鸿一眼,回答道:
“这次遇到的问题比较奇怪,以前那些解决类似问题的方法都没有用,我们的控制软件运行一段时间之后,就会发生闪退现象,而且没有任何征兆。”
“这么说来,这又是一个新的BUG?”
徐直中对这个项目还是很重视的,之前他不懂软件技术,但是为了自己能够了解其中的一些机制,愣是在业余时间花费心思进行自学,基本上成为了半个技术员,虽然他依然无法自己动手编写出符合要求的代码,但至少能够听懂技术人员到底在说些什么。
外行领导内行,这在技术领域是非常忌讳的,徐直中成为这个所的所长之后,就非常强调这样一点。
要想成为技术小组或者部门的领导,你必须对技术有所了解,并不需要你精通,但是至少技术人员在讨论一般性问题的时候,你能够听懂,并且可以毫无障碍地参与到讨论当中。
这个基于windows的框架,他们花费了大量的时间来进行优化和改进,去掉了很多不适用的功能,例如桌面外壳程序,系统之后,就直接进入了他们编写的控制程序界面,这样使用者根本不知道他所使用的系统是基于windows系统的。
其他所有多余的服务和进程也一律给禁止运行,甚至能删除就彻底清除掉了,彻底解决由这些功能所带来的安全隐患。
原来的系统,的确已经很稳定了,几乎不会出现类似这种情况,蓝屏的现象也没有。
他们做系统,是随时进行更新的,非常重视搜集使用者的使用情况反馈,一旦发现,就必须解决,就是怕这样的情况出现在演戏或者战场当中,那到时候这就不是BUG,而是事故了。
很明显,这次遇到的闪退现象是一个新的BUG。
由于里面基本就只有这个控制程序,连桌面都没有,闪退之后,整个系统看上去就是一篇淡淡的黑色,系统还是在运行,只是他们的控制程序崩溃了。
“经过测试,只有我们现在这个版本才有这个现象,其他版本都是好的。”曹兴平说道,“这次我们因为升级和改写的代码不多,我正在让他们在一步步跟踪调试,应该很快就能找到原因。”
对于这样的情况,他们的处理经验非常丰富,基本上已经形成了一整套固定的处理流程,只要按照这个流程来做,就可以迅速找到问题的根源所在,为他们节省不少时间。
林鸿站在旁边,对于他们这个工作,有点无语。
一方面是佩服他们能够将这个简单的系统用得这么顺,另外则是对他们在如此重要的场合使用一个国外的闭源系统而感到不可思议。
他心中已经对这个雷达系统的具体参数泄露有了个腹案,基本上只要稍微验证一下,可能就能找到泄露的原因。
一会儿之后,余波就已经将问题的根源找了出来。
原因很简单,他们在使用一个函数返回值的时候没有做判断,不知道为什么,这个函数并没有能够成功执行,其返回值为NULL,也就是为空,这并不是有效的数值,最终导致了整个控制程序的崩溃。
一个小小的返回值而疏忽了检查,于是导致了整个程序的崩溃……
林鸿强忍着没有让自己的脸部肌肉发生变化。
这样的情况,如果出现在通用的操作系统中,还是可以接受的。但是,现在竟然出现在一个军事领域的雷达控制系统中,是在是让他有点无语。
现在的问题是,为什么这个函数没有返回值?
曹兴平和余波都感到很奇怪,翻来覆去地研究了半天都没有找到答案。
“不可能啊,之前应该都是好好的,为什么现在会这样?这个函数为什么没有返回值?”余波嘴里念叨道。
其实要修复这个BUG进行很简单,就是在代码里面对这个返回值进行判断即可,没有返回值,则不做处理,直接忽略掉就行了,这个软件便不会再崩溃了,并且也不影响大局。
但是,他们必须搞清楚,这个函数为什么没有返回值?
理论上来讲,这个情况是非正常的,不在他们的计划之内。
为了搞清楚原因,余波把系统进行了重启,进去之后,发现系统变得正常了。
测试了几次,执行了一些功能,也没有那个现象。
接下来,他进行了关键的一步操作,也就是将控制程序进入静默状态,类似于电脑中的待机省电状态,然后再启动,结果又出现了这种情况,和刚才如出一辙。
控制程序还是闪退!
进入调试将返回值DUMP出来,发现又是那个函数又没有返回值而导致的。
也就是说,第一次的时候,那个函数是正常执行了的,而进入静默状态之后,这个函数也就关闭了,但是在此启动,却没有成功,返回了NULL值。
于是,余波开始了一次又一次的调试。
重启、修改、测试。
……
各种方法都用遍了,仍然找不到问题到底出在哪里。
他都快要疯掉了!
徐直中在旁边看了一会儿,也有些心烦,正想将曹兴平喊去他办公室,一起商量一下有关泄密的事情,这个时候,林鸿终于忍不住开声了:
“这应该是有东西接管了SDK里面的那个调用函数,导致你们的函数无法执行,所以才导致返回NULL值。”
“接管了调用函数?”
那个技术员顿时摇头。
“不应该,那个函数是系统的底层函数,在用户层根本没有进行修改的权限。”
曹兴平闻言,则稍微思索了一下,觉得他的话非常有道理,这样才能解释得通。
他有些讶然地看了林鸿一眼,问道:“你对这个系统也有研究?”
“我们就是做这一行的,自然对常见的系统都要深入研究。”
说完,林鸿又对那个技术员道:
“权限要自己动手去拿,不会自动送上门。”
第三百八十九章 中间人攻击
虽然windows3。1也已经设计了权限控制,并且将系统进行了分层,但是在这方面做得并不好,甚至可以说是相当的粗糙。
不过这也可以理解,毕竟这个系统刚刚出来,并且他们当时为了能够尽快地推出,也非常的赶时间,将一些重要的功能首先实现了,对于普通用户来说,他们设计的权限控制体系已经基本能够满足要求了。
Windows3X系列操作系统,根本就不是为实时操作系统而开发的,实时系统,他们有专门的windowsNT系列,其权限控制就比这个要完善多了,稳定性也极大的增强。不过,同样的道理,他们想要对NT系统进行定制修改的难度也就更大了,总体说来,还没有直接使用这个来得方便。
并且,windows系列的系统都是闭源的,说白了这是商业软件,你想使用,就必须进行购买,他们现在这样使用,是违反知识产权法的,使用的是盗版。要是被微软发现,他们是可以通过司法途径进行起诉的。当然,至于国内的法院受不受理,这又是另外一回事了。
Windows3。1系统的权限系统虽然简单,但是在用户层,想要对系统层进行操作这是绝对禁止的,因为会威胁到系统的稳定性,只要破坏了系统的某一个关键数据结构,很有可能就会让系统崩溃。
涉及到系统底层的操作,都是通过微软给出的SDK包里面的系统函数进行实现的。这些系统函数,不会乱操作内存里面关键的数据,而是会按照系统程序员所期望的方式实现某些功能。
这样做,既不会影响系统的稳定性和安全性,又可以让编写应用软件的程序员获得想要的功能,还可以简化操作步骤,让他们不用关心底层的运行机制,简直是一举三得的好办法。
当然,也并不是说系统层里面的东西,用户层完全访问不了,那些病毒木马想要实现自己的功能,很大程度上就是利用了系统的漏洞,获得了超过用户层的权限。
不过,他们这个系统,已经被他们经过极度的优化,一些常见漏洞,也基本上给打上了补丁,要想找出这样一个漏洞,还是很困难的。
所以,余波在听到林鸿大言不惭地说“权限要自己动手去拿,不会自动送上门。”的时候,不由冷冷一笑,反驳道:
“你说得倒轻巧,有本事你拿一个看看?”
余波心中还对林鸿有些意见,毕竟正是他的到来,才导致大家人心惶惶,担心自己为之工作了好多年的心血被推倒重来。此外,他也对林鸿轻描淡写的态度很是看不惯,就算你们公司自己编写出了一个控制系统,但是也不能这样信口开河吧?
他们在这个系统上浸淫了这么久,自认为自己对这个系统的了解,只是仅次于那些开发系统的人了。
他当然知道权限要自己去拿,并不会自动送上门,但是,说起来容易做起来难,有些事情是站着说不腰疼,这样的人,他见得多了。
余波认为是林鸿想要在他们领导面前表现自己,才故意这样“鼻孔插大葱”——装象。
林鸿听到他的话,笑了下,没有放在心上,而是对曹兴平和徐直中说道:
“这个情况我之前是遇到过的。很多木马和蠕虫,就是通过重写系统底层的函数来截流数据。这在系统安全领域,有一个专门的名词,叫做‘中间人攻击’。”
中间人攻击,在黑客领域是一种非常古老并且有效的攻击方式。
其本质原理,就是在数据流动的链路上,串接一个攻击者自己的“转发器”,从而达到嗅探窃取数据的目的。
这种情形,就好像将一个水管给截段,然后在上面连接一个自己的转接头,这个转接头是不会影响水管中水流的正常流动的,它只是对水流进行监控,一旦发现水流里面有一条鱼经过,它就负责将这个信息给记录在案,甚至,它还有其他一些比较神奇的功能,例如,将这条鱼替换成一条泥鳅。
而水管两端的人,由于缺乏沟通,根本不知道这些水流在流动的过程中到底发生了什么。
他们不知道自己私下发送的鱼被别人监控了,甚至被人掉包,发送方以为自己发送了一条鱼,而接收方则以为对方发送了一条泥鳅。
在网络领域,这个中间人甚至可以是一台电脑,用户A向用户B发送信息,却被人偷偷地让信息流跑到电脑C上面走了一圈,而AB用户却根本不知道自己的信息已经被人监听了。由于电脑C只是对数据进行复制和备份,完全不对信息进行修改,是被动的行文,所以AB是很难发现这种行为的。
而在单机里面,中间人攻击更多的就是像这次这样,对某个环节或者函数进行接管,相当于在外面另外套了一层,要想访问真实的内容,必须从中间人这里进入。
林鸿的超级蠕虫对数据进行搜集,实际上也是这个原理,从表面上看,已经被感染的系统和原来的系统是根本没有任何差别的,不会影响到数据的正常流动,也不会影响系统的稳定性。
而他们现在的这个雷达控制系统,很显然也是这样,有某一个东西正好接管了他们系统中所调用的一个系统函数,只是,对方在处理那个底层函数的时候,有个地方没有处理好,导致他们在调用这个函数的时候,根本没有调用成功,结果就没有返回值。
徐直中和曹兴平两人对视一眼,然后徐直中问道:“小鸿,你能肯定是这个原因吗?”
林鸿所说的话,通俗易懂,他们也听明白了。
虽然八九不离十,但是为了保险起见,林鸿还是得自己动手验证一下才能打包票。
“这样吧,如果方便的话,我就使用我自己的方式进行验证一下。”他说道。
徐直中稍微想了一下,便点头同意了。
在曹兴平的示意下,余波只好让出了自己的座位。
林鸿坐了上去,然后调出编译器,立刻动手编写一个小工具。
这个小工具非常简单,只有一个功能,那就是持续不断地对之前那个函数进行调用,然后使用内存DUMP的方式,将内存里面的指定数据保存在一个文本文件里面,与此同时,也监测那个函数的返回结果。
接着,林鸿便将余波之前做的过程重新做了一遍,重启,然后进入静默状态,再重新恢复……
一个新的文件便被生成了。
林鸿使用编辑器将其打开,开始分析文本文件里面的内容。
站在林鸿身后,想看他好戏的余波顿时有些傻眼了。
也不知道林鸿是故意的还是怎的,他的动作非常快,写代码也感觉就像是心中早就编写过无数次那样,直接一溜烟地就编写了过去,稍微修复了几个由于疏忽而导致的错误之后,这个小工具便很快就写完了。整个过程,用了不到三分钟的时间。
余波站在身后一直目不