能力值:
( LV2,RANK:10 )
|
-
-
2 楼
memcpy(h1,shellcode,0x200)正常执行后,由于超过了正常的200字节,导致溢出,把“尾块”中剩余的部分的首部覆盖掉了,变成了别的数据(这要看你的shellcode[]数组中200字节后面的数据是什么了),那么当HeapAlloc分配内存的时候,是从“尾块”的剩余的部分分配的,你需要明白的就是这个分配过程,分配过程就是,关于链表的指针操作过程,记得书的前边说过一句话,“内存的释放、分配、以及合并都能发生dword shoot”,只要涉及到链表操作的都有可能,就是因为这个分配过程,就是你说的卸节点的操作。。。因为这个空表是一个双向链表。
如果只看做一个双向链表的话,你可以想象一下,双向链表添加和删除结点的过程。。。起始这个卸节点操作就是和添加,以及删除节点的操作是一样的。。就是指针的变化。。
可能我表达的不是很清楚吧。。。
|
|
|