From d701633473489da85500ece2331a7705dfc302d1 Mon Sep 17 00:00:00 2001 From: Rutherther Date: Sat, 31 Dec 2022 23:01:27 +0100 Subject: [PATCH] fix(binding): add correct preserve registers to function signatures --- .../NosSmooth.LocalBinding/Objects/NetworkBinding.cs | 6 ++++-- .../NosSmooth.LocalBinding/Objects/PetManagerBinding.cs | 3 ++- .../Objects/PlayerManagerBinding.cs | 9 ++++++--- .../NosSmooth.LocalBinding/Objects/UnitManagerBinding.cs | 5 +++-- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/Core/NosSmooth.LocalBinding/Objects/NetworkBinding.cs b/src/Core/NosSmooth.LocalBinding/Objects/NetworkBinding.cs index 60755be02f2ac219e97f48e3ac77d7e61b5a9cae..4c01d9af6b725822edf96fad00d93f5ae8c012c4 100644 --- a/src/Core/NosSmooth.LocalBinding/Objects/NetworkBinding.cs +++ b/src/Core/NosSmooth.LocalBinding/Objects/NetworkBinding.cs @@ -23,7 +23,8 @@ public class NetworkBinding ( new[] { FunctionAttribute.Register.eax, FunctionAttribute.Register.edx }, FunctionAttribute.Register.eax, - FunctionAttribute.StackCleanup.Callee + FunctionAttribute.StackCleanup.Callee, + new[] { FunctionAttribute.Register.ebx, FunctionAttribute.Register.esi, FunctionAttribute.Register.edi, FunctionAttribute.Register.ebp } )] private delegate void PacketSendDelegate(nuint packetObject, nuint packetString); @@ -31,7 +32,8 @@ public class NetworkBinding ( new[] { FunctionAttribute.Register.eax, FunctionAttribute.Register.edx }, FunctionAttribute.Register.eax, - FunctionAttribute.StackCleanup.Callee + FunctionAttribute.StackCleanup.Callee, + new[] { FunctionAttribute.Register.ebx, FunctionAttribute.Register.esi, FunctionAttribute.Register.edi, FunctionAttribute.Register.ebp } )] private delegate void PacketReceiveDelegate(nuint packetObject, nuint packetString); diff --git a/src/Core/NosSmooth.LocalBinding/Objects/PetManagerBinding.cs b/src/Core/NosSmooth.LocalBinding/Objects/PetManagerBinding.cs index 804b1d44885dfcaf25902e8ae79e896e9e7a57dc..3423b8acdb8b2a524ff26103db0f5b385535d721 100644 --- a/src/Core/NosSmooth.LocalBinding/Objects/PetManagerBinding.cs +++ b/src/Core/NosSmooth.LocalBinding/Objects/PetManagerBinding.cs @@ -52,7 +52,8 @@ public class PetManagerBinding ( new[] { FunctionAttribute.Register.eax, FunctionAttribute.Register.edx, FunctionAttribute.Register.ecx }, FunctionAttribute.Register.eax, - FunctionAttribute.StackCleanup.Callee + FunctionAttribute.StackCleanup.Callee, + new[] { FunctionAttribute.Register.ebx, FunctionAttribute.Register.esi, FunctionAttribute.Register.edi, FunctionAttribute.Register.ebp } )] private delegate bool PetWalkDelegate ( diff --git a/src/Core/NosSmooth.LocalBinding/Objects/PlayerManagerBinding.cs b/src/Core/NosSmooth.LocalBinding/Objects/PlayerManagerBinding.cs index e73875d0464ef8d225309baf57aecd4a0b2733c4..d2e1404510125e79d775ce70feec96b223905716 100644 --- a/src/Core/NosSmooth.LocalBinding/Objects/PlayerManagerBinding.cs +++ b/src/Core/NosSmooth.LocalBinding/Objects/PlayerManagerBinding.cs @@ -23,7 +23,8 @@ public class PlayerManagerBinding ( new[] { FunctionAttribute.Register.eax, FunctionAttribute.Register.edx, FunctionAttribute.Register.ecx }, FunctionAttribute.Register.eax, - FunctionAttribute.StackCleanup.Callee + FunctionAttribute.StackCleanup.Callee, + new[] { FunctionAttribute.Register.ebx, FunctionAttribute.Register.esi, FunctionAttribute.Register.edi, FunctionAttribute.Register.ebp } )] private delegate bool WalkDelegate(nuint playerManagerPtr, int position, short unknown0 = 0, int unknown1 = 1); @@ -31,7 +32,8 @@ public class PlayerManagerBinding ( new[] { FunctionAttribute.Register.eax, FunctionAttribute.Register.edx, FunctionAttribute.Register.ecx }, FunctionAttribute.Register.eax, - FunctionAttribute.StackCleanup.Callee + FunctionAttribute.StackCleanup.Callee, + new[] { FunctionAttribute.Register.ebx, FunctionAttribute.Register.esi, FunctionAttribute.Register.edi, FunctionAttribute.Register.ebp } )] private delegate bool FollowEntityDelegate ( @@ -45,7 +47,8 @@ public class PlayerManagerBinding ( new[] { FunctionAttribute.Register.eax, FunctionAttribute.Register.edx }, FunctionAttribute.Register.eax, - FunctionAttribute.StackCleanup.Callee + FunctionAttribute.StackCleanup.Callee, + new[] { FunctionAttribute.Register.ebx, FunctionAttribute.Register.esi, FunctionAttribute.Register.edi, FunctionAttribute.Register.ebp } )] private delegate void UnfollowEntityDelegate(nuint playerManagerPtr, int unknown = 0); diff --git a/src/Core/NosSmooth.LocalBinding/Objects/UnitManagerBinding.cs b/src/Core/NosSmooth.LocalBinding/Objects/UnitManagerBinding.cs index 450be5d8482ed1fffb5aaa507ab0a8341bc3ce9a..0ed3590aab4169df8b1e39493fdd1be7364d5f11 100644 --- a/src/Core/NosSmooth.LocalBinding/Objects/UnitManagerBinding.cs +++ b/src/Core/NosSmooth.LocalBinding/Objects/UnitManagerBinding.cs @@ -9,10 +9,9 @@ using NosSmooth.LocalBinding.Errors; using NosSmooth.LocalBinding.Extensions; using NosSmooth.LocalBinding.Options; using NosSmooth.LocalBinding.Structs; -using Reloaded.Hooks; using Reloaded.Hooks.Definitions; +using Reloaded.Hooks.Definitions.Enums; using Reloaded.Hooks.Definitions.X86; -using Reloaded.Memory.Buffers.Internal.Kernel32; using Remora.Results; namespace NosSmooth.LocalBinding.Objects; @@ -30,6 +29,8 @@ public class UnitManagerBinding new[] { FunctionAttribute.Register.eax, FunctionAttribute.Register.edx }, FunctionAttribute.Register.eax, FunctionAttribute.StackCleanup.Callee + FunctionAttribute.StackCleanup.Callee, + new[] { FunctionAttribute.Register.ebx, FunctionAttribute.Register.esi, FunctionAttribute.Register.edi, FunctionAttribute.Register.ebp } )] private delegate int FocusEntityDelegate(nuint unitManagerPtr, nuint entityPtr);