From 04bde865d915aa8befab157b68f6cd7f687095af Mon Sep 17 00:00:00 2001 From: Duncan Ogilvie Date: Sun, 30 Aug 2026 14:23:25 +0200 Subject: [PATCH] Fix public API surface --- TitanEngine/Global.Debugger.h | 4 ++++ TitanEngine/TitanEngine.Debugger.Helper.cpp | 4 ++++ TitanEngine/TitanEngine.Disassembler.cpp | 12 ++---------- TitanEngine/definitions.h | 7 ------- 4 files changed, 10 insertions(+), 17 deletions(-) diff --git a/TitanEngine/Global.Debugger.h b/TitanEngine/Global.Debugger.h index d0b8e11..cc3f5be 100644 --- a/TitanEngine/Global.Debugger.h +++ b/TitanEngine/Global.Debugger.h @@ -59,5 +59,9 @@ void ClearProcessList(); void ClearTlsCallBackList(); void StepOutStepCallBack(); BOOL WINAPI DebugActiveProcess_(IN DWORD dwProcessId); +void* EngineStaticDisassembleEx(ULONG_PTR DisassmStart, LPVOID DisassmAddress, bool Is32Bit); +void* EngineDisassembleEx(HANDLE hProcess, LPVOID DisassmAddress, bool ReturnInstructionType, bool Is32Bit); +long EngineStaticLengthDisassemble(LPVOID DisassmAddress, bool Is32Bit); +long EngineLengthDisassembleEx(HANDLE hProcess, LPVOID DisassmAddress, bool Is32Bit); #endif //_GLOBAL_DEBUGGER_H diff --git a/TitanEngine/TitanEngine.Debugger.Helper.cpp b/TitanEngine/TitanEngine.Debugger.Helper.cpp index 40c6e5a..a028205 100644 --- a/TitanEngine/TitanEngine.Debugger.Helper.cpp +++ b/TitanEngine/TitanEngine.Debugger.Helper.cpp @@ -122,7 +122,11 @@ __declspec(dllexport) ULONG_PTR TITCALL GetFunctionParameter(HANDLE hProcess, DW : x64Registers[ParameterNumber - 1]; ULONG_PTR registerValue = (ULONG_PTR)GetContextData(registerIndex); if(!ValueIsPointer) + { + if(StackReadSize < sizeof(registerValue)) + registerValue &= (ULONG_PTR(1) << (StackReadSize * 8)) - 1; return registerValue; + } StackReadAddress = registerValue; } else diff --git a/TitanEngine/TitanEngine.Disassembler.cpp b/TitanEngine/TitanEngine.Disassembler.cpp index d952977..ee40d94 100644 --- a/TitanEngine/TitanEngine.Disassembler.cpp +++ b/TitanEngine/TitanEngine.Disassembler.cpp @@ -1,7 +1,6 @@ #include "stdafx.h" #include "definitions.h" #include "Global.Debugger.h" -#include "Global.Engine.Context.h" #include "distorm.h" static char engineDisassembledInstruction[128]; @@ -20,13 +19,6 @@ static _DecodeType GetDecodingType(bool Is32Bit) return Is32Bit ? Decode32Bits : Decode64Bits; } -static bool GetProcessMode(HANDLE hProcess) -{ - if(hProcess != NULL && hProcess == dbgProcessInformation.hProcess && DBGEvent.dwThreadId != 0) - return EngineGetCurrentContextMode() == EngineContextMode::X86; - return DefaultIs32Bit(); -} - SIZE_T IsBadReadPtrRemote(HANDLE hProcess, const VOID* lp, SIZE_T length) { @@ -153,7 +145,7 @@ void* EngineDisassembleEx(HANDLE hProcess, LPVOID DisassmAddress, bool ReturnIns __declspec(dllexport) void* TITCALL DisassembleEx(HANDLE hProcess, LPVOID DisassmAddress, bool ReturnInstructionType) { - return EngineDisassembleEx(hProcess, DisassmAddress, ReturnInstructionType, GetProcessMode(hProcess)); + return EngineDisassembleEx(hProcess, DisassmAddress, ReturnInstructionType, DefaultIs32Bit()); } __declspec(dllexport) void* TITCALL Disassemble(LPVOID DisassmAddress) @@ -204,7 +196,7 @@ long EngineLengthDisassembleEx(HANDLE hProcess, LPVOID DisassmAddress, bool Is32 __declspec(dllexport) long TITCALL LengthDisassembleEx(HANDLE hProcess, LPVOID DisassmAddress) { - return EngineLengthDisassembleEx(hProcess, DisassmAddress, GetProcessMode(hProcess)); + return EngineLengthDisassembleEx(hProcess, DisassmAddress, DefaultIs32Bit()); } __declspec(dllexport) long TITCALL LengthDisassemble(LPVOID DisassmAddress) diff --git a/TitanEngine/definitions.h b/TitanEngine/definitions.h index 916b584..0f110f1 100644 --- a/TitanEngine/definitions.h +++ b/TitanEngine/definitions.h @@ -159,13 +159,6 @@ __declspec(dllexport) long TITCALL StaticLengthDisassemble(LPVOID DisassmAddress __declspec(dllexport) long TITCALL LengthDisassembleEx(HANDLE hProcess, LPVOID DisassmAddress); __declspec(dllexport) long TITCALL LengthDisassemble(LPVOID DisassmAddress); -// Internal variants used when the current thread mode is known. The exported -// static APIs keep their historical build-architecture behavior. -void* EngineStaticDisassembleEx(ULONG_PTR DisassmStart, LPVOID DisassmAddress, bool Is32Bit); -void* EngineDisassembleEx(HANDLE hProcess, LPVOID DisassmAddress, bool ReturnInstructionType, bool Is32Bit); -long EngineStaticLengthDisassemble(LPVOID DisassmAddress, bool Is32Bit); -long EngineLengthDisassembleEx(HANDLE hProcess, LPVOID DisassmAddress, bool Is32Bit); - __declspec(dllexport) void* TITCALL InitDebug(char* szFileName, char* szCommandLine, char* szCurrentFolder); __declspec(dllexport) void* TITCALL InitDebugW(wchar_t* szFileName, wchar_t* szCommandLine, wchar_t* szCurrentFolder); __declspec(dllexport) void* TITCALL InitNativeDebug(char* szFileName, char* szCommandLine, char* szCurrentFolder);