能力值:
( LV3,RANK:30 )
|
-
-
2 楼
int 3 断掉之后直接单步好像不行。。。
|
能力值:
( 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单步 就飞了。。。求教
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
那个例子有点过时了,而且书上说的很清楚,那就是堆分配和操作系统版本等环境很相关,所以你要复现的话必须按照书上说的环境测试(win 2000),网上csdn的blog有篇文章说的很清楚,你可以搜一下。所以不必过于纠结。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
要看内核的堆分配情况吧, 可以在/proc/slabinfo看到此时系统堆的分配情况.
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
来学学习
|