Commit Graph

31 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
1e27f8672d Dump default bytearray value as base64 in c# output 2024-02-25 15:26:46 +01:00
LukeFZ
7120970ece Use actual size of static array initializers 2023-12-01 08:14:12 +01:00
LukeFZ
7e7d345c30 Add support for ThreadStatic fields 2023-12-01 07:08:48 +01:00
LukeFZ
6aa96b431d Support reading and writing custom arguments for v29 2023-12-01 04:43:27 +01:00
Katy Coe
297b3016f8 C#: Fix crash on machines/VMs with 1 hardware thread (#134) 2021-02-04 12:58:24 +01:00
Katy Coe
61bd7637c6 C#: Don't emit assembly type indices with --suppress-metadata (#127) 2021-01-23 23:36:42 +01:00
Katy Coe
71be0f2af2 Update year in copyright messages 2021-01-04 05:26:43 +01:00
Katy Coe
3b8e518b7c C#: Fix regression in path name sanitization 2020-12-09 17:36:05 +01:00
Katy Coe
c3f59120df C#: Don't fail class/tree folder creation with invalid namespace names 2020-12-08 18:12:21 +01:00
Katy Coe
835636d99e C#: Parallelize generation of type definitions 2020-09-14 12:30:10 +02:00
Katy Coe
e511b99dec Model: UnmangledBaseName / CSharpSafeName refactoring (#70) 2020-09-13 14:51:20 +02:00
Katy Coe
8e00e47ccd C#: Fix regression in indexer name output 2020-09-13 12:04:47 +02:00
Katy Coe
b327fdf341 C#: Fix indexer name corruption if length was not 4 characters 2020-09-09 14:13:50 +02:00
Katy Coe
5828ed106b Model/C#: Provide FieldHasRVA flag; output metadata preview for static array initializer implementations (#59) 2020-08-22 03:14:11 +02:00
Katy Coe
99a7e2e8cb C#: Output async keyword for async methods (and suppress AsyncStateMachine) 2020-08-14 03:33:41 +02:00
Katy Coe
f08cfd573c C#: Output DefaultMemberAttribute if the type doesn't have an indexer 2020-08-14 03:20:56 +02:00
Katy Coe
386a666fff C++: Output DLL injection boilerplate project 2020-07-19 15:44:26 +02:00
Katy Coe
873a6c98f6 AppModel: First iteration of ApplicationModel API
Integrate with C++ scaffolding
Add new tests
Rename Il2CppModel to TypeModel
Incomplete IDAPython integration
CLI and GUI support
Update README.md
2020-07-09 03:48:50 +02:00
Katy Coe
181d3ad600 CS: Don't output redundant interfaces in type declarations 2020-06-22 22:56:26 +02:00
Katy Coe
ef22c6628b CS: Fix enumeration scoping on default field values (CS0103) 2020-06-22 18:38:16 +02:00
Katy Coe
ca113fb055 CLI: Handle attempted output to directory that is file gracefully 2020-06-20 19:34:34 +02:00
Robert Xiao
6ddb502e96 Refactor TypeInfo names and fix out/in
Replace the deeply nested ternaries in TypeInfo with if-statements for
clarity.
Remove in/out from CSharpName, keeping it only on immediate type params
in CSharpTypeDeclarationName (refactored to a method).
Rearrange name-related properties and methods to group them all together
into a region for easier navigation.
2020-06-20 10:17:48 +02:00
Robert Xiao
5224429b0a Fix {{ typo in CSharpCodeStubs 2020-06-17 08:18:15 +02:00
Callie LeFave
dee6c45056 Fix CSharp output paths on POSIX filesystems 2020-06-16 12:25:10 +02:00
Katy Coe
40ab603c56 C#: Don't output field offsets for open generic types 2020-02-28 11:01:38 +01:00
Katy Coe
168c955558 C#: Set static and instance constructor defaults correctly (CS0120) 2020-02-24 12:24:04 +01:00
Katy Coe
6046f2493d C#: Reduce scope redundancies in type declarations 2020-02-24 12:05:33 +01:00
Katy Coe
97c8b8f878 Output: Fix thread safety crash in WriteFilesByClassTree 2020-02-10 09:40:44 +01:00
Katy Coe
fc7e63c0aa Output: Sanitize C# filenames for invalid characters 2020-02-08 12:55:13 +01:00
Katy Coe
e971cb8502 Refactor solution layout 2020-02-06 02:51:42 +01:00