我們知道程序在每次運行的時候地址都是不一樣的,linux之所以有這樣的設(shè)計也許是為了安全性考慮,不利于黑客的攻擊。
我們看一個簡單的程序:


顯然程序每次運行的地址都不一樣!
那么有沒有辦法讓相同程序每次運行的地址都一樣呢?
看到這里你也許會問為什么讓程序每次運行的地址都一樣,這不違背OS設(shè)計的初衷了嗎?是的,這的確違背 linux 內(nèi)核設(shè)計的初衷。但是實際項目中難免不會遇到奇葩的需求,比如有些app由于歷史的原因需要運行在指定地址上,那這時候就需要把地址空間隨機化關(guān)掉。再比如遇到隨機地址crash問題也可以用這種方法debug。
廢話少說,我們看下地址空間隨機化關(guān)掉的方法。

關(guān)掉后我們看下該程序的測試結(jié)果:

哇!地址一樣!
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
Linux
+關(guān)注
關(guān)注
88文章
11684瀏覽量
218581 -
程序
+關(guān)注
關(guān)注
117文章
3838瀏覽量
85063 -
虛擬機
+關(guān)注
關(guān)注
1文章
971瀏覽量
30293
發(fā)布評論請先 登錄
相關(guān)推薦
熱點推薦
虛擬機下載與安裝的步驟有哪些
是一種將計算機硬件虛擬化的技術(shù),它可以在一臺物理計算機上創(chuàng)建一個或多個獨立的虛擬計算機,每個虛擬計算機都有自己的操作系統(tǒng)和應(yīng)用程序,并且獨立
創(chuàng)建ubuntu虛擬機
的存在形式,然后點擊“下一步”完成。指定磁盤文件,這里默認即可。默認點擊“完成”即可。至此,虛擬機創(chuàng)建完成。下一小節(jié)中我們介紹Ubuntu系統(tǒng)在虛擬機中的安裝,其
發(fā)表于 08-10 14:15
虛擬機及Ubuntu安裝步驟介紹
Mini板一些概念虛擬機:相當于將你的電腦的分離出部分資源虛擬出另一臺電腦Ubuntu:可以運行Linux的操作系統(tǒng)虛擬機及Ubuntu安裝步驟
發(fā)表于 12-15 08:58
虛擬機linux怎么編寫程序
虛擬機Linux上編寫程序,包括設(shè)置虛擬機、選擇編程工具、創(chuàng)建和編輯代碼、編譯和運行程序等等。讓我們開始吧! 第一部分:設(shè)置虛擬機
linux虛擬機怎么運行代碼
到虛擬機中,你就可以開始運行代碼了。在Linux中,有多種方式可以運行代碼,下面將介紹幾種常見的方法。 使用終端(Terminal)運行代碼
虛擬機如何運行c程序
虛擬機(Virtual Machine,VM)是一種模擬了物理計算機的軟件,可以在計算機上創(chuàng)建虛擬的硬件平臺,使得用戶可以在其中運行操作系統(tǒng)和應(yīng)用程
怎么安裝linux虛擬機
在計算機領(lǐng)域,虛擬機是一種軟件程序,它允許在主操作系統(tǒng)上運行多個虛擬操作系統(tǒng)。Linux
TECS OpenStack資源池虛擬機網(wǎng)絡(luò)二層地址無法互通的問題處理
某運營商TECS OpenStack使用主機overlay SDN方案組網(wǎng),運維人員在創(chuàng)建虛擬機測試虛擬機網(wǎng)絡(luò)狀態(tài)時發(fā)現(xiàn)問題:在其中一臺主機上創(chuàng)建兩臺同網(wǎng)段虛擬機,
虛擬機:程序在指定地址運行的步驟
評論