1+ // dllmain.cpp : Defines the entry point for the DLL application.
2+ #include " pch.h"
3+
4+ #define TARGET_MODULE L" app.exe"
5+
6+ DWORD WINAPI MainThread (HMODULE hModule)
7+ {
8+ AllocConsole ();
9+ FILE * f;
10+ freopen_s (&f, " CONOUT$" , " w" , stdout);
11+
12+ printf (" " );
13+
14+ // Sleep(2000);
15+ // FreeConsole();
16+
17+ DWORD moduleBase = (DWORD )GetModuleHandle (TARGET_MODULE );
18+
19+ // std::cout << std::hex << moduleBase << std::endl;
20+
21+ HANDLE hProcess = OpenProcess (PROCESS_ALL_ACCESS , FALSE , GetCurrentProcessId ());
22+
23+ if (hProcess == NULL )
24+ {
25+ printf (" Error opening process: %d\n " , GetLastError ());
26+ return 1 ;
27+ }
28+
29+ DWORD dwAddress = moduleBase + 0x15D9 ;
30+
31+ // je value 2370315380 found with cheat engine
32+
33+ DWORD patchValue = 2370315381 ; // jne value 2370315381
34+
35+ if (!WriteProcessMemory (hProcess, (LPVOID )dwAddress, &patchValue, sizeof (patchValue), 0 ))
36+ {
37+ printf (" Error writing to process memory: %d\n " , GetLastError ());
38+ CloseHandle (hProcess);
39+ return 1 ;
40+ }
41+ CloseHandle (hProcess);
42+
43+ return 0 ;
44+ }
45+
46+
47+
48+ BOOL APIENTRY DllMain ( HMODULE hModule,
49+ DWORD ul_reason_for_call,
50+ LPVOID lpReserved
51+ )
52+ {
53+ switch (ul_reason_for_call)
54+ {
55+ case DLL_PROCESS_ATTACH :
56+ CloseHandle (CreateThread (nullptr , 0 , (LPTHREAD_START_ROUTINE )MainThread, hModule, 0 , nullptr ));
57+ case DLL_THREAD_ATTACH :
58+ case DLL_THREAD_DETACH :
59+ case DLL_PROCESS_DETACH :
60+ break ;
61+ }
62+ return TRUE ;
63+ }
0 commit comments