首页
社区
课程
招聘
如何动态追踪堆的分配
发表于: 2015-1-6 16:30 3573

如何动态追踪堆的分配

2015-1-6 16:30
3573
刚刚接触溢出,在看0day安全这本书,看到了堆溢出利用的部分。
有一点疑问,书中的例子运行后直接就崩掉了,我想动态的去看堆分配内存、释放内存的过程中的变化(块表、空表)  该怎么搞?

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 27
活跃值: (597)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
int 3 断掉之后直接单步好像不行。。。
2015-1-6 16:48
0
雪    币: 27
活跃值: (597)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
#include "stdafx.h"
#include<stdio.h>
#include<windows.h>
int main(void)
{
        HLOCAL h1,h2,h3,h4,h5,h6;
        HANDLE hp;
        hp=HeapCreate(0,0x1000,0x10000);
        h1=HeapAlloc(hp,HEAP_ZERO_MEMORY,8);
        h2=HeapAlloc(hp,HEAP_ZERO_MEMORY,8);
        h3=HeapAlloc(hp,HEAP_ZERO_MEMORY,8);
        h4=HeapAlloc(hp,HEAP_ZERO_MEMORY,8);
        h5=HeapAlloc(hp,HEAP_ZERO_MEMORY,8);
        h6=HeapAlloc(hp,HEAP_ZERO_MEMORY,8);
       
        _asm int 3
                HeapFree(hp,0,h1);
                HeapFree(hp,0,h3);
                HeapFree(hp,0,h5);

        h1=HeapAlloc(hp,HEAP_ZERO_MEMORY,8);
        return 0;
}

短在int3 那里  之后的指令执行的话  在od里F8单步 就飞了。。。求教
2015-1-6 17:21
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
那个例子有点过时了,而且书上说的很清楚,那就是堆分配和操作系统版本等环境很相关,所以你要复现的话必须按照书上说的环境测试(win 2000),网上csdn的blog有篇文章说的很清楚,你可以搜一下。所以不必过于纠结。
2015-1-7 14:59
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
要看内核的堆分配情况吧, 可以在/proc/slabinfo看到此时系统堆的分配情况.
2015-1-8 17:47
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
来学学习
2015-1-9 09:12
0
游客
登录 | 注册 方可回帖
返回
//