日本精品aⅴ一区二区三区|国产欧美一二三区|国产乱码精品精|国产精品电影在线免费

      1. <blockquote id="utafg"><th id="utafg"></th></blockquote>
    1. <div id="utafg"></div>
        <blockquote id="utafg"><th id="utafg"></th></blockquote>

        <menuitem id="utafg"></menuitem>
      1. 您現(xiàn)在的位置是:首頁 >生活 > 2024-02-29 19:17:47 來源:

        溢出效應(yīng)(溢出)

        導(dǎo)讀 大家好,我是小夏,我來為大家解答以上問題。溢出效應(yīng),溢出很多人還不知道,現(xiàn)在讓我們一起來看看吧!數(shù)據(jù)溢出在計(jì)算機(jī)中,當(dāng)要表示的數(shù)據(jù)...

        大家好,我是小夏,我來為大家解答以上問題。溢出效應(yīng),溢出很多人還不知道,現(xiàn)在讓我們一起來看看吧!

        數(shù)據(jù)溢出

        在計(jì)算機(jī)中,當(dāng)要表示的數(shù)據(jù)超出計(jì)算機(jī)所使用的數(shù)據(jù)的表示范圍時(shí),則產(chǎn)生數(shù)據(jù)的溢出。

        溢出原因

        數(shù)據(jù)類型超過了計(jì)算機(jī)字長的界限就會出現(xiàn)數(shù)據(jù)溢出的情況。導(dǎo)致內(nèi)存溢出問題的原因有很多,比如:

        (1) 使用非類型安全(non-type-safe)的語言如 C/C++ 等。

        (2) 以不可靠的方式存取或者復(fù)制內(nèi)存緩沖區(qū)。

        (3)編譯器設(shè)置的內(nèi)存緩沖區(qū)太靠近關(guān)鍵數(shù)據(jù)結(jié)構(gòu)。

        因素分析

        1.內(nèi)存溢出問題是 C 語言或者 C++ 語言所固有的缺陷,它們既不檢查數(shù)組邊界,又不檢查類型可靠性(type-safety)。眾所周知,用 C/C++ 語言開發(fā)的程序由于目標(biāo)代碼非常接近機(jī)器內(nèi)核,因而能夠直接訪問內(nèi)存和寄存器,這種特性大大提升了 C/C++ 語言代碼的性能。只要合理編碼,C/C++應(yīng)用程序在執(zhí)行效率上必然優(yōu)于其它高級語言。然而,C/C++ 語言導(dǎo)致內(nèi)存溢出問題的可能性也要大許多。其他語言也存在內(nèi)存溢出問題,但它往往不是程序員的失誤,而是應(yīng)用程序的運(yùn)行時(shí)環(huán)境出錯(cuò)所致。

        2. 當(dāng)應(yīng)用程序讀取用戶(也可能是惡意攻擊者)數(shù)據(jù),試圖復(fù)制到應(yīng)用程序開辟的內(nèi)存緩沖區(qū)中,卻無法保證緩沖區(qū)的空間足夠時(shí)(換言之,假設(shè)代碼申請了 N 字節(jié)大小的內(nèi)存緩沖區(qū),隨后又向其中復(fù)制超過 N 字節(jié)的數(shù)據(jù))。內(nèi)存緩沖區(qū)就可能會溢出。想一想,如果你向 12 盎司的玻璃杯中倒入 16 盎司水,那么多出來的 4 盎司水怎么辦?當(dāng)然會滿到玻璃杯外面了!

        3. 最重要的是,C/C++編譯器開辟的內(nèi)存緩沖區(qū)常常鄰近重要的數(shù)據(jù)結(jié)構(gòu)。假設(shè)某個(gè)函數(shù)的堆棧緊接在在內(nèi)存緩沖區(qū)后面時(shí),其中保存的函數(shù)返回地址就會與內(nèi)存緩沖區(qū)相鄰。此時(shí),惡意攻擊者就可以向內(nèi)存緩沖區(qū)復(fù)制大量數(shù)據(jù),從而使得內(nèi)存緩沖區(qū)溢出并覆蓋原先保存于堆棧中的函數(shù)返回地址。這樣,函數(shù)的返回地址就被攻擊者換成了他指定的數(shù)值;一旦函數(shù)調(diào)用完畢,就會繼續(xù)執(zhí)行“函數(shù)返回地址”處的代碼。非但如此,C++ 的某些其它數(shù)據(jù)結(jié)構(gòu),比如 v-table 、例外事件處理程序、函數(shù)指針等,也可能受到類似的攻擊。

        本文到此講解完畢了,希望對大家有幫助。