执行编写的“Hello world”,查看其4G内存的分布及其PDE和PTE内容:
1.安装windbg调试器:
Install Debugging Tools for Windows 32-bit Version:
http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx
Install Debugging Tools for Windows 64-bit Versions:
http://www.microsoft.com/whdc/devtools/debugging/install64bit.mspx
2.配置windbg:
(1)从微软官网上下载Symbols:
http://msdl.microsoft.com/download/symbols
解压到相应文件夹,此处解压到f:/symbols
(2)添加环境变量_NT_SYMBOL_PATH:
(3)打开windbg,File->Symbol File Path,填上Symbols下载安装的地址:
(4)File->OpenExecutable->可以选择一个可执行文件进行调试:
!address -summary:
(5)若要进入内核调试,重启windbg,管理员模式运行,File->Kernel Debug:
a.找到目标可执行文件:
b . 页目录基地址:
方法一:
方法二:
(6)节属性与PDE&PTE的关联:
a.使用!address查看:
此处以查看.text节为例:
我们可以看到.text节开始于00401000,属性为60500020:可读+可执行+16字节对齐+包含代码
保护属性为PAGE_EXECUTE_READ(执行并可读),于.text节属性一致
(7)手动修改“hello4”可执行文件的节属性(RWX),然后执行该程序,分析其PDE和PTE内容的变化:
a.在winhex中修改.text节属性:
原属性:60500020,对应于PAGE_EXECUTE_READ
修改为:80500020,可写+16字节对齐+包含代码:
b.重新在windbg中打开hello4.exe,输入!address:
可以看到,保护属性变成了PAGE_WRITECOPY(写时拷贝)。
另:保护模式:Protect值,所有可用的保护包括:PAGE_NOACCESS(不可访问),PAGE_READONLY(只读),PAGE_READWRITE(读写),PAGE_EXECUTE(可执行), PAGE_EXECUTE_READ(执行并可读),PAGE_EXECUTE_READWRITE(执行并可读写),PAGE_WRITECOPY(写时拷贝),PAGE_EXECUTE_WRITECOPY(执行,并写时拷贝), PAGE_GUARD(保护)。