Il2CppDumper reads two files from a Unity game:
libil2cpp.so— the compiled game codeglobal-metadata.dat— the metadata that names all classes, methods, and fields
It produces a dump.cs file containing all class and method names with their memory offsets, which you can use for reverse engineering.
Download Termux from F-Droid. Do not use the Play Store version, it is outdated. F-Droid link: https://f-droid.org/packages/com.termux/
Open Termux and run:
pkg update && pkg upgrade
pkg install proot-distro
proot-distro install ubuntu
This downloads a full Ubuntu environment. It may take a few minutes depending on your connection.
proot-distro login ubuntu
You are now inside Ubuntu. All following commands run here.
apt-get update
apt-get install -y mono-complete
This installs the Mono runtime, which is required to run the dumper.
Place the Il2CppDumper folder somewhere accessible, for example:
/sdcard/Il2CppDumper/
The folder must contain these files:
Il2CppDumper.exe
Mono.Cecil.dll
Il2CppDummyDll.dll
config.json
run.sh
proot-distro login ubuntu
cd /sdcard/Il2CppDumper
For Free Fire, the files are located at:
/sdcard/Android/data/com.dts.freefireth/files/
or for the MAX version:
/sdcard/Android/data/com.dts.freefiremax/files/
The files you need:
libil2cpp.so— usually inside a folder likeil2cpp/orlib/arm64-v8a/global-metadata.dat— usually insideMetadata/
To find them:
find /sdcard/Android/data/com.dts.freefireth -name "libil2cpp.so" 2>/dev/null
find /sdcard/Android/data/com.dts.freefireth -name "global-metadata.dat" 2>/dev/null
Inside Ubuntu, go to the dumper folder and run:
bash run.sh /path/to/libil2cpp.so /path/to/global-metadata.dat
Example with actual Free Fire paths:
bash run.sh \
/sdcard/Android/data/com.dts.freefireth/files/il2cpp/libil2cpp.so \
/sdcard/Android/data/com.dts.freefireth/files/Metadata/global-metadata.dat
The output will be saved in the output/ folder inside the dumper directory.
After the dump completes, you will find these files in the output/ folder:
| File | Description |
|---|---|
dump.cs |
All class and method names with offsets |
script.json |
Method addresses in JSON format |
stringliteral.json |
All string literals with addresses |
il2cpp.h |
C header file with struct definitions |
DummyDll/ |
Folder containing fake DLL assemblies |
The most useful file is dump.cs. Open it and search for the method or class you want to find.
Enter Ubuntu each session:
proot-distro login ubuntu
Run the dumper:
cd /sdcard/Il2CppDumper
bash run.sh <libil2cpp.so> <global-metadata.dat>
"mono: command not found"
You are not inside Ubuntu. Run proot-distro login ubuntu first.
"Error: il2cpp file not found"
Check the path to your libil2cpp.so. Use find as shown above to locate it.
"ERROR: Metadata file not found or encrypted" The global-metadata.dat may be encrypted by the game. This version of the dumper handles standard Free Fire metadata. If it is encrypted, you need a separate decryption step first.
"Searching... ERROR: Can't use auto mode" The dumper will ask you to enter CodeRegistration and MetadataRegistration addresses manually. These must be found separately using a disassembler.
Permission denied on /sdcard/
In Termux, run termux-setup-storage once to grant storage access.