《Windows PE》2.2.2 加载PE文件二

接下来我们将做一个实验,使用OD调试器动态分析已经加载到内存中的PE文件。

实验五:动态分析32位PE文件

使用DTDebug调试器随便打开一个进程,我们以一个32位记事本程序为例,看一下它的低2GB(0~2G)内存空间的分布。

提示

DTDebug.exe调试器是昆山滴水信息技术有限公司开发的一个具有R3访问权限的调试器,可以动态调试分析具有R3权限的普通应用程序。可以在编程达人官网www.bcdaren.com免费下载。

使用DTDebug调试器将一个普通32位PE文件(R3访问权限)加载到内存后,我们只可以观察到0~2GB的虚拟内存空间。

将notepad32.exe拖入调试器,点击工具栏“M”按钮,打开内存映射窗口,如图2-15所示:

图2-15 动态分析32位记事本

       先从整体观察,内存映射窗口显示的虚拟地址范围刚好是低2GB的用户空间。用户空间的前后64KB内存为空,不可访问。因为在32位操作系统的用户空间(低2GB)中,通常会保留一些特殊的区域,其中包括前后各64KB的空间被称为“guard pages”(保护页),它们是不可访问的。这些保护页的存在是为了提高程序的安全性和稳定性。

保护页的作用如下:

●安全性: 保护页的存在可以防止用户进程越界访问。如果用户进程意外或恶意地访问了这些保护页,操作系统会检测到该错误并触发访问异常,使进程崩溃或被终止,从而保护系统的安全性。

●调试和异常处理: 保护页还可以用于调试和异常处理。当用户进程发生异常(如访问无效的内存地址)时,操作系统可以使用这些保护页来收集有关异常的信息,并进行相应的调试和处理操作。

●内存保留: 保护页也可以用于保留一些内存空间,以备将来使用。这样,操作系统可以根据需要动态地分配和管理这些空间,而不需要将其分配给用户进程。

【注意】保护页的大小通常是根据操作系统和硬件架构而定的,并不局限于64KB。这个大小可能会因不同的系统而有所不同。

低2GB虚拟内存空间的分配如表2-3所示:

虚拟内存地址范围

功能

0x0~0xFFFF

拒绝访问区域,用于帮助程序员避免引用错误的指针;试图访问这个区域地址将会导致访问越权。

0x10000~0x7FFEFFFF

进程专用地址空间。

0x7EFDE000~0x7EFDEFFF

用于第一个线程的线程环境块(TEB)。系统会在这一页的前面创建附加的TEB(从地址0x7FFDD000开始向上)。每创建一个线程都会在此区间分配一个线程环境块。

0x7FFDF000~0x7FFDFFFF

进程环境块(PEB)。

0x7FFE0000~0x7FFE0FFF

共享的用户数据页&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值