This project is a specialized dumper for Android Unity games using the IL2CPP backend. It leverages the ByNameModding (BNM) library to traverse and extract IL2CPP metadata (classes, fields, methods, properties) and generate human-readable C# (.cs) files.
- Purpose: Extract IL2CPP metadata from running Android games and save it as C# dummy files for analysis and modding.
- Main Technologies:
- C++23: The project uses the C++23 standard for modern language features.
- ByNameModding (BNM): A library for modding IL2CPP games by name rather than offset.
- nlohmann/json: Used for JSON data handling (located in
include/nlohmann). - CMake: Used as the primary build system.
- Dobby: Static library used for hooking and memory operations.
- Architecture:
- The project is built using CMake and produces a shared library.
Main.cppcontains theJNI_OnLoadentry point which initializes BNM and triggers the dumping process.- The dumper waits for BNM to load, then iterates through assemblies (e.g.,
Assembly-CSharp.dll) and dumps their contents to the device storage.
- Android NDK (latest recommended for C++23 support).
- CMake (version 3.8 or higher).
To build the project with CMake, typically you would use:
# Inside a build directory
cmake .. \
-DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=arm64-v8a \
-DANDROID_PLATFORM=android-23 \
-DCMAKE_CXX_STANDARD=23
make- Load the Library: The resulting library must be loaded into the target Android application process.
- Output Location: Once loaded, the dumper creates a
dumpdirectory in the application's external files path:/storage/emulated/0/Android/data/<package_name>/files/dump/ - Configuration: You can specify which DLLs to dump by editing
dumpDllList.txtin the dump directory.
- C++ Standard: C++23 is the target standard.
- Unity Versioning: Target Unity version must be configured in
BNM/include/BNM/UserSettings/GlobalSettings.hpp. - JSON Handling: Use
nlohmann::jsonfor any metadata export or configuration parsing. - Logging: Uses standard Android logging (
<android/log.h>) with tagsByNameModdingorDUMP.
Main.cpp: Primary dumper logic and entry point.BNM/CMakeLists.txt: Build configuration for the BNM library.include/nlohmann/: JSON library headers.universe.h: Central header including all necessary headers.BNM/include/BNM/UserSettings/GlobalSettings.hpp: Global configuration for BNM.