VirtualFreeEx始终返回0,ERROR_INVALID_PARAMETER作为最后一个错误

时间:2013-05-29 03:30:02

标签: c++ winapi

我正在尝试使用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;

0 个答案:

没有答案