通過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 |