Skip to content
This repository was archived by the owner on Jul 1, 2024. It is now read-only.

Commit 169163d

Browse files
committed
Re-bump version, update release notes and README
1 parent f4ae6a1 commit 169163d

File tree

4 files changed

+21
-4
lines changed

4 files changed

+21
-4
lines changed

AssemblyUnhollower/AssemblyUnhollower.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<OutputType>Exe</OutputType>
55
<TargetFrameworks>net4.7.2;net5.0;netstandard2.1</TargetFrameworks>
66
<Nullable>enable</Nullable>
7-
<Version>0.4.15.5</Version>
7+
<Version>0.4.16.0</Version>
88
<LangVersion>latest</LangVersion>
99
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
1010
</PropertyGroup>

README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,15 @@ Limitations:
104104
* Apply the component to your intended objects in Unity and build the asset bundle.
105105
* At runtime, register your component with `RegisterTypeInIl2Cpp` before loading any objects from the asset bundle.
106106

107+
## Implementing interfaces with injected types
108+
Starting with 0.4.16.0, injected types can implement IL2CPP interfaces.
109+
Just like previously, your type can't implement the interface directly, as it's still generated as a class.
110+
However, you can pass additional interface types to `RegisterTypeInIl2Cpp`, and they will be implemented as interfaces on the IL2CPP version of your type.
111+
Interface methods are matched to methods in your class by name, parameter count and genericness.
112+
Known caveats:
113+
* `obj.Cast<InterfaceType>()` will fail if you try to cast an object of your injected type to an interface. You can work around that with `new InterfaceType(obj.Pointer)` if you're absolutely sure it implements that interface.
114+
* Limited method matching might result in some interfaces being trickier or impossible to implement, namely those with overloads differing only in parameter types.
115+
107116
## Upcoming features (aka TODO list)
108117
* Unstripping engine code - fix current issues with unstripping failing or generating invalid bytecode
109118
* Proper interface support - IL2CPP interfaces will be generated as interfaces and properly implemented by IL2CPP types

ReleaseChangelog.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
1-
This is a small bugfix update. Generated assemblies should be compatible with those generated by 0.4.15.3.
1+
This is a small bugfix and feature update. Generated assemblies should be mostly compatible with those generated by 0.4.15.x.
2+
However, this version fixes a bug in deobfuscation map handling that can result in more things being renamed. This can lead to some breakage.
3+
New features:
4+
* Interface implementations for injected classes (contributed by @HookedBehemoth in #71). See README for more details
5+
* Delegate types get generated operators + and - for easier handling of delegate-typed fields (contributed by @HookedBehemoth).
6+
27
Changes:
3-
* Support DefaultMemberAttribute as generated by Cpp2IL (as opposed to Dumper's AttributeAttribute)
8+
* Fixed field and enum field renames from deobfuscation map not being applied
9+
* Xref scanner now considers CMOVcc opcodes for string references
10+
* Fixed deobfuscation map generator failing to run (it still generates bad maps for deobfuscated types though - some postprocessing is required)
11+
* Fixed newer Unity versions failing due to wrong native struct description
412

UnhollowerBaseLib/UnhollowerBaseLib.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<TargetFrameworks>net4.7.2;netstandard2.1</TargetFrameworks>
55
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
66
<LangVersion>latest</LangVersion>
7-
<Version>0.4.15.5</Version>
7+
<Version>0.4.16.0</Version>
88
</PropertyGroup>
99

1010
<ItemGroup>

0 commit comments

Comments
 (0)