裸函数中的动态大小的数组

时间:2012-10-11 11:04:23

标签: c++ windows dll code-injection

好的,这就是交易,我正在将一个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
    }
}

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

1 个答案:

答案 0 :(得分:1)

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

关于注入地址 - 如果你正在谈论挂钩 - 是的,你可以,你需要修改virtual method table。你可以在任何开源游戏hack中找到例子。

如果成员方法不是虚方法且在vtable中不存在,则需要更改 调用 操作码,或者只需输入 jmp xxxxxxxx < / em> 在方法的开头。 查看here了解更多详情