#heap

调试环境 Win7 32bit Windbg IDA Pro 调试代码 准备跟进HeapAlloc看看内存的分配过程。对应的代码如下 64 因为分配过程比较复杂,涉及到多种可能情形,因此按照上述一个简单的程序以此跟进。 简单看一下这个程序,先创建一个私有堆,大小为0xfff,不可扩展,然后尝试申请一个大堆块,观察分配过程。 HeapCreate申请最大大小为0xfff,按照分配的必须是一个页的整数倍,因此扩展为一个普通页(0x1000) 4KB. 65 调用ntdll!RtlAllocateHeap(HANDLE HeapHandle, ULONG Flags, ULONG Size) 会

Read More

windbg 调试来看XpSp3 heap 基本概念 堆 一个进程能有多个堆,+0x58指向堆中的第一个堆段,C++一般用HeapCreate创建,每个堆至少有一个堆段 堆段 一个堆最多有64个堆段,+0x20(FirstEntry)指向堆段中的第一个堆块,C++一般用HeapAlloc创建 堆块 实际的堆内存使用 关于堆的实际分配使用 堆管理器通过Windows虚拟内存管理器分配一大块内存(堆段),这块内存将被分为大小不同的堆块来满足实际的分配。 当一个堆段耗尽所有空间后,堆管理器将创建另一个新的堆段。 堆管理流程 堆管理包括前端堆管理和核心堆层管理两个部分,前端堆管理 主要用于快速的堆

Read More

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×