1

好的,这就是交易,我将一个 DLL 注入目标进程并让它读取它的一些寄存器。问题是,每当调用我的函数时,我必须抓取的内容的大小都会不断变化。

由于我不能使用向量,如果我要存储一个我事先不知道大小的字节数组,我会怎么做?

到目前为止,这是我的代码,显然由于 C3068 而无法编译。

__declspec(naked) void _LocalHandleMessage()
{
    __asm {
        // Here i obviously have to store the data i'm sending to HandlePaquet
        sub esp, __LOCAL_SIZE
        pushad
        pushfd
    }

    {
        DWORD opcode;
        DWORD size;
        std::vector<BYTE> packetContent;
        HandlePaquet(opcode, size, packetContent, true);
    }

    __asm {
        popfd
        popad
        add esp, __LOCAL_SIZE
        retn
    }
}

另外,我希望能够将类成员方法的地址注入目标进程,但似乎不可能,除非我没有足够的google。

4

1 回答 1

1
  • 要存储数据,您有非常简单的方法 - VirtualAlloc
  • 或者您可以尝试在您的 dll 中使用静态向量变量。

关于注入地址-如果您正在谈论挂钩-是的,您可以,您需要修改虚拟方法表。您可以在任何开源游戏破解中找到示例。

如果成员方法不是虚拟方法并且在 vtable 中不存在,则需要更改调用操作码,或者只需将jmp xxxxxxxx放在方法的开头。看这里了解更多详情

于 2012-10-11T11:20:02.983 回答