Re: Unity - patching methods
Ivo Smits <[email protected]>
| Newsgroups | gmane.comp.gnome.mono.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi Andreas, One thing I found out is that when using Marshal.GetDelegateForFunctionPointer, you need to keep a (managed) reference to the delegate used to construct the function pointer around as well. Otherwise the GC may clean up the delegate and the function pointer will become invalid - although I did get a message informing me that the handle had been cleaned instead of an immediate crash. -- Ivo Op 21-1-2017 om 13:46 schreef pardeike: > Hi, > I am trying to replace methods during runtime. Lots of existing ways do this > by > simply inserting a jump at assembler level from the original to the new > method. > I want to do this too but with the new method being a DynamicMethod (or a > delegate to it). > > I did solve the IL part of it but testing it with a game (RimWorld) that > uses Unity > I find it crashes when I try my code with more than one method. I am no > expert > in when mono jitts its methods and vaguely know about trampolines and it > looks > like the memory area that you get with GetFunctionPtr() does change compared > to when I write a jump to it into the original and that changed assembler > gives > me all sort of crashes. Interestingly, the other method using exactly the > same way > to patch it works. > > So any pointers, ideas or suggestions welcome. I am in general an > experienced > developer but just not familiar with the specific area. I can read c# and c > and > tried to understand the mono repository code and will continue to do so. I > though > it would be nice to ask in parallel here. > > Thanks, > Andreas > > PS: my (not complete project) is here: https://github.com/pardeike/Harmony > > > > -- > View this message in context: http://mono.1490590.n4.nabble.com/Unity-patching-methods-tp4669765.html > Sent from the Mono - Dev mailing list archive at Nabble.com. > _______________________________________________ > Mono-devel-list mailing list > [email protected] > http://lists.dot.net/mailman/listinfo/mono-devel-list _______________________________________________ Mono-devel-list mailing list [email protected] http://lists.dot.net/mailman/listinfo/mono-devel-list