09 2009 档案

摘要: ring3里的API HeapAlloc, HeapFree在Kernel32.dll里实现,最后都转到NTDLL.dll里的RtlAllocHeap函数和RtlFreeHeap函数。ring0里要操作堆直接调用ntdll.exe里的RtlAllocHeap函数和RtlFreeHeap函数。这两处地方的两个函数名字一样,所作事情也基本没差别,但千万记住它们是不同的,一个在ring0,一个在ring...阅读全文
posted @ 2009-09-28 17:42 gussing 阅读(348) | 评论 (0) 编辑
摘要: 严格的说,用户态和内核态都有堆管理相关的内容,两者用的是同一份代码,稍微有些不同的地方就用宏隔开。在windows上写c程序会有不止一个的“堆管理器”介入,比如malloc, free用c runtime的堆管理器;用户态的HeapAlloc,HeadFree等函数用ntdll.dll里的堆管理器;内核态的RtlHeapAlloc,RtlHeapFree等用ntoskrnl...阅读全文
posted @ 2009-09-26 16:49 gussing 阅读(438) | 评论 (0) 编辑