-
-
[旧帖]
[求助]VirtualFree后 loadLibrary失败....
0.00雪花
-
发表于:
2009-6-19 18:20
4291
-
[旧帖] [求助]VirtualFree后 loadLibrary失败....
0.00雪花
大家好...
我碰到个问题..需要对WINDOWS内存机制比较熟悉的朋友指点..
情况是这样...
我将系统DLL读入内存(比如kernel32)-----是通过VirtualAlloc分配的内存
代码大意如下:
code = (unsigned char *)VirtualAlloc(NULL,
SizeOfImage,
MEM_RESERVE,
PAGE_READWRITE);
VirtualAlloc(code,
SizeOfImage,
MEM_COMMIT,
PAGE_READWRITE);
根据调试,分配的这片内存地址大概是:00EA1000,大小大概是01D00000
之后对这片内存做一系列处理....
然后我将这片内存VirtualFree掉
VirtualFree(Base, 0, MEM_RELEASE);
之后,程序进入下一步,却在LoadLibrary处出错,...
调试显示原因是00EA1210不可读..显然,是因为这片内存被我VirtualFree掉的缘故.
但是我很奇怪...这片内存本来就是我VirtualAlloc得到的,VirtualFree掉理所当然.
Loadlibrary如果要使用这个地址的内存,应该自己去VirtualAlloc得到.
我将VirtualFree的代码去掉,程序能运行--至少不崩溃.
为什么会这样?能解释一下么?
[课程]Linux pwn 探索篇!