Linux系統(tǒng)下程序編譯安全選項(xiàng)技術(shù)的研究與實(shí)現(xiàn)
【文章頁(yè)數(shù)】:76 頁(yè)
【學(xué)位級(jí)別】:碩士
【部分圖文】:
圖2-3?Hello.s文件中的內(nèi)容??第三步:匯編過(guò)程??匯編過(guò)程是將編譯后的hello.s文件轉(zhuǎn)化生成二進(jìn)制文件hello.o的過(guò)程,利??
了匯編代碼。匯編語(yǔ)言對(duì)于一個(gè)軟件程序是非常重要的,它為不同的高級(jí)語(yǔ)??言、不同的編譯器提供了可以通用的語(yǔ)言[5],例如:C語(yǔ)言編譯器和Fortran編??譯器產(chǎn)生的輸出文件用的都是一樣的匯編語(yǔ)言。Hello.s文件中的內(nèi)容如圖2-3??所示。??15??
圖3-1所示,我們可以清楚的看到,程序在進(jìn)行整數(shù)加、減、乘運(yùn)??算時(shí),直接用CPU中的mullw、add、subf指令來(lái)進(jìn)行有符號(hào)整數(shù)的運(yùn)算
0(r1)??ualue?=?0?=?0x0??圖3-l未添加選項(xiàng)驗(yàn)證結(jié)果??當(dāng)再次編譯程序時(shí),添加選項(xiàng)-ftrapv,利用objdump命令,我們?cè)俅尾榭??這個(gè)程序的反匯編,如圖3-2所示,我們可以清楚的看到,程序在進(jìn)行整數(shù)??26??
圖3-3未添加選項(xiàng)的驗(yàn)證結(jié)果??-ftrav,s“123”
小的有符號(hào)整數(shù)時(shí),程序并沒(méi)有發(fā)生整數(shù)溢出的現(xiàn)象,程序因此可以正常運(yùn)??行,輸出正常的結(jié)果123。但若所給的整數(shù)是己經(jīng)超過(guò)了?32位有符號(hào)整數(shù)的最??大值“2147483647(0x7FFFFFFF,2A32-l)”,如圖3.3所示,函數(shù)輸入的參數(shù)s是??“2147483648”時(shí)....
圖3-5加、減、乘指令的程序規(guī)模增加比例與函數(shù)個(gè)數(shù)的關(guān)系??33??
*?nftr?*??對(duì)編譯生成的文件大小用Excel對(duì)其進(jìn)行統(tǒng)計(jì)分析,因ftmpv選項(xiàng)而引起??的含有加、減、乘指令的程序規(guī)模增加比例與函數(shù)個(gè)數(shù)的關(guān)系如表3-4與
本文編號(hào):3975284
本文鏈接:http://sikaile.net/guanlilunwen/ydhl/3975284.html