通过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 | (自身) |