友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
小说一起看 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

超脑黑客-第125章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




    亚瑟比较期待着一点,用他的话来说,他甚至希望这个计算器可以进行联网,从而实现入侵。当然,联网根本不现实,因为计算器的硬件已经彻底将其限囘制住了。倒是它自身所带的那个红囘外线数据交换功能有点意思,理论上来说,可以实现某种意义上的联机网络。

    第二点是最关键的一点,那就是可以在其中运行游戏!这一点才是马修最为期待的功能。

    这个计算器有一个液晶显示屏,大小为96x⑥4像素,完全可以显示一些比较简单的图形了。

    马修希望能够在其中移植一些掌上游戏机或者计算机中的游戏。

    当然,更理想的是,由他来亲自设计几个游戏,然后将其编写出来,再植入到计算器中……

    一想到破囘解之后的场景,马修和亚瑟就对未来充满希望。

    与此同时,马修和亚瑟通囘过这件事情对林鸿的硬件技术有了一个比较深刻的认知,在这点上,他们两个是无论如何都比不上的。马修擅长的是游戏方面的东西,包括游戏的策划和设计,他曾经设计了一款街机娱乐游戏,后来卖给了游戏公囘司,获得了一笔不小的收入。而亚瑟擅长的则是软件编程和网络方面的内容。

    于是,在马修的提议下,一个名为“SAM”的三人项目小组诞生了,这个名字是以他们三人名字的首字母而命名的。S表示Stone,A则代囘表亚瑟,M则是马修。因为林鸿是这个项目的发起者,所以排在前面。

    不过,马修和亚瑟并不知道,林鸿除了硬件知识功底扎实,其实他的软件编程能力也相当不错,他缺少的只是相关知识的积累而已。(孝孝提供)

第一百三十九章 栈缓冲区溢出

    第二天,学校食堂。

    SAM三人组又聚在了一起共同进餐。

    亚瑟和马修两人脸上的伤痕如果不注意看的话已经看不出来,浮肿也完全消失,他们都称赞林鸿的“云南白药”非常神奇。

    在他们的桌子上,摆放着三个TI…82型计算器,他们一边吃饭,一边不时地看看桌上的计算器,有时候还互相对视而笑,脸上虽然疲倦,但眉目之间却露出非常兴奋和自豪的神色。

    这三个计算器,正是已经被成功破解了的计算器!

    迅速吃完之后,马修马上拿起了自己的那个计算器,在上面按了几下,调出一个目录,然后运行其中的程序,整个计算器液晶屏顿时一刷新,只见一个右边一个小小的黑色长条开始慢慢从右至左开始移动,马修将计算器侧了过来,开始津津有味地玩了起来。

    昨天,竟然有直接在BBS上就将TI…82计算器的电路图纸直接发布在上面,所以,德州仪器邮寄的资料,实际上已经意义不大了。那个人就是德州仪器公司的工程师,他在上面回答了许多用户提出的问题,并且说欢迎大家提出改进建议,他会向公司提交反馈内容。

    由于提前拿到了图纸,破解的事情立刻提上了日常,兴奋之下的三人根本没有心思睡觉,他们做了一个重要决定,那就是一定要赶在返校舞会到来之前,将计算器破解出来。

    他们分工合作,马修和亚瑟负责设计出一个有意思的软件或者游戏,而林鸿则负责计算器的破解,等破解出来之后,就移植到计算器上面,给大家来一个巨大的惊喜。

    由于有了BBS上那些帖子的基础,林鸿已经对破解计算器有了非常大的把握,他最终让亚瑟拿出工具箱,将计算器给拆了开来,对照电路图仔细研究了计算器的硬件结构。

    最终林鸿确定,并不需要对计算器进行硬件方面的修改,就完全可以突破德州仪器公司在固件上设置的限制枷锁。

    这是因为在其中一个帖子中,有一个用户描述了他发现的一个现象,按照他给出的几个按键顺序和方式,就可以让计算器进入一个特殊的模式——“DEBUG…N”。不过那个用户的这个回复贴很快就被紧接而来的其他回复给淹没了,只有很少人才注意到了他的这个回复。

    因为林鸿需要对计算器进行破解,所以他对立面的所有回复都比较关注。这个用户的回帖他非常重视,专门用自己的计算器按照对方描述的顺序,完整地操作了一番,然后再将计算器连接到计算机上面进行了一系列测试,结果惊喜地发现,这个模式似乎是德州仪器公司的工程师在开发过程中用来调试用的,在这个模式下,用户对计算器的操作拥有很大的权限。

    这绝对是个好消息,原本林鸿还以为需要对硬件进行改动,现在有了进入这个模式的方式,他完全可以直接不通过硬件,仅从软件上的漏洞就可以直接对这个计算器进行破解。

    经过一个晚上的奋战,林鸿最终成功了。

    他找到了一个计算器里面的栈缓冲区溢出,从而成功地往里面写入了自己的代码,突破了固件系统对用户操作空间权限的限制。

    程序在运行过程中,为了临时存取数据的需要,一般都要分配一些内存空间,通常称这些空间为缓冲区。

    这个区域一般是可以进行数据存储和删除操作的,保护级别并不严格。而在缓冲区之外,在存在着其他一些系统内核数据区域,存放的数据都是系统中非常重要的数据,一旦那些数据被修改,整个系统就可能发生崩溃,当然,也有可能出现其他意想不到的结果。

    所以这些系统内核数据区域是被严格限制和保护的,用户不能对其进行操作。

    栈是一种特殊的数据结构,特点是先入后出。就像一条死胡同,大家排队进去,满了之后停止进入,然后再一个一个排着队出来,先进去的那个人,最后才出来。这种数据结构生活中也有不少例子,例如交试卷,先交的人一般要到最后才会被老师看到,还有就是以前KTV里面点歌系统,先点歌的人,反而排在最后面唱。…;

    按理说,德州仪器的工程师在编写程序的时候,是需要对压入栈里面的数据长度进行检查的,一旦这个栈已经满了,就必须停止对其再进行压入,否则就会产生溢出。

    而林鸿找到的这个栈缓冲区,正是那些工程师编写代码的时候不严谨,忘记对这个栈进行长度检查,于是林鸿一直往其中压入数据,等它满了也不管,继续压入,于是便发生了栈内存溢出。

    溢出便意味着栈缓冲区之外的单元会被改写,而假如这些数据单元里面存储的数据是有用数据的话,就会产生意想不到的后果,最常见的后果就是程序崩溃,通常情况下,这只能算是程序的一个BUG,但是当向这些栈中压入经过进行设计的数据,就不仅仅是BUG了,而是成为了可供黑客利用的漏洞。

    林鸿正是精心设计好了一个小程序,然后将其编译成机器码,先是向他找到的那个栈中压入一些无效的数据,精确计算这些数据的长度,等达到一定长度之后,再将他设计好的数据给压入进去,让其发生溢出,覆盖缓冲区之外的区域,这样当固件系统运行到这里的时候,就会成功地调用执行他的这个程序……

    于是,这个严密的堡垒便被林鸿给成功攻克了。

    这个过程,说起来看似简单,实际上却是经过林鸿无数次测试才找到的,为了精确计算栈的长度,他至少反反复复重复了五十遍以上的数据压入过程,而为了能够让自己的这个程序能够顺利接管固件的运行流程,其中所花费的时间和精力,也是无法三言两语描述得清楚的。

    林鸿将其成功破解之后,兴奋之下,忘记了别人不像自己根本不用睡觉,当时就立刻敲响了亚瑟的房门,幸好他们刚刚睡下不久,听到他这么快就将计算器给破击出来了,原本已经瞌睡得睁不开眼睛的两人顿时精神一振,将睡意抛到了九霄云外。

    立刻想要看一下破解之后的成果,可是接下来难题又来了——没有合适的可以运行在上面的软件。

    之前他们两个讨论了很久,始终无法确定第一个软件该编写什么功能。亚瑟比较倾向于做一个实用性的软件,例如可以辅助学生在学校的学习,而马修则倾向于编写一个有意思的游戏。

    两个人的意见不能统一,时间就在他们不断地争辩中流逝,结果什么东西都没做出来。

    现在机器已经出来了,却没有合适的软件,真是够郁闷的。

    这个时候,马修提出,先编写一个相对比较简单的游戏跑起来再说,得到了林鸿和亚瑟的一致认可。

    三人商量了
返回目录 上一页 下一页 回到顶部 1 1
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!