重生之乘風而起 第兩千三百五十一章 空操作雪橇

更新:11-15 23:42 作者:二子從周 分類:都市小說

    這個功能可以簡化一些運算,比如邏輯上要給一個數字乘以2然後輸出,在有些時候都不需要運算,只需要將這些數字輸出完後,再在後面填上一個NOP,讓等待填裝的接收區在數字後因此自動填上一個0,就可以實現乘2進位的目的。

    還有一個重要的作用,就是通過NOP指令可以產生一定的延遲功能。

    雖然沒有輸出,但是NOP指令同樣是需要占用計算機的執行時間的,加上循環次數,就可以在相應次數的指令執行時間,讓程序實際上實現「暫停」的功能。

    計算機在執行程序的時候,經常是在共用緩衝區內存儲數據,這個緩衝區常常需要清空操作,等待總線恢復成無數據運行的狀態,巧用NOP指令,就能夠實現這樣的功能。

    然而就是這麼有用的一條指令,被有心人發現了新「用處」。

    在操作系統當中,指令的輸入與返回,是通過堆棧來進行的。

    堆棧大體來講好像一個倉庫,倉庫分作了幾個區域,每個區域用來存放一堆「門牌號」,這樣的門牌號,在單片機系統里叫做「寄存器」,程序調用時,工作方式就是挨著讀取這些門牌號,將這些地址對應的寄存器中內容讀入到棧中,最後將計算結果存放到返回地址當中去。

    這時候就有人想到使壞了,因為堆棧的內容填充是從低地址向高地址進行的,最高的位置就是結果地址。

    要是在低地址區,比如變量區,給變量填充一個巧妙構造的超長字符串,讓這個長字符串超過高地址區,其實就會拿這個變量的後半部分內容,替換掉了返回地址的「門牌」。

    將這個「門牌」設置成某個變量的地址,那麼現在的返回地址就變成了指向這個變量,如果這個變量當中盛放的是惡意代碼,於是這個惡意代碼就被成功地讀取進了系統里。

    這個方式,叫做「堆棧緩衝區溢出」,通過緩衝區溢出,我們能改變程序原有的正常執行流程,去改為執行黑客準備好的惡意代碼。


    這套操作在WINDOWS系統上一用一個準,也是周至他們研發的防火牆和殺毒軟體所保護的重點。

    但是這個問題在UNIX為基礎的系統上卻並不存在,因為UNIX系統對於結果緩衝區的地址分配是隨機的,也就是說其返回結果的地址並不一定就在變量地址的後面,可以被黑客輕易推測到,並且利用緩衝區溢出功能輕易替換。

    四葉草集團的內部系統,其實使用的就是基於UNIX架構的自主系統,服務器版的COS系統。

    不過論壇的信息技術板塊上,有人提出過一個攻擊方法,那就是「nop sled」,翻譯過來就是「空操作雪橇」。

    論文指出,雖然UNIX體系的結果返回地址是隨機的,但是只需要在實際的攻擊代碼前注入很長的nop指令,就可以清出一個很大的空間序列來。

    然後還是用之前的緩衝區溢出方式進行攻擊,只要將程序的控制流指向該序列任意一處,程序計數器逐步加一,直到到達攻擊代碼的存在的地址,並執行。

    這就類似於將之前一個小小的靶子變成了一個巨大的牆,之前需要將箭射中靶子才能完成攻擊,現在只需要將箭射到牆上,箭就會被自動送到牆上掛著的靶子上去。

    從程序的執行上來看,這就好像是通過滑雪橇的方式,最終訪問到雪橇的終點一樣,因此被形象地稱為「空操作雪橇」。

    這個想法從理論上看是可行的,但是在實際操作中卻存在許多難題,首先就是你要有在系統上運行惡意代碼的機會。

    胡天宇他們經過女媧日誌分析,發現是從新版的四葉草瀏覽器開始中招的。

    新版瀏覽器採用的JAVA核心,為了鼓勵大家的研發積極性,四葉草集團還發布了研發工具JDK,包括了Java運行編譯環境,以及一堆java的工具和類庫,並且在不斷地進行擴充。

    有了這個,所有的程序愛好者都可以設計出一些嵌入式軟體,將之嵌入在自己的主頁當中,以便他人訪問的時候發現「驚喜」。

    以前的瀏覽器所看到的網頁都是靜態的,有了這個嵌入式工具後,就能夠將一些炫酷的動畫、小視頻、音樂、動態字體效果嵌入到網頁上,獲得的效果當然



第兩千三百五十一章 空操作雪橇  
相關:  回到山溝去種田  末世:黎明效應  葉輕眉的故事極夜黎明  黎明效應  蘇廚    官場:從一等功臣到省委書記  御獸從零分開始  亮劍:我有一間小賣部  林陽蘇顏  
下面更火
搜"重生之乘風而起"
360搜"重生之乘風而起"
語言選擇