From 113bdff299faa39d05d4af86e2b805a99e783cf5 Mon Sep 17 00:00:00 2001 From: Katy Coe Date: Sat, 8 Aug 2020 04:33:29 +0200 Subject: [PATCH] Update README.md and related files --- Il2CppInspector.sln | 2 + README.md | 300 +++++++++++++++++++++++++++++++--------- docs/Ghidra_Guide.png | Bin 0 -> 56844 bytes docs/Ghidra_Preview.png | Bin 0 -> 57537 bytes 4 files changed, 237 insertions(+), 65 deletions(-) create mode 100644 docs/Ghidra_Guide.png create mode 100644 docs/Ghidra_Preview.png diff --git a/Il2CppInspector.sln b/Il2CppInspector.sln index 12b0875..9b6f622 100644 --- a/Il2CppInspector.sln +++ b/Il2CppInspector.sln @@ -20,6 +20,8 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{46226B08-22BA-455E-8B99-F496E90EDCBC}" ProjectSection(SolutionItems) = preProject docs\CSProj_Preview.png = docs\CSProj_Preview.png + docs\Ghidra_Guide.png = docs\Ghidra_Guide.png + docs\Ghidra_Preview.png = docs\Ghidra_Preview.png docs\GUI_Preview.png = docs\GUI_Preview.png docs\IDA_Preview.png = docs\IDA_Preview.png README.md = README.md diff --git a/README.md b/README.md index e540ec3..dff5f86 100644 --- a/README.md +++ b/README.md @@ -4,27 +4,29 @@ Il2CppInspector helps you to reverse engineer IL2CPP applications, providing the Main features: -* Output IL2CPP type definitions, metadata and method pointers as C# stub code +* Output IL2CPP type definitions, metadata and method pointers as **[C# stub code](#creating-c-prototypes)** -* Create C++ scaffolding for all types, methods and API functions in an IL2CPP application +* Create **[C++ scaffolding](#creating-c-scaffolding-or-a-dll-injection-project)** for all types, methods, function pointers and API functions in an IL2CPP application for use in x64dbg, Cydia Substrate etc. -* Create IDA Python scripts to populate symbol, function and type information +* Create **[IDA](#adding-metadata-to-your-ida-workflow) and [Ghidra](#adding-metadata-to-your-ghidra-workflow) Python scripts** to populate symbol, function and type information; includes API hooks to [implement scripts for other targets](#extending-il2cppinspectors-python-output-to-support-other-targets) -* Create Visual Studio C++ DLL injection projects directly from IL2CPP files +* Create Visual Studio **[C++ DLL injection projects](#dll-injection-workflow)** directly from IL2CPP files -* Create Visual Studio C# code stub solutions directly from IL2CPP files +* Create Visual Studio **[C# code stub solutions](#creating-a-visual-studio-c-code-stubs-solution)** directly from IL2CPP files -* Create IL2CPP binaries from arbitrary C# source code without a Unity project +* Create **[JSON metadata](#generating-json-metadata)** with a complete address map directly from IL2CPP Files -* Three major APIs for use in custom static analysis projects +* Create **[IL2CPP binaries from arbitrary C# source code without a Unity project](#generating-il2cpp-binaries-without-a-unity-project)** -* Supports all major file formats and processor architectures +* **[Three major APIs](#using-the-apis-for-programmatic-analysis)** for use in your own custom static analysis projects for querying low level binary metadata, the .NET type model and the whole C++ application + +* Supports **all major file formats and processor architectures** * Defeats certain types of basic obfuscation -* Works on Windows, MacOS X and Linux. Integrated GUI for Windows users +* Works on Windows, MacOS X and Linux. **Integrated GUI** for Windows users with drag & drop support -* Tested with every release of IL2CPP since Unity 5.3.0 +* Tested with [every release of IL2CPP](#version-support) since Unity 5.3.0 You can read more about IL2CPP in my series [IL2CPP Reverse Engineering](https://katyscode.wordpress.com/category/reverse-engineering/il2cpp/). @@ -46,19 +48,10 @@ Nice to have: * Support for assemblies, classes, methods, constructors, fields, properties, enumerations, events, interfaces, structs, pointers, references, attributes, nested types, generic types, generic methods, generic constraints, default field values and default method parameter values * C# syntactic sugar for CTS value types, compiler-generated types, delegates, extension methods, operator overloading, indexers, user-defined conversion operators, explicit interface instantiations, finalizers, nullable types, unsafe contexts, fixed-size arrays, variable length argument lists, method hiding and escaped strings * Partition C# code output by namespace, assembly, class, full tree or single file; sort by index or type name; output flat or nested folder hierarchy. Each file includes the necessary `using` directives. Scope and type name conflicts are resolved automatically to produce code that compiles. -* API function export processing for PE, ELF and Mach-O binaries -* Static and dynamic symbol table scanning and relocation processing for ELF binaries -* Static symbol table scanning for Mach-O binaries +* API function export processing for PE, ELF, Mach-O and SELF (PRX) binaries +* Static and dynamic symbol table scanning for PE, ELF and Mach-O binaries +* Relocation processing for ELF binaries * Automatically defeats certain basic obfuscation methods - -Reusable class library APIs: - -* **Il2CppInspector** - low-level access to the binary image and metadata -* **TypeModel** - high-level .NET Reflection-like query API for all of the .NET types in the source project as a tree model -* **ApplicationModel** - access to all of the C++ types and methods, plus the IL2CPP API exports, with detailed address and offset data and mappings to their .NET equivalents - - Use these APIs to easily query IL2CPP types, create new output modules and integrate Il2CppInspector with your own static analysis applications. - * Test chassis for automated integration testing of IL2CPP binaries Class library targets .NET Standard 2.1. Application targets .NET Core 3.0. Built with Visual Studio 2019. @@ -110,38 +103,62 @@ File format and architecture are automatically detected. ``` -i, --bin (Default: libil2cpp.so) IL2CPP binary, APK or IPA input file + -m, --metadata (Default: global-metadata.dat) IL2CPP metadata file input (ignored for APK/IPA) + -c, --cs-out (Default: types.cs) C# output file (when using single-file layout) or path (when using per namespace, assembly or class layout) - -p, --py-out (Default: ida.py) IDA Python script output file + + -p, --py-out (Default: il2cpp.py) Python script output file + -h, --cpp-out (Default: cpp) C++ scaffolding / DLL injection project output path - -e, --exclude-namespaces (Default: System Mono Microsoft.Reflection Microsoft.Win32 Internal.Runtime Unity UnityEditor UnityEngine UnityEngineInternal AOT JetBrains.Annotations) Comma-separated list of - namespaces to suppress in C# output, or 'none' to include all namespaces - -l, --layout (Default: single) Partitioning of C# output ('single' = single file, 'namespace' = one file per namespace in folders, 'assembly' = one file per assembly, 'class' = one file per - class in namespace folders, 'tree' = one file per class in assembly and namespace folders) + + -o, --json-out (Default: metadata.json) JSON metadata output file + + -e, --exclude-namespaces (Default: System Mono Microsoft.Reflection Microsoft.Win32 Internal.Runtime Unity UnityEditor UnityEngine UnityEngineInternal AOT JetBrains.Annotations) Comma-separated list of namespaces to suppress in C# output, or 'none' to include all namespaces + + -l, --layout (Default: single) Partitioning of C# output ('single' = single file, 'namespace' = one file per namespace in folders, 'assembly' = one file per assembly, 'class' = one file per class in namespace folders, 'tree' = one file per class in assembly and + namespace folders) + -s, --sort (Default: index) Sort order of type definitions in C# output ('index' = by type definition index, 'name' = by type name). No effect when using file-per-class or tree layout + -f, --flatten Flatten the namespace hierarchy into a single folder rather than using per-namespace subfolders. Only used when layout is per-namespace or per-class. Ignored for tree layout + -n, --suppress-metadata Diff tidying: suppress method pointers, field offsets and type indices from C# output. Useful for comparing two versions of a binary for changes with a diff tool - -k, --must-compile Compilation tidying: try really hard to make code that compiles. Suppress generation of code for items with CompilerGenerated attribute. Comment out attributes without - parameterless constructors or all-optional constructor arguments. Don't emit add/remove/raise on events. Specify AttributeTargets.All on classes with AttributeUsage attribute. - Force auto-properties to have get accessors. Force regular properties to have bodies. Suppress global::Locale classes. Generate dummy parameterless base constructors and ref - return fields. + + -k, --must-compile Compilation tidying: try really hard to make code that compiles. Suppress generation of code for items with CompilerGenerated attribute. Comment out attributes without parameterless constructors or all-optional constructor arguments. Don't emit + add/remove/raise on events. Specify AttributeTargets.All on classes with AttributeUsage attribute. Force auto-properties to have get accessors. Force regular properties to have bodies. Suppress global::Locale classes. Generate dummy parameterless + base constructors and ref return fields. + --separate-attributes Place assembly-level attributes in their own AssemblyInfo.cs files. Only used when layout is per-assembly or tree + -j, --project Create a Visual Studio solution and projects. Implies --layout tree, --must-compile and --separate-attributes - --cpp-compiler (Default: BinaryFormat) Compiler to make C++ output compatible with (MSVC or GCC); selects based on binary executable type by default + + --cpp-compiler (Default: BinaryFormat) Compiler to target for C++ output (MSVC or GCC); selects based on binary executable type by default + + -t, --script-target (Default: IDA) Application to target for Python script output (IDA or Ghidra) - case-sensitive + --unity-path (Default: C:\Program Files\Unity\Hub\Editor\*) Path to Unity editor (when using --project). Wildcards select last matching folder in alphanumeric order - --unity-assemblies (Default: C:\Program Files\Unity\Hub\Editor\*\Editor\Data\Resources\PackageManager\ProjectTemplates\libcache\com.unity.template.3d-*\ScriptAssemblies) Path to Unity script - assemblies (when using --project). Wildcards select last matching folder in alphanumeric order - --unity-version Version of Unity used to create the input files, if known. Used to enhance IDAPython and C++ output. If not specified, a close match will be inferred automatically. + + --unity-assemblies (Default: C:\Program Files\Unity\Hub\Editor\*\Editor\Data\Resources\PackageManager\ProjectTemplates\libcache\com.unity.template.3d-*\ScriptAssemblies) Path to Unity script assemblies (when using --project). Wildcards select last matching folder in + alphanumeric order + + --unity-version Version of Unity used to create the input files, if known. Used to enhance Python, C++ and JSON output. If not specified, a close match will be inferred automatically. + --help Display this help screen. + --version Display version information. ``` -For Apple Universal Binaries, multiple output files will be generated, with each filename besides the first suffixed by the index of the image in the Universal Binary. Unsupported images will be skipped. +For Apple Universal Binaries and APKs with binaries for multiple architectures, multiple output files will be generated, with each filename besides the first suffixed by the index of the image in the binary. Unsupported images will be skipped. For IPA packages, the executable must be decrypted first. Encrypted executable binaries are not supported. ### Creating C# prototypes +Il2CppInspector can create C# code stub files with pointer metadata to allow you to explore the IL2CPP binary in an easy-to-read format. + +Specify the `-c` switch to choose the C# output file or path. + To exclude types from certain namespaces from being generated in the C# source file output, provide a comma-separated list of case-sensitive namespaces in `--exclude-namespaces`. The following namespaces will be excluded if no argument is specified: ``` @@ -160,10 +177,33 @@ JetBrains.Annotations Providing an argument to `--exclude-namespaces` will override the default list. To output all namespaces, use `--exclude-namespaces=none`. This only applies to C# prototypes output. +You can specify the output layout with the `--layout` switch: + +* `single` - all types in a single file +* `namespace` - one namespace per file (each file will be given the namespace name) +* `assembly` - one assembly per file (each file will be given the assembly name) +* `class` - one class per file +* `tree` - one class per file in a tree-like folder structure with top-level assembly folders and second-level namespace folders + +You can specify the intra-file type ordering with the `--sort` switch: + +* `index` - sort by type definition index as found in the IL2CPP metadata +* `name` - sort alphabetically by type name + +This switch has no effect when using `class` or `tree` layout. + +The `--flatten` switch allows you to flatten a hierarchy of nested namespaces when `layout` is `class` or `namespace`, ie. a series of sub-folders `System/IO/Compression` will instead be a single top-level sub-folder `System.IO.Compression`. + +The `--suppress-metadata` switch allows you to suppress the output of comments including method pointers, field offsets and type indices. This is useful when you want to diff the changes between two versions of an application to see only which types have changed. + +The `--seperate-attributes` switch directs Il2CppInspector to put assembly-level attributes in their own `AssemblyInfo.cs` files rather than at the top of the first file generated for each assembly, when `layout` is `assembly` or `tree`. + ### Adding metadata to your IDA workflow Simply run Il2CppInspector with the `-p` switch to choose the IDA script output file. Load your binary file into IDA, press Alt+F7 and select the generated script. Observe the Output Window while IDA analyzes the file - this may take a long time. +Three files are generated by Il2CppInspector for IDAPython: the Python script itself, a JSON metadata file and a C++ type header file (this is `cpp/appdata/il2cpp-types.h` by default if you used the CLI, or `il2cpp.h` if you used the GUI). These files must be present for the script to run successfully. + If you know which version of Unity the binary was compiled with, you can improve the output by specifying this with `--unity-version`, for example `--unity-version 2019.3.1f1`. Otherwise Il2CppInspector will make an educated guess based on the contents of the binary. Il2CppInspector generates the following data for IDA projects: @@ -179,15 +219,53 @@ Il2CppInspector generates the following data for IDA projects: - Comments at each function entry point with .NET method signatures for all of the above - Names and type declarations for all of the following IL metadata references: Type, TypeInfo, MethodDef, FieldInfo, StringLiteral, MethodRef (this includes all generic class and method instantiation metadata) - Comments for all IL string literal metadata pointers containing the value of the string -- Names for some IL2CPP-specific data structures and functions +- Names and types for some IL2CPP-specific data structures and functions Example IDA C++ decompilation after applying Il2CppInspector (initialization code omitted for brevity): ![Il2CppInspector annotated IDA project](docs/IDA_Preview.png) +### Adding metadata to your Ghidra workflow + +Run Il2CppInspector with the `-p` switch to choose the Ghidra script output file, and `-t Ghidra` (case-sensitive) to specify Ghidra as the script type you wish to produce. + +Three files are generated by Il2CppInspector for IDAPython: the Python script itself, a JSON metadata file and a C++ type header file. These files must be present for the script to run successfully. + +If you know which version of Unity the binary was compiled with, you can improve the output by specifying this with `--unity-version`, for example `--unity-version 2019.3.1f1`. Otherwise Il2CppInspector will make an educated guess based on the contents of the binary. + +To import metadata into an existing Ghidra project: + +1. From the _Code Browser_, choose _File -> Parse C Source..._ +2. Create a new profile and add the generated C++ type header file. This is `cpp/appdata/il2cpp-types.h` by default if you used the CLI, or `il2cpp.h` if you used the GUI. +3. Ensure the _Parse Options_ are set exactly as follows: + + `-D_GHIDRA_` + +4. Click Parse to Program and accept any warnings. This may take a long time to complete. +5. Open the _Script Manager_ and add the output folder you chose in Il2CppInspector as a script folder. +6. If you have used scripts from Il2CppInspector for other binaries, ensure the Python files are named differently, or disable use of the previous script folder(s). +7. Click Refresh to make the script appear in _Script Manager_. +8. Right-click the script and choose _Run_. This may take a while to complete. + +![Ghidra import help](docs/Ghidra_Guide.png) + +Il2CppInspector generates identical data for Ghidra projects as it does for IDA - see the above section for details. + +**NOTE**: For compatibility reasons, executing the Ghidra Python script on an ELF file will reset the file's image base to zero (`0x00000000`). Other file formats will retain the same image base. + +Example Ghidra C++ decompilation after applying Il2CppInspector: + +![Il2CppInspector annotated Ghidra project](docs/Ghidra_Preview.png) + ### Creating C++ scaffolding or a DLL injection project -Il2CppInspector generates a series of C++ source files which you can use with a tool like `x64dbg` to analyze the memory of the application, or for accessing types, methods and IL2CPP API functions via DLL injection, among other uses. +Il2CppInspector generates a series of C++ source files which you can use in a variety of ways, for example: + +- with a tool like x64dbg to analyze the memory of the application at runtime +- with a tool like Cydia Substrate (MSHookFunction) for accessing types, methods and IL2CPP API functions +- to run custom code via DLL injection on Windows (see below) + +Run Il2CppInspector with the `-h` switch to choose the C++ output folder. If you know which version of Unity the binary was compiled with, you can improve the output by specifying this with `--unity-version`, for example `--unity-version 2019.3.1f1`. Otherwise Il2CppInspector will make an educated guess based on the contents of the binary. @@ -201,45 +279,55 @@ Some IL2CPP binary files contain only a partial set of API exports, or none at a The following files are generated: -- `ilc2pp-types.h`: - - Type declarations for all internal IL2CPP types (a minimal version of the Unity headers) - - Type declarations for every type used in the application including all arrays, enums, concrete generic type instances and inferred usages from metadata. - - Boxed versions for types where applicable - - VTables for every type +- `appdata` - this folder contains project-agnostic binary-specific declarations: + - `ilc2pp-types.h`: + - Type declarations for all internal IL2CPP types (a minimal version of the Unity headers) + - Type declarations for every type used in the application including all arrays, enums, concrete generic type instances and inferred usages from metadata. + - Boxed versions for types where applicable + - VTables for every type -- `il2cpp-functions.h`: - - The function pointer signature and offset from the image base address to every C#-equivalent method + - `il2cpp-functions.h`: + - The function pointer signature and offset from the image base address to every C#-equivalent method -- `il2cpp-type-ptr.h`: - - The offset from the image base address to every type information class (`Il2CppClass **`) + - `il2cpp-types-ptr.h`: + - The offset from the image base address to every type information class (`Il2CppClass **`) -- `il2cpp-function-ptr.h`: - - The offset from the image base address to every IL2CPP API function export (functions starting with `il2cpp_`) + - `il2cpp-api-functions.h`: + - The function pointer signature to every IL2CPP API function (copied directly from Unity for the version used to compile the binary). Functions not found in the binary's export list will be elided -- `il2cpp-api-functions.h`: - - The function pointer signature to every IL2CPP API function (copied directly from Unity for the version used to compile the binary). Functions not found in the binary's export list will be elided + - `il2cpp-api-functions-ptr.h`: + - The offset from the image base address to every IL2CPP API function export (functions starting with `il2cpp_`) The above files contain all the data needed for dynamic analysis in a debugger. In addition, the following files are generated for DLL injection: -- `il2cpp-init.h`: - - Provides the `void init_il2cpp()` function which uses all of the above headers to generate usable function pointers and class pointers that are mapped to the correct places in the in-memory image at runtime +- `framework` - project-agnostic binary-agnostic boilerplate code and scaffolding: + - `dllmain.cpp`: + - Provides a DLL injection stub which calls `init_il2cpp()` (see below) and starts `Run()` (see below) in a new thread -- `dllmain.cpp` and `dllmain.h`: - - Provides a DLL injection stub which calls `init_il2cpp()` and starts `Run()` (see below) in a new thread + - `helpers.cpp` and `helpers.h`: + - Provides basic logging and other helper functions. See the comments in `helpers.h` for details. -- _`helpers.cpp` and `helpers.h`: - - Provides basic logging (`LogWrite(std::string text)`) and other helper functions. See the comments in `helpers.h` for details. To specify a log file target in your source code, use `extern const LPCWSTR LOG_FILE = L"my_log_file.txt"` + - `il2cpp-init.cpp`, `il2cpp-init.h` and `il2cpp-appdata.h`: + - Provides the `void init_il2cpp()` function which uses all of the above headers to generate usable function pointers and class pointers that are mapped to the correct places in the in-memory image at runtime -- `main.cpp`: - - Contains a stub `Run()` function where you can enter your custom injected code. The function executes in a new thread and therefore does not block `DllMain`. **This is the only file that you should modify**. + - `pch-il2cpp.cpp` and `pch-il2cpp.h`: + - Provides the necessary scaffolding to enable pre-compiled headers (PCH) for all of the headers in the `appdata` folder + +- `user` - project-specific binary-agnostic user code which you can modify as desired: + - `main.cpp` and `main.h`: + - Contains a stub `Run()` function which denotes the entry point for your custom injected code. The function executes in a new thread and therefore does not block `DllMain`. + + **This is the only folder whose files you should edit**. For Visual Studio users, the following files are also generated: -- `IL2CppDLL.vxcproj` and `Il2CppDLL.sln`: +- `IL2CppDLL.vcxproj`, `Il2CppDLL.vcxproj.filters` and `Il2CppDLL.sln`: - The project and solution files for a DLL injection project. The first time you load the solution into Visual Studio, you will be asked to re-target the platform SDK and C++ toolchain. Accept the default suggestions. **WARNING: Compilation may fail if you don't do this.** +The default `main.cpp` includes commented code to allow you to write to a log or open a new console using the functions from `helpers.h`. To specify a log file target in your source code, use `extern const LPCWSTR LOG_FILE = L"my_log_file.txt"`. + #### DLL Injection workflow 1. Use Il2CppInspector to create C++ scaffolding output for the executable binary of interest @@ -248,7 +336,7 @@ For Visual Studio users, the following files are also generated: 4. Compile the project 5. Use a DLL injection tool such as [Cheat Engine](https://www.cheatengine.org/) or [RemoteDLL](https://securityxploded.com/remotedll.php) to inject the compiled DLL into the IL2CPP application at runtime -You have access to all of the C#-equivalent types and methods in the application, plus all of the available IL2CPP API functions. +You have access to all of the C#-equivalent types and methods in the application, plus all of the available IL2CPP API functions. No additional function pointer or type declarations are required. Example (create a `Vector3` and log its y co-ordinate to a file): @@ -273,7 +361,7 @@ void Run() Il2CppInspector can create a complete Visual Studio workspace with a solution (.sln) file, project (.csproj) files and assembly-namespace-class tree-like folder structure. Each project creates a single assembly. -Use the `--project` flag to generate a solution workspace. +Use the `--project` switch to generate a solution workspace. In order for Il2CppInspector to be able to create .csproj files which contain the correct Unity assembly references, you must provide the path to an installed Unity editor and a project template or `ScriptAssemblies` folder of an existing Unity project. @@ -293,6 +381,51 @@ In the event that the assembly references are not correctly resolved the first t ![Il2CppInspector Auto-generated Visual Studio solution](docs/VisualStudio_Preview.png) +### Generating JSON metadata + +Il2CppInspector can create a JSON file containing various metadata about the application. + +Use the `-o` switch to specify the JSON output path. + +The output schema is as follows: + +- `addressMap` (object) + + An address map of all IL2CPP-related content in binary + - `methodDefinitions` (array) + The virtual address, binary symbol, C++ function signature and .NET method signature of every .NET-equivalent method in the binary + + - `constructedGenericMethods` (array) + The virtual address, binary symbol, C++ function signature and .NET method signature of every .NET-equivalent concrete generic method in the binary + + - `customAttributesGenerators` (array) + The virtual address, name and C++ function signature of every custom attributes generator function in the binary + + - `methodInvokers` (array) + The virtual address, name and C++ function signature of every Method.Invoke thunk function in the binary + + - `stringLiterals` (array) + For Unity versions lower than 5.3.2: the ordinal, name and text of every string literal in the binary + For Unity version 5.3.2 and later: the virtual address, name and text of every string literal in the binary + + - `typeInfoPointers` (array) + The virtual address, name, C++ derived type name and .NET type name equivalent of every class definition pointer (`Il2CppClass *`) in the binary + + - `typeRefPointers` (array) + The virtual address, name and .NET type name equivalent of every type reference pointer (`Il2CppType *`) in the binary + + - `methodInfoPointers` (array) + The virtual address, name and .NET method signature of every runtime method definition pointer (`MethodInfo *`) in the binary + + - `functionAddresses` (array) + The virtual addresses of the start of every known function in the binary, including all of those above plus any others detected but not included in the above categories + + - `typeMetadata` (array) + The virtual address, name and C++ type name of key metadata items in the binary. This includes `Il2CppCodeRegistration` and `Il2CppMetadataRegistration`, and depending on the binary version may also include `Il2CppCodeGenModule **` and a pointer to each `Il2CppCodeGenModule` + + - `functionMetadata` (array) + The virtual address, name and C++ function signature of key metadata functions in the binary. Depending on how the binary was analyzed by Il2CppInspector, this may include `il2cpp_codegen_register`. + ### Generating IL2CPP binaries without a Unity project Two Powershell scripts are provided to enable easy testing and debugging: @@ -306,15 +439,50 @@ To learn more about this feature, see the section entitled **Using Il2CppInspect ### Using the APIs for programmatic analysis +Il2CppInspector offers the following re-usable class library APIs: + +* **Il2CppInspector** - low-level access to the binary image and metadata +* **TypeModel** - high-level .NET Reflection-like query API for all of the .NET types in the source project as a tree model +* **AppModel** - access to all of the C++ types and methods, plus the IL2CPP API exports, with detailed address and offset data and mappings to their .NET equivalents + +Use these APIs to easily query IL2CPP types, create new output modules and integrate Il2CppInspector with your own static analysis applications. + To utilize Il2CppInspector in your own projects, add a reference to `Il2CppInspector.Common.dll`. Include the following `using` directives: * `using Il2CppInspector` to use `Il2CppInspector`. * `using Il2CppInspector.Reflection` to use `TypeModel`. -* `using Il2CppInspector.Model` to use `ApplicationModel`. +* `using Il2CppInspector.Model` to use `AppModel`. -See the source code for further details. +See the source code for further details. Tutorials coming soon. + +### Extending Il2CppInspector's Python output to support other targets + +The current version of Il2CppInspector can output Python scripts targeting the IDA and Ghidra disassemblers. + +When Il2CppInspector generates such a script, it generates a concetenation of a shared block of code (`Outputs/ScriptResources/shared-main.py`) which parses the JSON metadata and dispatches it to a set of implementation-specific functions to be processed, and a block of code specific to the target application which implements these functions (a file from `Outputs/ScriptResources/Targets`). + +If you would like to add support for a new target application, create a new Python script in `Outputs/ScriptResources/Targets` with the nane `.py` and implement the following functions: + +- `CustomInitializer()` - perform any custom initialization required for the target before applying the metadata +- `DefineCode(code)` - parse and apply the specified C++ declaration text (this is not required for Unity 5.3.2 and later; if you don't need to support earlier versions, just specify `pass` as the implementation) +- `GetScriptDirectory()` - retrieve the directory that the Python script is running in. This will normally be `os.path.dirname(os.path.realpath(__file__))` +- `MakeFunction(start, name=None)` - define address `start` as the start of a function, optionally with name `name` +- `SetComment(addr, text)` - place the comment `text` at address `addr` +- `SetFunctionType(addr, sig)` - parse the C++ function signature in `sig` and apply it to the function at address `addr` +- `SetHeaderComment(addr, text)` - place the header/plate/pre-item comment `text` at address `addr` +- `SetName(addr, name)` - set the symbol (or label or name) of address `addr` to `name` +- `SetType(addr, type)` - define address `addr` to be an item of the C++ type `type` + +Refer to the source code of `IDA.py` and `Ghidra.py` for examples. + +When you add a new target and re-compile Il2CppInspector: + +- the target will automatically be available for selection via the `-t` (`--script-target`) switch via the CLI +- the target will automatically appear in the drop-down selection box for script targets in the GUI + +If you develop an API for a target that you think might be useful to others, please feel free to submit a PR with the code! ### Version support @@ -333,7 +501,7 @@ Unity version | IL2CPP version | Support 2019.1.x-2019.3.6 | 24.2 | Working 2019.3.7-2020.1.x | 24.3 | Working -Please refer to the separate repository https://github.com/nneonneo/Il2CppVersions if you would like to track the changes between each IL2CPP release version. +Please refer to the companion repository https://github.com/nneonneo/Il2CppVersions if you would like to track the changes between each IL2CPP release version. ### Problems @@ -369,6 +537,7 @@ Thanks to the following individuals whose code and research helped me develop th - Defuse - https://defuse.ca/online-x86-assembler.htm - Jackson Dunstan has an awesome series of articles on IL2CPP - https://jacksondunstan.com/articles/tag/il2cpp - Josh Grunzweig's IDAPython primer series - https://unit42.paloaltonetworks.com/using-idapython-to-make-your-life-easier-part-1/ +- Bloog Bot by Drew Kestell - https://drewkestell.us/Article/6/Chapter/1 The following books and documents were also very helpful: @@ -378,6 +547,7 @@ The following books and documents were also very helpful: - [The Beginner's Guide to IDAPython](https://leanpub.com/IDAPython-Book) by Alexander Hanel - [ARM Architecture Reference Manual ARMv8-A](https://developer.arm.com/docs/ddi0487/latest) - [Intel 64 and IA-32 Architectures Software Developer's Manual](https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-instruction-set-reference-manual-325383.pdf) +- [Ghidra API documentation](https://ghidra.re/ghidra_docs/api/) Pizza spinner animation in the GUI made by Chris Gannon - https://gannon.tv/ diff --git a/docs/Ghidra_Guide.png b/docs/Ghidra_Guide.png new file mode 100644 index 0000000000000000000000000000000000000000..d3e6cf4c530565d33c2e2d013ffaa74ceaa63e87 GIT binary patch literal 56844 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⪚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 m{m&iX6Mt=fGIt_$&irZ|ZY~=cO?C8 literal 0 HcmV?d00001