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