通過反彙編看編譯器內存分配

   通過Ollydbg.exe看最普通的hello world這個程序,可以看到虛擬的4G分配

   程序:

   #include<stdio.h>

   int main(void)

{

printf("Hello world!/n");

return 0;

}

 

 

 

 

通過網上還沒有找到這個分配圖的詳細具體信息。問題太多

1.從00000000~0000FFFF 這段內存是用來做什麼的?

2.從1到46這個分配空間的依據是什麼?爲什麼這樣分配?

3.內存的類型是什麼?priv,map,imag各自代表什麼意思?

4.程序的載入程序的入口是哪裏?

 

5.堆,棧,自由變量區,全局靜態區,常量區分配在哪裏?

6.區段及其包含的具體含義

7.755F0000的分配。

8。爲什麼主程序的所有主程序頭,代碼段數據段都是4K一頁,如何更改?

內存分配圖:

NO 地址 大小K 屬主     區段 包含 類型 訪問 初始訪問 已映射爲
1 00010000 64   10000 (自身)     Map  00041004 RW RW  
2 00020000 64   20000 (自身)     Map  00041004 RW RW  
3 0022D000 4   30000       Priv 00021104 RW  保護 RW  
4 0022E000 8   30000     堆棧 於 主線程 Priv 00021104 RW  保護 RW  
5 00230000 16   230000 (自身)     Map  00041002 R R  
6 00240000 4   240000 (自身)     Priv 00021004 RW RW  
7 00250000 412   250000 (自身)     Map  00041002 R R /Device/HarddiskVolume1/Windows/System32/locale.nls
8 002C0000 4   002C0000 (自身)     Priv 00021040 RWE RWE  
9 002D0000 4   002D0000 (自身)     Priv 00021040 RWE RWE  
10 003C0000 12   003C0000 (自身)     Priv 00021004 RW RW  
11 00400000 4 hello 400000 (自身)   PE 文件頭 Imag 01001002 R RWE  
12 00401000 4 hello 400000   .text 代碼 Imag 01001002 R RWE  
13 00402000 4 hello 400000   .data 數據 Imag 01001002 R RWE  
14 00403000 4 hello 400000   .rdata   Imag 01001002 R RWE  
15 00404000 4 hello 400000   .bss   Imag 01001002 R RWE  
16 00405000 4 hello 400000   .idata 輸入表 Imag 01001002 R RWE  
17 00406000 4 hello 400000   .stab   Imag 01001002 R RWE  
18 00407000 4 hello 400000   .stabstr   Imag 01001002 R RWE  
19 00600000 16   600000 (自身)     Priv 00021004 RW RW  
20 755F0000 4 KERNELBA 755F0000 (自身)   PE 文件頭 Imag 01001002 R RWE  
21 755F1000 268 KERNELBA 755F0000   .text 代碼,輸入表,輸出表 Imag 01001002  R RWE  
22 75634000 8 KERNELBA 755F0000   .data 數據 Imag 01001002 R RWE  
23 75636000 4 KERNELBA 755F0000   .rsrc 資源 Imag 01001002 R RWE  
24 75637000 12 KERNELBA 755F0000   .reloc 重定位 Imag 01001002 R RWE  
25 76790000 4 kernel32 76790000 (自身)   PE 文件頭 Imag 01001002 R RWE  
26 76791000 788 kernel32 76790000   .text 代碼,輸入表,輸出表 Imag 01001002 R RWE  
27 76856000 4 kernel32 76790000   .data 數據 Imag 01001002 R RWE  
28 76857000 4 kernel32 76790000   .rsrc 資源 Imag 01001002 R RWE  
29 76858000 48 kernel32 76790000   .reloc 重定位 Imag 01001002 R RWE  
30 76B40000 4 msvcrt 76B40000 (自身)   PE 文件頭 Imag 01001002 R RWE  
31 76B41000 636 msvcrt 76B40000   .text 代碼,輸入表,輸出表 Imag 01001002  R RWE  
32 76BE0000 28 msvcrt 76B40000   .data 數據 Imag 01001002 R RWE  
33 76BE7000 4 msvcrt 76B40000   .rsrc 資源 Imag 01001002 R RWE  
34 76BE8000 16 msvcrt 76B40000   .reloc 重定位 Imag 01001002 R RWE  
35 771F0000 4 ntdll 771F0000 (自身)   PE 文件頭 Imag 01001002 R RWE  
36 771F1000 852 ntdll 771F0000   .text 代碼,輸出表 Imag 01001002 R RWE  
37 772C6000 4 ntdll 771F0000   RT   Imag 01001002 R RWE  
38 772C7000 36 ntdll 771F0000   .data 數據 Imag 01001002 R RWE  
39 772D0000 348 ntdll 771F0000   .rsrc 資源 Imag 01001002 R RWE  
40 77327000 20 ntdll 771F0000   .reloc 重定位 Imag 01001002 R RWE  
41 77430000 4   77430000 (自身)     Imag 01001002 R RWE  
42 7F6F0000 20   7F6F0000 (自身)     Map  00041002 R R  
43 7FFA0000 204   7FFA0000 (自身)     Map  00041002 R R  
44 7FFD5000 4   7FFD5000 (自身)     Priv 00021004 RW RW  
45 7FFDF000 4   7FFDF000 (自身)   數據塊 於 主線程 Priv 00021004  RW RW  
46 7FFE0000 4   7FFE0000 (自身)     Priv 00021002 R R  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章