fix: use vtable Framework::free instead of sig

This commit is contained in:
goat 2021-01-18 12:43:11 +01:00
parent 10d5c6829d
commit 3d32d9c59c
2 changed files with 6 additions and 10 deletions

View file

@ -82,9 +82,6 @@ namespace Dalamud.Game.Internal {
Gui = new GameGui(Address.GuiManager, scanner, dalamud);
Network = new GameNetwork(scanner);
this.destroyHook =
new Hook<OnDestroyDetour>(Address.OnDestroy, new OnDestroyDelegate(HandleFrameworkDestroy), this);
}
private void HookVTable() {
@ -92,12 +89,16 @@ namespace Dalamud.Game.Internal {
// Virtual function layout:
// .rdata:00000001411F1FE0 dq offset Xiv__Framework___dtor
// .rdata:00000001411F1FE8 dq offset Xiv__Framework__init
// .rdata:00000001411F1FF0 dq offset sub_1400936E0
// .rdata:00000001411F1FF8 dq offset sub_1400939E0
// .rdata:00000001411F1FF0 dq offset Xiv__Framework__destroy
// .rdata:00000001411F1FF8 dq offset Xiv__Framework__free
// .rdata:00000001411F2000 dq offset Xiv__Framework__update
var pUpdate = Marshal.ReadIntPtr(vtable, IntPtr.Size * 4);
this.updateHook = new Hook<OnUpdateDetour>(pUpdate, new OnUpdateDetour(HandleFrameworkUpdate), this);
var pDestroy = Marshal.ReadIntPtr(vtable, IntPtr.Size * 3);
this.destroyHook =
new Hook<OnDestroyDetour>(pDestroy, new OnDestroyDelegate(HandleFrameworkDestroy), this);
}
public void Enable() {

View file

@ -9,9 +9,6 @@ namespace Dalamud.Game.Internal {
public IntPtr ScriptManager { get; private set; }
public IntPtr OnDestroy { get; private set; }
protected override void Setup64Bit(SigScanner sig) {
SetupFramework(sig);
@ -21,8 +18,6 @@ namespace Dalamud.Game.Internal {
// Called from Framework::Init
ScriptManager = BaseAddress + 0x2C68; // note that no deref here
OnDestroy = sig.ScanText("48 83 EC 48 48 8B 0D ?? ?? ?? ?? 48 85 C9");
}
private void SetupFramework(SigScanner scanner) {