我正在尝试使用C ++进行一些DLL注入。但是,我无法清理我的代码,因为VirtualFreeEx总是会失败。
这是我如何做的一个例子
void *stubBase = VirtualAllocEx(
hProcess,
NULL,
MakeDelta(SIZE_T, DllCallStubEnd, DllCall_Stub),
MEM_COMMIT | MEM_RESERVE,
PAGE_EXECUTE_READWRITE);
if( !stubBase )
{
VirtualFreeEx(hProcess, moduleBase, 0, MEM_RELEASE);
delete[] dllBin;
return false;
}
在这种情况下,moduleBase指向有效地址并且成功。但是,免费总是失败。此外,在另一种情况下,我想释放某个内存位置(恢复所有进程后)。我将调用VirtualFreeEx(hProcess,ImageBase,0,MEM_RELEASE),它也会因同样的错误而失败。
在进行类型转换之前,这是我的形象基础:
unsigned long ImageBase = ntHd->OptionalHeader.ImageBase;