堆溢出方式.docVIP

  • 2
  • 0
  • 约 8页
  • 2016-12-06 发布于湖北
  • 举报
堆溢出方式

总结windows下堆溢出的三种利用方式 利用RtlAllocHeap 这是ISNO提到的,看这个例子 main (int argc, char *argv[]) { char *buf1, *buf2; char s[] = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaax03x00x05x00x00x01x08x00x11x11x11x11x21x21x21x21; buf1 = (char*)malloc (32); /* 分配两块内存 */ memcpy (buf1, s, 32+16); /* 这里多复制16个字节 */ buf2 = (char*)malloc (16); free (buf1); free (buf2); return 0; } 在给buf1完成malloc之后,返回的地址(buf1)是个指针,指向的内存分配情况是这样 buf1的管理结构(8bytes)|buf1真正可操作空间(32bytes)|下一个空闲堆的管理结构(8bytes)|两个双链表指针(8bytes) 在给buf2完成malloc之后,buf1指向的内存分配情况是这样 buf1的管理结构(8bytes)|buf1真正可操作空间(32bytes)|buf2的管理结构(8bytes)|buf2真正可操作空间(16bytes

文档评论(0)

1亿VIP精品文档

相关文档