Skip to content

Latest commit

 

History

History
114 lines (61 loc) · 5.7 KB

README.md

File metadata and controls

114 lines (61 loc) · 5.7 KB

Il2CppInspector Plugins Repository

This is the official repository of plugins for Il2CppInspector

Current plugins

Core

These plugins are part of the base functionality of Il2CppInspector. They are enabled by default and should always be present (but may be disabled if desired).

  • API-Discovery - Performs automatic ROT decryption of encrypted IL2CPP API export names

  • Binary-Metadata-Field-Reconstructor - Performs automatic resolution of obfuscated field order in key binary metadata structures

  • String-Decryptor - Performs automatic XOR decryption of encrypted metadata strings

  • XOR-Decryptor - Performs automatic heuristic decryption of XOR-encrypted binary files

Loaders

These plugins allow the processing of IL2CPP workloads not directly supported by Il2CppInspector.

  • Beebyte-Deobfuscator - Enables deobfuscation of .NET symbols obfuscated by BeeByte by performing a differential analysis with an unobfuscated version of the application

  • guigubahuang - Enables loading of Tale of Immortal (鬼谷八荒 / Guigubahuang)

  • miHoYo - Enables loading of Honkai Impact and Genshin Impact (NOTE: Requires UnityPlayer.dll from the corresponding PC version of the game, even if you are inspecting a mobile version)

Examples

These plugins are intended as tutorial samples for plugin writers.

  • StringLiterals-ROT shows how to setup a plugin project and perform ROT decryption on all string literals

  • Options-And-Validation shows how to declare options, perform validation and receive option change notifications

  • LoadPipeline shows all of the available hooks in Il2CppInspector's load pipeline and how to use them

  • Analytics shows how to use a 3rd party nuget package and output data to files, producing a frequency graph of the chosen section in the input binary

Installing plugins

Download all current plugins as a bundle (NOTE: does not include example plugins)

You can also use the get-plugins.ps1 or get-plugins.sh scripts supplied with Il2CppInspector to fetch the current plugins.

Place plugins in a folder called plugins which should be created in the same location as Il2CppInspector.exe.

Use --plugins at the command line or click Manage Plugins... in the GUI to configure your plugins.

Learn more in the Using Plugins section of the Il2CppInspector README.

Issue reports

ONLY use the issue tracker to report bugs in plugins.

DO NOT use the issue tracker to request plugins, request features for existing plugins, ask for help with plugins or report bugs in Il2CppInspector. These issues will be ignored. The plugin architecture exists to help you create new functionality, but we do not provide official support or take requests.

To report bugs in specific plugins, file an issue in the plugin owner's GitHub repo.

To report bugs in Il2CppInspector or its handling of plugins, use the Il2CppInspector issue tracker.

If you need plugin options, hooks or access to data that is not currently supported, or other plugin API features, feel free to suggest them on the Il2CppInspector issue tracker!

Creating plugins

See the Il2CppInspector Plugin Development Wiki for information about how to create plugins.

Submitting plugins

There are two ways to submit a plugin:

To submit a plugin whose code will reside directly in this repository:

  • Clone the repo
  • Create a folder in the appropriate category (Examples or Loaders) and place your plugin there with the .sln and .csproj files in the same folder
  • Remove any local file references from the .csproj file
  • Submit a PR with the new or update plugin as commits on Il2CppInspectorPlugins

To submit a plugin with code from a separate repository:

  • Create a repo with your plugin, with the .sln and .csproj files in the root folder
  • Remove any local file references from the .csproj file
  • Submit a PR with the repo link
  • We will add the plugin to this repo as a git submodule

Submission requirements

If you plugin operates on a specific application, you must attach the related files to the PR so that we can test it, but do not include them in commits.

Plugin submissions should include source code and documentation only.

Plugin submissions should not include files from 3rd party commercial applications. If your plugin requires a 3rd party DLL or other file to function, create an option which asks the user to supply it. Dependencies such as nuget packages and open-source code from github are permitted.

One plugin, one purpose

Plugins are designed to be chained. Do not include multiple unrelated functions in your plugin. Create separate plugins for each task.

Code style

Your plugin should as closely as possible follow the code style demonstrated in the existing plugins. Comment your code clearly so that its functionality can be understood by others.

Use descriptive, grammatically correct and correctly capitalized names and descriptions for your plugin and their options (if English is not your first language, we will help you).

Plugin updates

Submit updates to your plugins as PRs as above.

Licensing

Submissions that are accepted will be licensed under AGPLv3. If your code is in a separate repo, your license must be compatible with AGPLv3.

We may change, split, merge or remove plugins over time to keep the codebase clean and logical, or incorporate new features added to Il2CppInspector.