日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Pwn入门之ELF文件

發布時間:2023/12/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pwn入门之ELF文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ? ELF(Executable Linkable Format)文件為Linux下的可執行文件,對標Windows下的PE文件(而非exe,具體可自行查閱資料了解),我們做pwn的題目需要了解其中的ELF頭,Section(節),Segment(段)即可。

? ? ? ? ELF文件頭主要包含了程序運行的計算機框架,程序入口等信息。在Linux終端我們可以使用"readelf -h"讀取相應的內容。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? ? ? ELF文件由多個節(有時也稱段)構成,其中存放著各種數據,不同的數據在不同的區域,而且賦予使用者的權限也不相同。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ●.text節:代碼段,存放著程序運行所需的所有代碼,這部分區域的大小在程序運行前就已經確定,并且內存區域通常屬于只讀?,在代碼段中,也有可能包含一些只讀的常數變量,例如字符串常量等。?

? ? ? ?●.data節:數據段,通常是指用來存放程序中已初始化的全局變量的一塊內存區域。數據段屬于靜態內存分配,所以有初值的全局變量和static變量在data區,可讀可寫

? ? ? ?●.rdata節:只讀數據段,是用來存放只讀實始化變量的,當我們在源程序中的變量前面加了const后,編譯器知道個字符串是永遠不會改變的,或說是只讀的,所以將其分配到.rdata段中,在內存區域通常屬于只讀。

? ? ? ●.bss段:用于存放程序的可修改數據,與.data不同的是這些數據沒有被初始化(或者初始值為0),這些數據沒有被初始化,所以沒有占用ELF文件空間,當程序開始執行后,系統才會申請一塊空內存給bss段。

? ? ? ●.plt和.got段:這兩段共同承擔著調用程序動態鏈接庫中函數調用的責任,程序想要調用動態鏈接庫中的外部函數時必須要要現在兩個表中找到函數的真實地址之后才能實現跳轉和調用,這個在后面的學習中會深入講解。

使用"readelf -S?"可查看每個段的詳細信息。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

出于安全,程序中一般不會存在既可寫又可執行的段,因為這樣不法分子很容易就能控制程序。

總結

以上是生活随笔為你收集整理的Pwn入门之ELF文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。