pwn學習日記Day19 《程序員的自我修養》讀書筆記

windows PE/COFF章總結

本章學習了windows下的可執行文件和目標文件格式PE/COFF。PE/COFF文件與ELF文件很是類似,它們都是基於段的結構的二進制文件格式。Windows下最多見的目標文件格式就是COFF文件格式,微軟的編譯器產生的目標文件都是這種格式。COFF文件有一個頗有意思的段叫「.drectve段」,這個段中保存的是編譯器傳遞給連接器的命令行參數,能夠經過這個段實現指定運行庫等功能。Windows下的可執行文件、動態連接庫等都使用PE文件格式,PE文件格式是COFF文件格式的改進版本,增長了PE文件頭、數據目錄等一些結構,使得可以知足程序執行時的需求。程序員

可執行文件的裝載與進程

程序和進程什麼區別

程序(或者狹義上講可執行文件)是一個靜態的概念,它是程序一些預先編譯好的指令和數據集合的一個文件;進程則是一個動態的概念,它是程序運行時的一個過程,不少時候把動態庫叫作運行時也有必定的含義。windows

進程虛擬空間分佈

Linux
32位即4G被劃分紅兩部分服務器

  • 操做系統:0xC0000000到0xFFFFFFFF,共1GB。
  • 進程使用:0x00000000到0xBFFFFFFF,共3GB。

Windows
兩部分各佔2G,能夠經過修改根目錄下的Boot.ini,加上「/3G」參數變成與Linux同樣的劃分。函數

PAE

操做系統提供一個窗口映射的方法,把額外的內存(4G之外)映射到進程地址空間。(Windows AWE;Linux mmap()函數)學習

知識雜項

  • windows下「進程因非法操做須要關閉」或Linux下的「Segmentation fault」不少時候是由於進程訪問了未經容許的地址。
  • PAE:物理地址擴展,是基於x86 的服務器的一種功能,它使運行 Windows Server 2003, Enterprise Edition 和 Windows Server 2003,Datacenter Edition 的計算機能夠支持4GB 以上物理內存。物理地址擴展 (PAE) 容許將最多64GB 的物理內存用做常規的4 KB 頁面,並擴展內核能使用的位數以將物理內存地址從32擴展到36。

參考

《程序員的自我修養》操作系統

相關文章
相關標籤/搜索