Skip to content

ngentood/dump

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BNM-based IL2CPP Dumper

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.

Project Overview

  • 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.cpp contains the JNI_OnLoad entry 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.

Building and Running

Build Prerequisites

  • Android NDK (latest recommended for C++23 support).
  • CMake (version 3.8 or higher).

Build Commands

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

Running the Dumper

  1. Load the Library: The resulting library must be loaded into the target Android application process.
  2. Output Location: Once loaded, the dumper creates a dump directory in the application's external files path: /storage/emulated/0/Android/data/<package_name>/files/dump/
  3. Configuration: You can specify which DLLs to dump by editing dumpDllList.txt in the dump directory.

Development Conventions

  • 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::json for any metadata export or configuration parsing.
  • Logging: Uses standard Android logging (<android/log.h>) with tags ByNameModding or DUMP.

Key Files

  • 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.

About

il2cpp

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages