2

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

0 回答 0