因此,我试图作弊(出于学习目的),并且我将Counter Strike Global Offensive用作目标,并且使用了-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;
}
答案 0 :(得分: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
)。
答案 1 :(得分:0)
好吧,这是我的一个非常非常愚蠢的错误。我写的所有内容实际上都在工作,但是我的签名被弄乱了DllMain是用大写D和M编写的,其他所有小写字母都由我写成有大写字母L的...我觉得很蠢...