{"id":13846165,"url":"https://github.com/vfsfitvnm/frida-il2cpp-bridge","last_synced_at":"2026-04-30T23:00:38.353Z","repository":{"id":37738118,"uuid":"337138376","full_name":"vfsfitvnm/frida-il2cpp-bridge","owner":"vfsfitvnm","description":"A Frida module to dump, trace or hijack any IL2CPP application at runtime, without needing the global-metadata.dat file","archived":false,"fork":false,"pushed_at":"2026-03-16T23:54:00.000Z","size":1369,"stargazers_count":1598,"open_issues_count":37,"forks_count":284,"subscribers_count":23,"default_branch":"master","last_synced_at":"2026-03-17T08:46:27.173Z","etag":null,"topics":["dump","frida","frida-il2cpp-bridge","global-metadata","il2cpp","trace"],"latest_commit_sha":null,"homepage":"https://github.com/vfsfitvnm/frida-il2cpp-bridge/wiki","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vfsfitvnm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-02-08T16:32:01.000Z","updated_at":"2026-03-17T02:56:32.000Z","dependencies_parsed_at":"2023-09-23T18:50:25.460Z","dependency_job_id":"2a619615-0bd6-4e8a-aab7-5cf28956b8c3","html_url":"https://github.com/vfsfitvnm/frida-il2cpp-bridge","commit_stats":{"total_commits":299,"total_committers":4,"mean_commits":74.75,"dds":"0.026755852842809347","last_synced_commit":"aed1b22aee0f24b9c420df910cdef031dcf02c33"},"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"purl":"pkg:github/vfsfitvnm/frida-il2cpp-bridge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vfsfitvnm%2Ffrida-il2cpp-bridge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vfsfitvnm%2Ffrida-il2cpp-bridge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vfsfitvnm%2Ffrida-il2cpp-bridge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vfsfitvnm%2Ffrida-il2cpp-bridge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vfsfitvnm","download_url":"https://codeload.github.com/vfsfitvnm/frida-il2cpp-bridge/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vfsfitvnm%2Ffrida-il2cpp-bridge/sbom","scorecard":{"id":919534,"data":{"date":"2025-08-11","repo":{"name":"github.com/vfsfitvnm/frida-il2cpp-bridge","commit":"18cb9bea203c333366c456482c32dc64fe54c1e9"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.5,"checks":[{"name":"Code-Review","score":1,"reason":"Found 4/30 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":10,"reason":"4 commit(s) and 19 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: MIT License: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 4 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-25T00:25:47.504Z","repository_id":37738118,"created_at":"2025-08-25T00:25:47.504Z","updated_at":"2025-08-25T00:25:47.504Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32479448,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"ssl_error","status_checked_at":"2026-04-30T13:12:06.837Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dump","frida","frida-il2cpp-bridge","global-metadata","il2cpp","trace"],"created_at":"2024-08-04T17:04:32.173Z","updated_at":"2026-04-30T23:00:38.301Z","avatar_url":"https://github.com/vfsfitvnm.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# frida-il2cpp-bridge\n\n[![Frida](https://img.shields.io/badge/-frida-ef6456?style=for-the-badge\u0026logo=data:image/svg+xml;base64,PHN2ZyAgIHZlcnNpb249IjEuMSIgICBpZD0iTGF5ZXJfMSIgICB4PSIwcHgiICAgeT0iMHB4IiAgIHZpZXdCb3g9IjAgMCA5LjcyOTk3OTkgMTAuOTM1NzEyIiAgIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDIwNC40IDM5IiAgIHhtbDpzcGFjZT0icHJlc2VydmUiICAgc29kaXBvZGk6ZG9jbmFtZT0ibG9nby5zdmciICAgd2lkdGg9IjkuNzI5OTc5NSIgICBoZWlnaHQ9IjEwLjkzNTcxMiIgICBpbmtzY2FwZTp2ZXJzaW9uPSIxLjEgKGNlNjY2M2IzYjcsIDIwMjEtMDUtMjUpIiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIiAgIHhtbG5zOnNvZGlwb2RpPSJodHRwOi8vc29kaXBvZGkuc291cmNlZm9yZ2UubmV0L0RURC9zb2RpcG9kaS0wLmR0ZCIgICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnMgICBpZD0iZGVmczkiIC8+PHNvZGlwb2RpOm5hbWVkdmlldyAgIGlkPSJuYW1lZHZpZXc3IiAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIgICBib3JkZXJvcGFjaXR5PSIxLjAiICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIiAgIGlua3NjYXBlOnBhZ2VjaGVja2VyYm9hcmQ9IjAiICAgc2hvd2dyaWQ9ImZhbHNlIiAgIGZpdC1tYXJnaW4tdG9wPSIwIiAgIGZpdC1tYXJnaW4tbGVmdD0iMCIgICBmaXQtbWFyZ2luLXJpZ2h0PSIwIiAgIGZpdC1tYXJnaW4tYm90dG9tPSIwIiAgIGlua3NjYXBlOnpvb209IjYuOTE3ODA4NCIgICBpbmtzY2FwZTpjeD0iLTAuMTQ0NTU0NDUiICAgaW5rc2NhcGU6Y3k9Ii04LjYwMDk4OTkiICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxOTIwIiAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwMDgiICAgaW5rc2NhcGU6d2luZG93LXg9IjAiICAgaW5rc2NhcGU6d2luZG93LXk9IjAiICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMSIgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJMYXllcl8xIiAvPjxnICAgaWQ9Imc0IiAgIHN0eWxlPSJkaXNwbGF5OmlubGluZTtmaWxsOiNmZmZmZmYiICAgdHJhbnNmb3JtPSJtYXRyaXgoMC4yODA0MDI4NiwwLDAsMC4yODA0MDI4NiwtMTEuNTgwNjM4LDApIj48cGF0aCAgIGZpbGw9IiNmZmZmZmYiICAgZD0iTSA1MS40LDM5IEggNDEuMyBMIDQ5LjcsMjYuMSBDIDQ0LjksMjMuOCA0Mi4zLDE5LjYgNDIuMywxMy41IDQyLjMsNC44IDQ4LjIsMCA1OC41LDAgSCA3NiBWIDM5IEggNjcgViAyOCBIIDU4LjUgNTcuNyBaIE0gNjcsMjAgViA3IGggLTguNSBjIC00LjksMCAtNy43LDIgLTcuNyw2LjQgMCw0LjUgMi44LDYuNiA3LjcsNi42IHoiICAgaWQ9InBhdGgyIiAgIHN0eWxlPSJmaWxsOiNmZmZmZmYiIC8+PC9nPjwvc3ZnPg==)](https://frida.re)\n[![NPM](https://img.shields.io/npm/v/frida-il2cpp-bridge?label=\u0026logo=npm\u0026style=for-the-badge)](https://npmjs.org/package/frida-il2cpp-bridge)\n\nA Frida module to dump, trace or hijack any Il2Cpp application at runtime, without needing the `global-metadata.dat` file.\n\n![code](https://github.com/vfsfitvnm/frida-il2cpp-bridge/assets/46219656/d8e81811-b98c-4d67-9cea-be8cab8947ef)\n\n## Features\n\n- Dump classes, methods, fields and so on\n- Trace, intercept and replace method calls\n- Mess around with the C# runtime\n- Il2Cpp structs and global metadata (almost) free\n\n## Compatibility\n\n#### Unity version\n\nIt should work for any Unity version in the range **5.3.0** - **6000.3.x**.\n\n#### Platforms\n\n**Android**, **Linux**, **Windows**, **iOS**, **macOS** are supported.\nHowever, only Android and Linux are \"tested\": expect breakage if you are using another platform.\n\n## CLI\n\nStarting from version `0.10.0`, a `frida-il2cpp-bridge` Python executable is included alongside the NPM package installation. This executable wraps the `frida` command and adds IL2CPP specific features. To invoke it, simply run:\n\n```sh\nnpx frida-il2cpp-bridge --help\n```\n\nor\n\n```sh\nnpm exec frida-il2cpp-bridge -- --help\n```\n\n### Dumping\n\nUse the `dump` subcommand to dump an application:\n\n```\n$ npm exec frida-il2cpp-bridge -- dump --help\nusage: frida-il2cpp-bridge [options] dump [-h] [--out-dir OUT_DIR] [--cs-output {none,stdout,flat,tree}] [--no-namespaces] [--flatten-nested-classes] [--keep-implicit-base-classes]\n                                          [--enums-as-structs] [--no-type-keywords] [--actual-constructor-names] [--indentation-size INDENTATION_SIZE]\n\noptions:\n  -h, --help            show this help message and exit\n  --out-dir OUT_DIR     where to save the dump (defaults to current working dir)\n  --cs-output {none,stdout,flat,tree}\n                        style of C# output (defaults to tree)\n                        -   none: do nothing;\n                        - stdout: print to console;\n                        -   flat: one single file (dump.cs);\n                        -   tree: directory structure having one file per assembly.\n  --no-namespaces       do not emit namespace blocks, and prepend namespace name in class declarations\n  --flatten-nested-classes\n                        write nested classes at the same level of their inclosing classes, and prepend enclosing class name in their declarations\n  --keep-implicit-base-classes\n                        write implicit base classes (class -\u003e System.Object, struct -\u003e System.ValueType, enum -\u003e System.Enum) in class declarations\n  --enums-as-structs    write enum class declarations as structs\n  --no-type-keywords    use fully qualified names for builtin types instead of their keywords (e.g. use 'System.Int32' instead of 'int', or 'System.Object' instead of 'object')\n  --actual-constructor-names\n                        write actual constructors names (e.g. '.ctor' and '.cctor')\n  --indentation-size INDENTATION_SIZE\n                        indentation size (defaults to 4)\n```\n\nExample:\n\n```sh\nnpm exec frida-il2cpp-bridge -- -f com.example.application dump --out-dir dumps\n```\n\nOutput:\n\n```\nSpawning `com.example.application`...\nIL2CPP module loaded in 1.13s (id=com.example.application, version=1.12.8, unity version=2019.3.0f1)\nDumping mscorlib: 2872 of 2872 classes\nDumping GameAssembly: 32 of 32 classes\nCollected 2904 classes in 4.76s\nDump saved to dumps/com.example.application/1.12.8\n```\n\n## Testing\n\nOver the time, it was realized that some testing was necessary, as supporting many Unity version makes introducing regressions or faulty features easy. Though it's far from being complete and bullet-proof, there's a minimal testing setup contributors can get advantage of to test their changes. \\\nIn order to test `frida-il2cpp-bridge`, a IL2CPP application is needed (of course). Here are some very useful resources:\n\n- [IL2CPP toolchain](https://katyscode.wordpress.com/2020/06/24/il2cpp-part-1/)\n- [Scripting](https://github.com/djkaty/Il2CppInspector/blob/116c6355e7ee3656eab85ca753f913d428abc7a3/Il2CppTests/il2cpp.ps1)\n\n### Commands (local)\n\nUnity editors (so IL2CPP toolchains) will be downloaded and extracted automatically.\n\n**Prerequisites**\n\n1. Only Linux (x86_64) is currently supported;\n2. Make sure to have `clang` and `make` installed.\n\n#### Build IL2CPP assembly (`GameAssembly.so`) for a specific Unity version only\n\n```sh\nmake assembly UNITY_VERSION=6000.3.10f1\n```\n\n#### Run test on each assembly\n\n```sh\nmake test\n```\n\n### Commands (Docker)\n\nCurrently, testing-related commands for Linux (x86_64) are provided, however there's a Dockerfile so that it's possible to create a container on any OS or arch (a virtualization system/emulator might be required).\n\n**Prerequisites**\n\n1. Docker (or similar);\n2. Emulator/virtualization (_optional_).\n\n#### Build Docker image for a specific Unity version\n\n```sh\nmake image UNITY_VERSION=2023.2.20f1\n```\n\nThis creates a Docker image tagged as `frida-il2cpp-bridge-playground:2023.2.20f1` having roughly the following content:\n\n```\n~/\n└── build/\n    ├── 2023.2.20f1/\n    │   └── out\n    │       ├── Data\n    │       │   ├── Metadata\n    │       │   │  └── global-metadata.dat\n    │       │   ├── Resources\n    │       │   │  └── mscorlib.dll-resources.dat\n    │       └── GameAssembly.so\n    └── host\n```\n\nAs you can see, it only contains artifacts (and `frida-server`, of course). However, multi stage Docker builds are used so that you can stop at any step:\n\n```sh\n# Just get the Unity editor in it\ndocker build \\\n  --platform linux/amd64 \\\n  --build-arg UNITY_VERSION=2023.2.20f1 \\\n  --target unity-editor \\\n  -t unity:2023.2.20f1 \\\n  test\n```\n\n#### Run tests on each Docker image\n\n```sh\nmake testd\n```\n\n#### Limitations\n\n- Image build for 2021.2.0f1 is currently broken.\n\n## Acknowledgements\n\nThanks to [meme](https://github.com/meme) and [knobse](https://github.com/knobse) for helping and getting me into this,\nand to [djkaty](https://github.com/djkaty) and [nneonneo](https://github.com/nneonneo) for providing the Il2Cpp\nAPI.\n\n## Problems?\n\nDiscussions and Wiki are both active. Use them!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvfsfitvnm%2Ffrida-il2cpp-bridge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvfsfitvnm%2Ffrida-il2cpp-bridge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvfsfitvnm%2Ffrida-il2cpp-bridge/lists"}