Disclaimer & Purpose: This project is strictly an educational framework and open-source base. It is designed to demonstrate C++ to JVM interoperability, memory hooking, and OpenGL rendering overlays. This is NOT a fully finished malicious cheat. It is a foundation meant for developers and reverse-engineering enthusiasts to learn from, build upon, and add their own modules. Feel free to fork it, study it, and extend it!
The current source includes basic logic to demonstrate how to manipulate the JVM safely and bypass basic server-side checks.
- 🎨 Custom ImGui Framework: A highly customized, animated ImGui menu with dynamic keybind capturing, RGB toggles, and an in-game Active Modules HUD overlay.
- ⚔️ KillAura Logic: Demonstrates randomization to simulate human behavior (Min/Max CPS, Base Reach + Variance, FOV Angles) alongside W-Tap, Auto-Crit, and Block-Hit packet mechanics.
- 🛡️ AntiBot: Shows how to read and filter entity properties (UUIDs, ticks existed, invisible names) to avoid attacking server-side Anti-Cheat NPCs.
- 🏃 SafeWalk: Interacts with the player's movement and
onGroundflags. Includes sub-modes like Sneak, Breezily (with custom click delays and slowdown multipliers). - 🖱️ AutoClicker: Emulates human clicking patterns for Left/Right mouse buttons, featuring Jitter/Butterfly emulation and block-breaking compatibility.
- 🧱 Anti-Knockback (Velocity): Manipulates
motionX/Y/Zfields when taking damage. It includes aHuman Error Chanceparameter to occasionally take normal knockback, making it highly undetectable.
This section explains how a C++ DLL can interface with a running Java Virtual Machine (JVM) to read, modify, and extend a Java application's runtime behavior.
- A C++ compiler targeting x64/x86 Windows (MSVC) producing a DLL.
- The Java Native Interface (JNI) headers (
jni.h,jni_md.h) from a JDK matching the target JVM version. - MinHook to intercept Win32/OpenGL functions at runtime.
- Dear ImGui (OpenGL2 + Win32 backend) for drawing overlay windows.
- MCP (Mod Coder Pack) mappings to translate obfuscated game functions/fields to human-readable names.
The fundamental challenge: your code runs in a C++ DLL, but the game runs on a Java VM. These are separate runtimes with separate memory spaces.
- Acquiring the JVM: When Java starts, it loads
jvm.dll. Your injected DLL finds this withGetModuleHandleA("jvm.dll"). From there,JNI_GetCreatedJavaVMsreturns a pointer to the runningJavaVMobject. - Attaching Your Thread: C++ threads are NOT automatically known to the JVM. You must call
g_jvm->AttachCurrentThread()to register your thread and get aJNIEnv*pointer. (Attach once, reuse, detach only at shutdown). - Execution Inside the Game Loop: State changes only during the game's main loop. The cleanest approach is hooking
wglSwapBuffersfromopengl32.dllusing MinHook. Inside your hook, you have a frame-accurate execution point to do JNI reads/writes and render the ImGui overlay.
- Singleton Caching: Cache
jfieldID,jmethodIDonce in aif (bFirstTime)block. Never look them up per-frame. - Global References: Use
env->NewGlobalRef(localRef)to keep Java objects alive across frames (essential for theMinecraftsingleton). - Error Handling: Always use
env->ExceptionCheck()andenv->ExceptionClear()after JNI calls to prevent JVM crashes. - Clean Unload: Disable MinHook -> Restore WndProc -> Shutdown ImGui -> Detach JVM Thread -> FreeLibraryAndExitThread.
Since this is a base, you are encouraged to add your own features!
- Clone the repository and open the
.vcxprojfile in Visual Studio 2022. - Ensure you have the Java JDK installed on your system.
- Adjust the project's Include Directories to point to your JDK's
includeandinclude/win32folders. - Build the project as Release (x64 or x86 depending on your target JVM architecture).
- Inject the compiled
.dllinto thejavaw.exeprocess using any standard DLL injector.