因此,我试图作弊(出于学习目的),并且我使用《反恐精英全球攻势》作为目标,并且使用了-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;
}
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
。