栈缓冲区溢出第一百三十九章
第二天,学校食堂。
三人组又聚共同进餐。在了一起
话已都称赞林鸿的“云南。也完全消失,他们经看不出来,浮肿人脸上的伤痕如果不亚瑟和马修两注意看的白药”非常神奇
疲倦,但眉目计算器,他们一边吃饭有时地看看之间却露出非桌上的候还互相对i-82型,一边不计算器,在他们的桌子然时视而笑,脸上虽常兴奋和自豪的神色。上,摆放着三个t
这三个器,正是已经被成功破解了的计算器!计算
,然来,开始津津有味地玩了几下,调出一个目录了过个计算器,在一个小小迅速上面按吃完之后,马修马后运行开始慢慢从右至左开始己的那其中的程序,见一个右边的黑色长条了起来。只一刷新,上拿起了自移动,马修将计算器侧整个计算器液晶屏顿时
就是馈,所以,德州仪器邮会向公司提交反他在bbs上就将t的问题公司的工程师,他在上进说欢迎大了。,路图纸器的电建议,直接发布在上面寄的资料,面回答了那个人计算昨天,竟然有直接内容。实际上已经意义不大许多用户提出i-82德州仪器并且家提出改
决定,那就是一定要由于提前拿到了图,将计算器破解三人根本没有心思睡出来。的会到来之前上了日常,兴奋之下纸,破解的事情立刻赶在返校舞提觉,他们做了一个重要
瑟负责,等破解出来鸿则负责计算器的破解之后,就移植到设计出一个有的惊喜。意思的软件或者游戏他们分,而林计算器上面,给大家来一个巨大工合作,马修和亚
计算器给拆了开来了箱,将他最终让亚瑟拿具仔细研究帖子的基础,林鸿已经算器有非常大的把握,计算器的硬件结构。由,对照电路图于有了bbs上那些出工了对破解计
最终硬件方面的修改不需要对计算器进行定,并设置的限制枷锁。林鸿确,就完全可以突州仪器公司在固件上破德
n”。一个现象,按照他给这人入一个特殊的模式—复贴很快就被紧接而来户描述了他发现的的这个回复。中,有一个用的其他回复给只有这是因为在其—“debug-不过那个用户的才注意到了他和方式,就可以让个回淹没了,中一个帖子出的几个按键顺序计算器进很少
德州仪调试用的,在这个用户的回帖他非的所有回复都比较关注到计算机这个模式下在开发过程中用来,用户器公司的工程师对计算器用很大的的操作拥有自己的计算器描述的顺序,完整地操。权限。常因为后再将计算器连接面进行了一系列测试,作了一番,然重视,专门结果惊喜地发现,这个模式似乎是按照对方上他对立面林鸿需要对计算器进行破解,所以
可以直个计算器进行入这个模式的方式需要对硬件破解。不通过硬件,仅从软件本林鸿还以为,他完全可以直接这绝对是个好消息,原进行改动,现在有了进接对这上的漏洞就
经过一个晚上的奋战,鸿最终成功了。林
功地往里面写入了自己户操作空间权限的限一个计算制。区溢代码,器里面的栈缓冲突系统对用他找出,从破了固件到了而成的
。程序在运行过程中,为一了临时存取数冲区间为缓般都要分配一些内存据的需要,空间,通常称这些空
数而在缓冲区的结果。据,一旦那和删除操作的,保护统就可能发意想不到些系统是系统中非常重要的数的数据都生崩溃,当然,这个区域一般是可以之外,也有可能出现其他在存在着其他一进行数据存储据区域,存放内核些数据被修改,整个系级别并不严格。
这些系统内核数据区所以保护的域是,用户不能对其进行操作。被严格限制和
人一般要到最后才会被止进入,然后再一试卷,先出。就像一条排队进去,满了之后停以前点歌的人老tv里面点歌系统,先到,还有就才出来。这种数据结构师看入后点是先个一个排去的那个死胡同,大家,生活中也有不少例交的着队出来,先进栈是一种特殊的反而子,例如交数据结构,特是人,最后排在最后面唱。k
工程师在编写程序进行压入,否按理说,德州仪器的的时候,,就个栈已经满了必须停止对其入栈里则就会产生溢出。是需要对压检查的,一旦这再数据长度进行面的
便发生了栈内存溢出。个栈进行长度检查,续压入,于是一直往其中压入数据候不严谨,师编写代码的时鸿而林鸿找到的这于是林忘记对这程,等它满了也不管,继栈缓冲区,正是那些工个
仅仅是bug了,而是生意想不到的后果,成为栈中压入经过最常见的后果就是程序崩溃,黑客利用的漏洞。里面存储的数据是假如这些数据单元通常情况下,这只外的单元一个bu能算是程序的有用数据的话,就会产会被改写,而g,但是当向区之这些溢出便意味着栈缓冲进行设计的数据,就不了可供
覆盖缓长度之后,再将他设计的那个栈中压入计算这些数据里一些无效的数据,精后将其编好了一个小程序,然的当固件系统运行到这的时候,就会成功地调找到用执行他的这个程序长度,等达到一定译成机器码,先是向他确冲区之外的区域,这样据给压入好的数林鸿正是精心设计……进去,让其发生溢出,
林鸿给便被成功攻克了个严密的堡垒。于是,这
看似简单的数据压入过程,够顺五十遍以上和精力,也是无法三言个程序能过林鸿无数复复重他至少反反精确计算栈的长度,,其中所花费的时间利接管固件的运行流程了测试楚的。复了次才找到的,为,实际上却是经而为了能够让自己的这两语描述得清这个过程,说起来
之后,兴奋之下,忘记,幸好他们刚刚睡下不,原本已经瞌睡得睁不己根本不用睡觉,当瑟的房门久开么快就将计算器给破击出来了眼睛的两人顿精神一振,将睡意抛时林鸿将其成功破解,听到他这时就立刻敲响了亚到了九霄云外。了别人不像自
立刻想要看一下破运行在上面的软件。,可是接下来难题来了——没有合适的可解之后的成果又以
学生在学校的软件倾向于编写一学习,而马修则该编写什么,例如可以辅第一个软件功能。亚之前他们两个讨论助个有意思的游戏。倾向于做一个实用性的了很久,始终无法确定瑟比较
两个人的意见不能统一逝,结果什么东辩西都没做出来。断地争,时间就在他们不中流
郁闷的。在机器已经出来了,却有合适的软件,真是没够现
先编修提出,瑟的一致认可。这个时候,马写一个相对比较简单的游戏跑起来再说,得到了林鸿和亚
到计算器中。,最终决定将俄罗斯方块这个游戏移植三人商量了一下
有人美。何一款游戏能够与其媲诺业成功,受到了男女的欢迎,成为一款极988年在美国老少所家阿列克谢*帕基特任之后,立刻获得了巨大的商无穷,令人上瘾。1上市似简单但却变化游戏,没有为经典的大众俄罗斯方块是苏联科学夫一个经典游戏,它看
并不大。编程亚瑟之前在学发过这个游戏,有现成的源代码,移植起来的难度习的时候,曾经独立开
间中。pu的运行输到了计算器存储空器里面执行的文和优化之后,鸿房间,因为亚瑟之前编写的那个将阵地转移到了林环境,将源程序进行简单的修改就将其编译成为了一8件,然后通过数据线传个可在计算于是,他们又他这台机器可以模拟zጣ
,这是很逼的刚开始的几次运行都出正再牛低级错误的,例如就成功,那就太夸张试信息,有针了,就算是写分号之类的变量名称写错,忘记是很正常的对性地进行修改就程序员,有时候也台,如果能一次性据调个平是会犯一些了点问题,但是这行了。常的情况。只要根情况,移植到另外一
、再调编写程序就是这样,调试……试、运行
地和各种错误和bu利通过的那一刻!不断到最终顺g做这斗争,直
罗斯游戏终于顺在进行过十几过程之后调试和传输程序的,亚瑟的俄次不断地来回利地在ti-82上运行了!
。马修第一时间将计过来,然后开始玩了起来算器抢了
。而计算器上有几十个玩俄罗斯方块游戏换,另按键,足够了。,一个键用需要至多五个按键就速外一个键则用来加,只来变可以,三个方向键
马修在玩了一会儿撑到顶,最终挂掉。易就会被就发现,高度太低,很容由于计算器显示屏
度。0度,这样方块下于是,他提出了改长,可以降低难落的路程就可以针方向旋转9大大加方式向顺时进意见,将显示
序进行修改……于是,亚瑟又开始对游戏的源程
是在旁边观看着亚瑟手,他只在整个过程中,林后都没再插编写程序。
试,也学到了看到亚瑟不断修改调是很熟,今天语言进行编写的,林鸿来美国之不编程语言,用得还不少东西。方块程序是用c触这门亚瑟的这个俄罗斯后才开始接
借鉴编程习惯值得写程序的时候,有一些细小的他发现,亚瑟编高代码的可读性点注释、给代码语句多分行缩进,提和学习,例如在关键的地方给……等等。
下来。方块游戏给确定将最终版候,他们终于在将近凌晨五点的时的俄罗斯
亚瑟和马修都疲惫此刻,除了林鸿,不堪,直接倒在床上睡。呼呼大
鸿一人。修都没能去,只有林的晨练,亚瑟和马这天早晨