黃金屋中文-免費小說,文字版,txt下載

 
  黃金屋首頁| 總點擊排行| 周點擊排行| 月點擊排行 | 總搜藏排行 繁體中文版| 收藏黃金屋| 設為首頁
 
黃金屋中文,黃金書屋 黃金屋中文,黃金書屋
首 頁 手機版 最新章節(jié) 玄幻·奇幻 武俠·仙俠 都市·言情 歷史·軍事 游戲·競技 科幻·靈異 全本·全部 移動版 書架  
  文章查詢:         熱門關鍵字: 道君 大王饒命  神話紀元  飛劍問道  重生似水青春  
黃金屋中文 >> 超腦黑客  >>  目錄 >> 第一百三十九章 棧緩沖區(qū)溢出

第一百三十九章 棧緩沖區(qū)溢出

作者:瘋狂小強  分類: 都市 | 都市生活 | 瘋狂小強 | 超腦黑客 | 更多標簽...
 
請記住本站域名: 黃金屋

超腦黑客 第一百三十九章 棧緩沖區(qū)溢出

第一百三十九章

棧緩沖區(qū)溢出

第二天,學校食堂。

sam三人組又聚在了一起共同進餐。

亞瑟和馬修兩人臉上的傷痕如果不注意看的話已經看不出來,浮腫也完全消失,他們都稱贊林鴻的“云南白藥”非常神奇。

在他們的桌子上,擺放著三個ti82型計算器,他們一邊吃飯,一邊不時地看看桌上的計算器,有時候還互相對視而笑,臉上雖然疲倦,但眉目之間卻露出非常興奮和自豪的神色。

這三個計算器,正是已經被成功破解了的計算器!

迅速吃完之后,馬修馬上拿起了自己的那個計算器,在上面按了幾下,調出一個目錄,然后運行其中的程序,整個計算器液晶屏頓時一刷新,只見一個右邊一個小小的黑色長條開始慢慢從右至左開始移動,馬修將計算器側了過來,開始津津有味地玩了起來。

昨天,竟然有直接在bbs上就將ti82計算器的電路圖紙直接發(fā)布在上面,所以,德州儀器郵寄的資料,實際上已經意義不大了。那個人就是德州儀器公司的工程師,他在上面回答了許多用戶提出的問題,并且說歡迎大家提出改進建議,他會向公司提交反饋內容。

由于提前拿到了圖紙,破解的事情立刻提上了日常,興奮之下的三人根本沒有心思睡覺,他們做了一個重要決定,那就是一定要趕在返校舞會到來之前,將計算器破解出來。

他們分工合作,馬修和亞瑟負責設計出一個有意思的軟件或者游戲,而林鴻則負責計算器的破解,等破解出來之后,就移植到計算器上面,給大家來一個巨大的驚喜。

由于有了bbs上那些帖子的基礎,林鴻已經對破解計算器有了非常大的把握,他最終讓亞瑟拿出工具箱,將計算器給拆了開來,對照電路圖仔細研究了計算器的硬件結構。

最終林鴻確定,并不需要對計算器進行硬件方面的修改,就完全可以突破德州儀器公司在固件上設置的限制枷鎖。

這是因為在其中一個帖子中,有一個用戶描述了他發(fā)現(xiàn)的一個現(xiàn)象,按照他給出的幾個按鍵順序和方式,就可以讓計算器進入一個特殊的模式——“debugn”。不過那個用戶的這個回復貼很快就被緊接而來的其他回復給淹沒了,只有很少人才注意到了他的這個回復。

因為林鴻需要對計算器進行破解,所以他對立面的所有回復都比較關注。這個用戶的回帖他非常重視,專門用自己的計算器按照對方描述的順序,完整地操作了一番,然后再將計算器連接到計算機上面進行了一系列測試,結果驚喜地發(fā)現(xiàn),這個模式似乎是德州儀器公司的工程師在開發(fā)過程中用來調試用的,在這個模式下,用戶對計算器的操作擁有很大的權限。

這絕對是個好消息,原本林鴻還以為需要對硬件進行改動,現(xiàn)在有了進入這個模式的方式,他完全可以直接不通過硬件,僅從軟件上的漏洞就可以直接對這個計算器進行破解。

經過一個晚上的奮戰(zhàn),林鴻最終成功了。

他找到了一個計算器里面的棧緩沖區(qū)溢出,從而成功地往里面寫入了自己的代碼,突破了固件系統(tǒng)對用戶操作空間權限的限制。

程序在運行過程中,為了臨時存取數(shù)據(jù)的需要,一般都要分配一些內存空間,通常稱這些空間為緩沖區(qū)。

這個區(qū)域一般是可以進行數(shù)據(jù)存儲和刪除操作的,保護級別并不嚴格。而在緩沖區(qū)之外,在存在著其他一些系統(tǒng)內核數(shù)據(jù)區(qū)域,存放的數(shù)據(jù)都是系統(tǒng)中非常重要的數(shù)據(jù),一旦那些數(shù)據(jù)被修改,整個系統(tǒng)就可能發(fā)生崩潰,當然,也有可能出現(xiàn)其他意想不到的結果。

所以這些系統(tǒng)內核數(shù)據(jù)區(qū)域是被嚴格限制和保護的,用戶不能對其進行操作。

棧是一種特殊的數(shù)據(jù)結構,特點是先入后出。就像一條死胡同,大家排隊進去,滿了之后停止進入,然后再一個一個排著隊出來,先進去的那個人,最后才出來。這種數(shù)據(jù)結構生活中也有不少例子,例如交試卷,先交的人一般要到最后才會被老師看到,還有就是以前ktv里面點歌系統(tǒng),先點歌的人,反而排在最后面唱。

按理說,德州儀器的工程師在編寫程序的時候,是需要對壓入棧里面的數(shù)據(jù)長度進行檢查的,一旦這個棧已經滿了,就必須停止對其再進行壓入,否則就會產生溢出。

而林鴻找到的這個棧緩沖區(qū),正是那些工程師編寫代碼的時候不嚴謹,忘記對這個棧進行長度檢查,于是林鴻一直往其中壓入數(shù)據(jù),等它滿了也不管,繼續(xù)壓入,于是便發(fā)生了棧內存溢出。

溢出便意味著棧緩沖區(qū)之外的單元會被改寫,而假如這些數(shù)據(jù)單元里面存儲的數(shù)據(jù)是有用數(shù)據(jù)的話,就會產生意想不到的后果,最常見的后果就是程序崩潰,通常情況下,這只能算是程序的一個bug,但是當向這些棧中壓入經過進行設計的數(shù)據(jù),就不僅僅是bug了,而是成為了可供黑客利用的漏洞。

林鴻正是精心設計好了一個小程序,然后將其編譯成機器碼,先是向他找到的那個棧中壓入一些無效的數(shù)據(jù),精確計算這些數(shù)據(jù)的長度,等達到一定長度之后,再將他設計好的數(shù)據(jù)給壓入進去,讓其發(fā)生溢出,覆蓋緩沖區(qū)之外的區(qū)域,這樣當固件系統(tǒng)運行到這里的時候,就會成功地調用執(zhí)行他的這個程序……

于是,這個嚴密的堡壘便被林鴻給成功攻克了。

這個過程,說起來看似簡單,實際上卻是經過林鴻無數(shù)次測試才找到的,為了精確計算棧的長度,他至少反反復復重復了五十遍以上的數(shù)據(jù)壓入過程,而為了能夠讓自己的這個程序能夠順利接管固件的運行流程,其中所花費的時間和精力,也是無法三言兩語描述得清楚的。

林鴻將其成功破解之后,興奮之下,忘記了別人不像自己根本不用睡覺,當時就立刻敲響了亞瑟的房門,幸好他們剛剛睡下不久,聽到他這么快就將計算器給破擊出來了,原本已經瞌睡得睜不開眼睛的兩人頓時精神一振,將睡意拋到了九霄云外。

立刻想要看一下破解之后的成果,可是接下來難題又來了——沒有合適的可以運行在上面的軟件。

之前他們兩個討論了很久,始終無法確定第一個軟件該編寫什么功能。亞瑟比較傾向于做一個實用性的軟件,例如可以輔助學生在學校的學習,而馬修則傾向于編寫一個有意思的游戲。

兩個人的意見不能統(tǒng)一,時間就在他們不斷地爭辯中流逝,結果什么東西都沒做出來。

現(xiàn)在機器已經出來了,卻沒有合適的軟件,真是夠郁悶的。

這個時候,馬修提出,先編寫一個相對比較簡單的游戲跑起來再說,得到了林鴻和亞瑟的一致認可。

三人商量了一下,最終決定將俄羅斯方塊這個游戲移植到計算器中。

俄羅斯方塊是蘇聯(lián)科學家阿列克謝帕基特諾夫一個經典游戲,它看似簡單但卻變化無窮,令人上癮。1988年在美國上市之后,立刻獲得了巨大的商業(yè)成功,受到了男女老少所有人的歡迎,成為一款極為經典的大眾游戲,沒有任何一款游戲能夠與其媲美。

亞瑟之前在學習編程的時候,曾經獨立開發(fā)過這個游戲,有現(xiàn)成的源代碼,移植起來的難度并不大。

于是,他們又將陣地轉移到了林鴻房間,因為他這臺機器可以模擬z80cpu的運行環(huán)境,將亞瑟之前編寫的那個源程序進行簡單的修改和優(yōu)化之后,就將其編譯成為了一個可在計算器里面執(zhí)行的文件,然后通過數(shù)據(jù)線傳輸?shù)搅擞嬎闫鞔鎯臻g中。

剛開始的幾次運行都出了點問題,但是這是很正常的情況,移植到另外一個平臺,如果能一次性就成功,那就太夸張了,就算是再牛逼的程序員,有時候也是會犯一些低級錯誤的,例如變量名稱寫錯,忘記寫分號之類的,這是很正常的情況。只要根據(jù)調試信息,有針對性地進行修改就行了。

編寫程序就是這樣,調試、運行、再調試……

不斷地和各種錯誤和bug做這斗爭,直到最終順利通過的那一刻!

在進行過十幾次不斷地來回調試和傳輸程序的過程之后,亞瑟的俄羅斯游戲終于順利地在ti82上運行了!

馬修第一時間將計算器搶了過來,然后開始玩了起來。

玩俄羅斯方塊游戲,只需要至多五個按鍵就可以,三個方向鍵,一個鍵用來變換,另外一個鍵則用來加速。而計算器上有幾十個按鍵,足夠了。

馬修在玩了一會兒就發(fā)現(xiàn),由于計算器顯示屏高度太低,很容易就會被撐到頂,最終掛掉。

于是,他提出了改進意見,將顯示方式向順時針方向旋轉90度,這樣方塊下落的路程就可以大大加長,可以降低難度。

于是,亞瑟又開始對游戲的源程序進行修改……

在整個過程中,林后都沒再插手,他只是在旁邊觀看著亞瑟編寫程序。

亞瑟的這個俄羅斯方塊程序是用c語言進行編寫的,林鴻來美國之后才開始接觸這門編程語言,用得還不是很熟,今天看到亞瑟不斷修改調試,也學到了不少東西。

他發(fā)現(xiàn),亞瑟編寫程序的時候,有一些細小的編程習慣值得借鑒和學習,例如在關鍵的地方給點注釋、給代碼語句多分行縮進,提高代碼的可讀性……等等。

在將近凌晨五點的時候,他們終于將最終版的俄羅斯方塊游戲給確定下來。

此刻,除了林鴻,亞瑟和馬修都疲憊不堪,直接倒在床上呼呼大睡。

這天早晨的晨練,亞瑟和馬修都沒能去,只有林鴻一人。!


請記住本站域名: 黃金屋

快捷鍵: 上一章("←"或者"P")    下一章("→"或者"N")    回車鍵:返回書頁
上一章  |  超腦黑客目錄  |  下一章
超腦黑客 手機網(wǎng)頁版
瀏覽記錄

字母索引: A |  B |  C |  D |  E |  F |  G |  H |  J |  K |  L |  M |  N |  P |  Q |  R |  S |  T |  W |  X |  Y |  Z


頁面執(zhí)行時間: 0.0478559
主站蜘蛛池模板: 佛山市| 乡宁县| 山西省| 崇阳县| 调兵山市| 连平县| 海伦市| 澄城县| 长兴县| 克拉玛依市| 荣昌县| 崇文区| 南平市| 金溪县| 琼结县| 武平县| 炎陵县| 怀集县| 天峻县| 岢岚县| 沾益县| 略阳县| 杂多县| 抚顺县| 莲花县| 浑源县| 商南县| 武宣县| 高清| 秦皇岛市| 香河县| 石棉县| 新泰市| 庆安县| 丰镇市| 兰考县| 肃宁县| 汉寿县| 苏尼特左旗| 高雄市| 弥渡县|