当我将DLL注入现有进程时,DLLMain不会执行任何操作

问题描述 投票:-1回答:1

因此,我试图作弊(出于学习目的),并且我使用《反恐精英全球攻势》作为目标,并且使用了-insecure启动选项,该选项不允许我进入任何安全的服务器因此,我只能在单人游戏中使用作弊功能,不能破坏其他人的游戏。

我使用GuidedHacking的注入器(GH_Injector)将我的DLL注入到游戏进程中。作弊是内部(直接修改内存)]

我已经尝试注入,但是当我出于测试目的注入DLL时,我添加了MessageBox()以在注入后显示,但是没有显示出来。确切地说,什么也没有发生,但是注入了dll,并且确定是因为当我尝试使用其他注入器时,另一个注入器给出了该dll已经被注入的错误(给出占用内存空间的错误代码)

这是我得到的代码:

#include "stdafx.h"

BOOL WINAPI ATTACH() {
    MessageBox(NULL, "test", "test", MB_OK); // This here doesnt show up ever.. But it should
    DWORD dwClient = (DWORD)GetModuleHandle("client_panorama.dll"); // gets the base address of the module (dll) i want
    Beep(750, 100); // used for testing
    while (!GetAsyncKeyState(VK_DELETE)) {
        *(BYTE*)(dwClient + hazedumper::signatures::dwForceJump) = 6; // should jump ingame
    }
    FreeLibraryAndExitThread(NULL, 0); // want to make "uninject" but idk how and im testing
    Beep(750, 500); // used for testing
    return 0;
}

BOOL WINAPI DLLMain(HMODULE hInstanceDLL, DWORD fdwReason, LPVOID lpvReserved) {
    switch (fdwReason) {
    case DLL_PROCESS_ATTACH:
        CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ATTACH, NULL, 0, NULL);
        break;

    case DLL_PROCESS_DETACH:
        break;

    case DLL_THREAD_ATTACH:
        break;

    case DLL_THREAD_DETACH:
        break;
    }
    return TRUE;
}
c++ dll inject dll-injection
1个回答
0
投票
  bool __stdcall DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
  {
    if (dwReason == DLL_PROCESS_ATTACH) {
        DisableThreadLibraryCalls(hInstance);
        CreateThread(nullptr, 0, reinterpret_cast<LPTHREAD_START_ROUTINE>(ATTACH), hInstance, 0, nullptr);
    }
    if (dwReason == DLL_PROCESS_DETACH) {

    }
    return true;
}

CreateThread中,您将NULL用作DllMain的参数,而不是解析实例,在这种情况下为hInstance

© www.soinside.com 2019 - 2024. All rights reserved.