第203章 缓冲区溢出攻击(1/2)
墨莫走向内存大楼二楼的一个房间。从深海脑魔的记忆里知道,这个房间有一个重启这台计算机的地方。
毕竟,外界的情况是复杂的。在一些极端情况下,锁存器中的值会发生反转,也就是原本储存着0,结果变成了1,或者反过来1变成0。
一旦在处理器一些比较重要的寄存器中出现这种情况,那就会死机。
设计者也预料不到会有哪些情况会使这台机器死机,如果出现这种情况,那就需要重启。
在深海脑魔控制这台计算机几个世纪的时间里,它就有上百次自行重启:内存里所有的数据全部丢失,然后对面大楼里的指令寄存器从最初的内存单元开始执行。魔法水晶硬盘里储存的各个程序重新被调出,计算机重启完毕,恢复对机关城的控制。
每次出现这种情况,深海脑魔就会丢失对这台机器的控制。需要等待时机——只有等到机关城内出现紧急情况,需要机关兽出动时,通信程序才会被重新加载入内存,它才能重新夺回系统控制权。
除了自行重启之外,这台机器还可以手动重启。不过,是需要密码的。
这个房间里面也是一样的黑石、魔晶石、水晶线路构成的运算单元。
在房间外有一个黑石方台,台子上有四横四纵16个按键,被一个魔法水晶盖子盖住。
“你想重新启动这台机器?哈哈哈……你这是自寻死路!”深海脑魔自以为看出了墨莫的意图,它在墨莫脑海中的声音显得很高兴:
“看到角落里那堆黑石了吗?”
墨莫看到了,黑石控制台前面确实有一堆破烂不堪的黑石,然后墨莫等待着它的下文。
“那是我控制的黑石机关兽!”深海脑魔说道,
“我控制它来到这里,输入密语,但是合上盖子的瞬间,这个房间里闪烁一阵红光,它就这么碎了,我承认你的精神力很强大,法术也很强大,但是在这儿,你就是个渣!如果你输入了正确的密语,确实可以让我暂时失去控制这台机器的能力,但你要是输错了……哈哈哈!”
对于深海脑魔的叫嚣,墨莫理都没理。脚步没停,走到控制台前。
观察着上面的16个符号。这些符号就是古代林荫人的字母。他们的文字都由这16个字母所组成。估计也正是因为他们的字母正好有16个,才创造般的想到了这样一台计算机的实现。
在这台计算机中,一个基本数据单位也是16个比特。没有字节,只有字。内存上的程序和数据,也是以每16比特为一个单位的。
所以,墨莫猜测,这16个按键,很有可能表示从0到f的16进制数。
按照正常的工作程序,这个控制台是这样工作的:
首先,控制者打开水晶盖子,然后输入密码,再合上盖子,如果输入的密码正确,那么计算机重启;如果不正确,控制台前的那堆黑石碎片,就是下场。
只有一次机会。
但是墨莫从一开始就没打算输入密码重启它,墨莫打算彻底控制这台计算机,就用这16个按键!
经过观察,这台计算机,虽然结构与地球上的同类有所不同,但是基本执行原理还是相同的。
对面处理器大楼里有三个重要的寄存器,分别是指令指针ip,基址指针bp,栈顶指针sp。
其中,ip里面存着的16位二进制数字,永远是需要执行的下一条指令的地址。它是计算机最重要的寄存器。只要控制了ip,那么就控制了这台计算机。
当墨莫打开水晶盖子的时候,计算机首先会把接收这个控制台输入密码的程序调入内存,并把控制权移交给它。
怎么移交呢?
当然就是先把ip的值存入缓冲区,然后再把新程序在内存的位置交给ip。这样就完成了计算机控制权的移交。接下来ip就会从新位置取出指令执行,这些指令就是新程序的指令了。
为什么要先把ip的值压入缓冲区呢?当然是为了,在执行完了新程序之后,能够从缓冲区里取出这个值,ip回到调用新程序之前的地址,接着执行旧程序。
也就是重新将计算机控制权交还给深海脑魔。
bp和sp里面的16位二进制地址,是当前正在执行的程序,它的数据储存在内存中的范围,被称为缓冲区。缓冲区在内存中的位置,距离当前正在执行的位置,很远很远。此刻ip指向二楼,而bp和sp,指向四楼。
当新程序被调用,它的数据的开头位置,也就是bp也会被保存起来,以便执行完了新程序,能够找到这些数据。
这就是一个程序从打开,到关闭的基本过程。
【米娅,把这些符号给我换成数字,我看着眼晕。】
墨莫眼中的16个林荫文字母变成了0到f的十六进制数字。
墨莫一下子打开了水晶盖子。
下一刻,四楼的缓冲区首先发生了变化。bp的值被压进缓冲区保存,sp的值向下移动一格。
本章未完,点击下一页继续阅读。