目标中的 DLL 注入调用地址

逆向工程 C++ dll注入
2021-07-05 13:18:03

我的地址位于目标进程加载的 dll 中。我想使用dll注入来调用这个地址。

现在我的 dll 看起来像这样:

BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
    switch (ul_reason_for_call)
    {
        case DLL_PROCESS_ATTACH:
        {
            MessageBox(NULL, L"Injection Successful", L"TEST:", MB_OK); 
            //Here I'd like to call the address

            break;
        }
        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}

根据我在网上了解到的,存在一些问题:

  • 由于一些我不明白的偏移量,我无法使用调试器 (x64dbg) 中显示的地址。
  • 每次启动程序时地址都是不同的。

我正在使用 Cheat Engine 注入 dll 和 x64dbg 作为调试器。由于我是初学者,非常感谢一些代码。

1个回答

有很多方法可以做你想做的事。

  1. 建议你先导出你要调用的方法,然后用GetProcAddress函数去获取它的地址并调用它。您可以使用 MSDN 中的代码示例;它应该像你的情况一样工作。
  2. 您可以获取 DLL 的加载地址:参见StackOverflow 帖子您需要计算函数的偏移量并将其添加到加载地址。
  3. 您可以使用一些汇编代码获取代码的当前地址。例如,请参阅StackOverflow 帖子同样,您需要计算要调用的函数的偏移量。