From c15da8eed1e0343f6c3df1c247c57acda493f781 Mon Sep 17 00:00:00 2001 From: icex2 Date: Sun, 28 Jan 2024 21:55:24 +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 | 4 ++-- src/main/inject/main.c | 2 ++ 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/Module.mk b/Module.mk index 4178a42..21b125d 100644 --- a/Module.mk +++ b/Module.mk @@ -257,6 +257,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 \ @@ -282,6 +283,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 \ @@ -298,6 +300,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 \ @@ -485,6 +488,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 \ @@ -499,6 +503,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 \ @@ -659,6 +664,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 \ @@ -776,6 +782,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 \ @@ -807,6 +814,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 549f179..648ea7f 100644 --- a/src/main/inject/Module.mk +++ b/src/main/inject/Module.mk @@ -1,11 +1,14 @@ exes += inject +imps += dwarfstack ldflags_inject := \ -mconsole \ -lpsapi \ + -ldbghelp \ libs_inject := \ util \ + dwarfstack \ src_inject := \ main.c \ diff --git a/src/main/inject/debugger.c b/src/main/inject/debugger.c index 724ed9b..77d9244 100644 --- a/src/main/inject/debugger.c +++ b/src/main/inject/debugger.c @@ -11,10 +11,10 @@ #include "inject/debugger.h" #include "inject/logger.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 @@ -271,7 +271,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 bfb6c1b..475e5ab 100644 --- a/src/main/inject/main.c +++ b/src/main/inject/main.c @@ -16,6 +16,7 @@ #include "inject/version.h" #include "util/cmdline.h" +#include "util/debug.h" #include "util/log.h" #include "util/mem.h" #include "util/os.h" @@ -166,6 +167,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);