From 31fa84e0efa8f4da8f30dcdea1d065e31f03b3da Mon Sep 17 00:00:00 2001 From: icex2 Date: Sun, 25 Feb 2024 09:36:53 +0100 Subject: [PATCH] feat(inject): Use new exception handler with stacktraces Adjust inject to utilize the new feature. This also requires including the dwarfstack.dll in all distribution packages. --- Module.mk | 8 ++++++++ src/main/inject/Module.mk | 3 +++ src/main/inject/debugger.c | 5 +++-- src/main/inject/main.c | 3 +++ 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/Module.mk b/Module.mk index beef698..48d0e18 100644 --- a/Module.mk +++ b/Module.mk @@ -259,6 +259,7 @@ $(zipdir)/iidx-09-to-12.zip: \ build/bin/indep-32/iidxio.dll \ build/bin/indep-32/vefxio.dll \ build/bin/indep-32/inject.exe \ + dist/dwarfstack/32/dwarfstack.dll \ dist/iidx/config.bat \ dist/iidx/gamestart-09.bat \ dist/iidx/gamestart-10.bat \ @@ -284,6 +285,7 @@ $(zipdir)/iidx-13.zip: \ build/bin/indep-32/iidxio.dll \ build/bin/indep-32/vefxio.dll \ build/bin/indep-32/inject.exe \ + dist/dwarfstack/32/dwarfstack.dll \ dist/iidx/config.bat \ dist/iidx/gamestart-13.bat \ dist/iidx/iidxhook-13.conf \ @@ -300,6 +302,7 @@ $(zipdir)/iidx-14-to-17.zip: \ build/bin/indep-32/iidxio.dll \ build/bin/indep-32/vefxio.dll \ build/bin/indep-32/inject.exe \ + dist/dwarfstack/32/dwarfstack.dll \ dist/iidx/config.bat \ dist/iidx/gamestart-14.bat \ dist/iidx/gamestart-15.bat \ @@ -518,6 +521,7 @@ $(zipdir)/jb-01.zip: \ build/bin/indep-32/eamio.dll \ build/bin/indep-32/geninput.dll \ build/bin/indep-32/jbio.dll \ + dist/dwarfstack/32/dwarfstack.dll \ dist/jb/config.bat \ dist/jb/gamestart-01.bat \ dist/jb/jbhook-01.conf \ @@ -532,6 +536,7 @@ $(zipdir)/jb-02.zip: \ build/bin/indep-32/eamio.dll \ build/bin/indep-32/geninput.dll \ build/bin/indep-32/jbio.dll \ + dist/dwarfstack/32/dwarfstack.dll \ dist/jb/config.bat \ dist/jb/gamestart-02.bat \ dist/jb/jbhook-02.conf \ @@ -720,6 +725,7 @@ $(zipdir)/ddr-12-us.zip: \ build/bin/indep-32/ddrio-smx.dll \ build/bin/indep-32/eamio.dll \ build/bin/indep-32/geninput.dll \ + dist/dwarfstack/32/dwarfstack.dll \ dist/ddr/config.bat \ dist/ddr/gamestart-12-us.bat \ dist/ddr/gamestart-12-eu.bat \ @@ -872,6 +878,7 @@ $(zipdir)/popn-15-to-18.zip: \ build/bin/indep-32/eamio.dll \ build/bin/indep-32/popnio.dll \ build/bin/indep-32/ezusb2-popn-shim.dll \ + dist/dwarfstack/32/dwarfstack.dll \ dist/popn/config.bat \ dist/popn/gamestart-15.bat \ dist/popn/gamestart-16.bat \ @@ -903,6 +910,7 @@ $(BUILDDIR)/tests.zip: \ build/bin/indep-32/iidxhook-util-config-gfx-test.exe \ build/bin/indep-32/iidxhook-util-config-misc-test.exe \ build/bin/indep-32/iidxhook-util-config-sec-test.exe \ + dist/dwarfstack/32/dwarfstack.dll \ build/bin/indep-32/inject.exe \ build/bin/indep-32/security-id-test.exe \ build/bin/indep-32/security-mcode-test.exe \ diff --git a/src/main/inject/Module.mk b/src/main/inject/Module.mk index fd868ef..5fb93dc 100644 --- a/src/main/inject/Module.mk +++ b/src/main/inject/Module.mk @@ -1,12 +1,15 @@ exes += inject +imps += dwarfstack ldflags_inject := \ -mconsole \ -lpsapi \ + -ldbghelp \ libs_inject := \ core \ util \ + dwarfstack \ src_inject := \ main.c \ diff --git a/src/main/inject/debugger.c b/src/main/inject/debugger.c index e8e7068..69f0a74 100644 --- a/src/main/inject/debugger.c +++ b/src/main/inject/debugger.c @@ -13,9 +13,10 @@ #include "inject/debugger.h" +#include "util/debug.h" +#include "util/log.h" #include "util/mem.h" #include "util/proc.h" -#include "util/signal.h" #include "util/str.h" #define MM_ALLOCATION_GRANULARITY 0x10000 @@ -275,7 +276,7 @@ static uint32_t debugger_loop() "EXCEPTION_DEBUG_EVENT(pid %ld, tid %ld): x%s 0x%p", de.dwProcessId, de.dwThreadId, - signal_exception_code_to_str( + debug_exception_code_to_str( de.u.Exception.ExceptionRecord.ExceptionCode), de.u.Exception.ExceptionRecord.ExceptionAddress); diff --git a/src/main/inject/main.c b/src/main/inject/main.c index 07026dc..da80a8b 100644 --- a/src/main/inject/main.c +++ b/src/main/inject/main.c @@ -28,6 +28,8 @@ #include "inject/version.h" #include "util/cmdline.h" +#include "util/debug.h" +#include "util/log.h" #include "util/mem.h" #include "util/os.h" #include "util/signal.h" @@ -222,6 +224,7 @@ int main(int argc, char **argv) os_version_log(); + debug_init(); signal_exception_handler_init(); // Cleanup remote process on CTRL+C signal_register_shutdown_handler(signal_shutdown_handler);