Commit Graph

21 Commits

Author SHA1 Message Date
Luke
b05c03964a Struct reading and disassembly script overhaul, various misc. loading fixes, bump to .NET 9 (#13)
* Bump projects to .net 9 and update nugets

* add VersionedSerialization + source generator

* migrate versioning to StructVersion class, add handling/detection for 29.2/31.2

* add new struct definitions

* rename serialization methods and add BinaryObjectStreamReader for interop

* Rework metadata struct loading to use new struct versioning

* move 29/31.1/.2 to use tags (-2022,-2023) instead of minor versions

* fix metadata usage validity checks

* rework code registration offsetting a bit and add second 29/31.1 condition

* tweak .1 condition (again)

* 29/31.2 was a psyop

* also remove 29.2 from the readme

* remove loading of packed dlls - this was a very unsafe feature

* support auto-recovering type indices from type handles
fixes loading of memory-dumped v29+ libraries since those replacee their class indices on load with a pointer to the corresponding type

* support loading PEs without an export table

* also read UnresolvedVirtualCallCount on regular v31

* Disable plugin loading for now

* Overhaul disassembler script + add Binary Ninja target (#12)

* Overhaul diassembler scripts:
- No longer defines top level functions
- Split into three classes: StatusHandler (like before), DisassemblerInterface (for interfacing with the used program API), ScriptContext (for definiting general functions that use the disassembler interface)
- Add type annotations to all class methods and remove 2.7 compatibility stuff (Ghidra now supports Python 3 so this is unnecessary anymore)
- Disassembler backends are now responsible for launching metadata/script processing, to better support disassembler differences
- String handling is back in the base ScriptContext class, disassembler interfaces opt into the fake string segment creation and fall back to the old method if it isn't supported

* Add Binary Ninja disassembler script backend
This uses the new backend-controlled execution to launch metadata processing on a background thread to keep the ui responsive

* make binary ninja script use own _BINARYNINJA_ define and add define helpers to header

* Update README to account for new script and binary ninja backend

* implement fake string segment functions for binary ninja but don't advertise support

* also cache API function types in binary ninja backend

* fix ida script and disable folders again

* Fix metadata usage issues caused by it being a value type now

* make TryMapVATR overrideable and implement it for ELFs

* Make field offset reading use TryMapVATR to reduce exceptions

* Fix NRE in Assembly ctor on < v24.2

* Update actions workflow to produce cross-platform CLI binaries, update readme to reflect .net 9 changes

* workflow: only restore packages for projects that are being built

* workflow: tweak caching and fix gui compilation

* workflow: remove double .zip in CLI artifact name

* 29/31.2 don't actually exist, this logic is not needed
2024-11-14 14:32:11 +01:00
LukeFZ
8755d99d63 Slight rebranding, add new README section, bump version to 2023.1 2023-12-01 09:53:01 +01:00
LukeFZ
6aa96b431d Support reading and writing custom arguments for v29 2023-12-01 04:43:27 +01:00
LukeFZ
cbc22dcaf6 Update submodule & remove unneeded nuget pkg 2023-11-30 21:34:52 +01:00
LukeFZ
b11905a013 Update to .net 8 2023-11-29 19:44:57 +01:00
Katy Coe
b6f4197aed Update README.md and assembly versions 2021-01-31 14:18:50 +01:00
Katy Coe
a5d0ea39e6 DLL: Add initial code to create custom attributes 2021-01-08 22:23:29 +01:00
Katy Coe
59437a8138 Plugins: Implement PluginManager 2020-12-19 20:46:58 +01:00
Katy Coe
c0f360e71f Update README.md and assembly versions 2020-11-26 23:57:11 +01:00
Katy Coe
6eeff59eb2 Update NuGet package version 2020-08-17 03:03:21 +02:00
Katy Coe
7027f2e1cb Configure .csproj files for NuGet package 2020-08-14 04:54:48 +02:00
Katy Coe
e536a3b1eb Add NuGet package CxxDemangler for symbol name demangling 2020-08-09 00:29:35 +02:00
Katy Coe
dea29751ef Add embedded resources for universal script handling (ScriptResources) 2020-08-04 01:52:43 +02:00
Katy Coe
8926af341f JSON: Add initial JSONMetadata output module (with address map) 2020-08-02 21:21:57 +02:00
Katy Coe
4d45d99a8c Include Il2CppAPIHeaders\* as embedded resources 2020-07-20 17:09:46 +02:00
Katy Coe
7f4c4cb14d Update version to 2020.1 2020-07-02 16:49:32 +02:00
Katy Coe
23db04c369 Minor re-organization 2020-06-30 00:13:18 +02:00
Robert Xiao
393d26b2a3 Move non-output to new CppUtils namespace
We prefer to have the Outputs directory contain just one file or
namespace per output module, so we'll move all C++-related stuff to a
new CppUtils namespace instead.
2020-06-29 22:10:45 +02:00
Robert Xiao
34f0d4ceef Add header files for every known Unity version.
We want to get types into the IDA output, and to do that we need
accurate types for the Il2Cpp structures. Unfortunately, some crucial
types like Il2CppClass change between versions without any corresponding
metadata changes, meaning that we have to manually identify the version
outside of the Inspector somehow (e.g. by looking at the version number
embedded in Unity asset files). This patch adds header files for *every*
known Unity version from 5.3.0 to 2019.3.8, merging them into version
ranges where header files don't change.

It also adds front-end support for supplying the version number in both
the CLI and GUI. The GUI is given the ability to guess the version
number approximately to reduce the number of choices presented to the
user.
2020-06-29 22:10:45 +02:00
Katy Coe
c540318363 Update version to 2.1 2020-02-26 15:38:45 +01:00
Katy Coe
e971cb8502 Refactor solution layout 2020-02-06 02:51:42 +01:00