mirror of https://github.com/x64dbg/TitanEngine
added UE_CH_DEBUGEVENT custom handler, removed UE_CH_ALLEVENTS (since it's not usable anyway)
This commit is contained in:
parent
c6d15d788e
commit
3c8b51aa52
|
|
@ -136,10 +136,10 @@
|
||||||
#define UE_CH_UNLOADDLL 19
|
#define UE_CH_UNLOADDLL 19
|
||||||
#define UE_CH_OUTPUTDEBUGSTRING 20
|
#define UE_CH_OUTPUTDEBUGSTRING 20
|
||||||
#define UE_CH_AFTEREXCEPTIONPROCESSING 21
|
#define UE_CH_AFTEREXCEPTIONPROCESSING 21
|
||||||
#define UE_CH_ALLEVENTS 22
|
|
||||||
#define UE_CH_SYSTEMBREAKPOINT 23
|
#define UE_CH_SYSTEMBREAKPOINT 23
|
||||||
#define UE_CH_UNHANDLEDEXCEPTION 24
|
#define UE_CH_UNHANDLEDEXCEPTION 24
|
||||||
#define UE_CH_RIPEVENT 25
|
#define UE_CH_RIPEVENT 25
|
||||||
|
#define UE_CH_DEBUGEVENT 26
|
||||||
|
|
||||||
#define UE_OPTION_HANDLER_RETURN_HANDLECOUNT 1
|
#define UE_OPTION_HANDLER_RETURN_HANDLECOUNT 1
|
||||||
#define UE_OPTION_HANDLER_RETURN_ACCESS 2
|
#define UE_OPTION_HANDLER_RETURN_ACCESS 2
|
||||||
|
|
|
||||||
|
|
@ -136,10 +136,10 @@ const BYTE UE_CH_LOADDLL = 18;
|
||||||
const BYTE UE_CH_UNLOADDLL = 19;
|
const BYTE UE_CH_UNLOADDLL = 19;
|
||||||
const BYTE UE_CH_OUTPUTDEBUGSTRING = 20;
|
const BYTE UE_CH_OUTPUTDEBUGSTRING = 20;
|
||||||
const BYTE UE_CH_AFTEREXCEPTIONPROCESSING = 21;
|
const BYTE UE_CH_AFTEREXCEPTIONPROCESSING = 21;
|
||||||
const BYTE UE_CH_ALLEVENTS = 22;
|
|
||||||
const BYTE UE_CH_SYSTEMBREAKPOINT = 23;
|
const BYTE UE_CH_SYSTEMBREAKPOINT = 23;
|
||||||
const BYTE UE_CH_UNHANDLEDEXCEPTION = 24;
|
const BYTE UE_CH_UNHANDLEDEXCEPTION = 24;
|
||||||
const BYTE UE_CH_RIPEVENT = 25;
|
const BYTE UE_CH_RIPEVENT = 25;
|
||||||
|
const BYTE UE_CH_DEBUGEVENT = 26;
|
||||||
|
|
||||||
const BYTE UE_OPTION_HANDLER_RETURN_HANDLECOUNT = 1;
|
const BYTE UE_OPTION_HANDLER_RETURN_HANDLECOUNT = 1;
|
||||||
const BYTE UE_OPTION_HANDLER_RETURN_ACCESS = 2;
|
const BYTE UE_OPTION_HANDLER_RETURN_ACCESS = 2;
|
||||||
|
|
|
||||||
|
|
@ -186,10 +186,10 @@ enum eCustomException : DWORD
|
||||||
UE_CH_UNLOADDLL = UE::UE_CH_UNLOADDLL,
|
UE_CH_UNLOADDLL = UE::UE_CH_UNLOADDLL,
|
||||||
UE_CH_OUTPUTDEBUGSTRING = UE::UE_CH_OUTPUTDEBUGSTRING,
|
UE_CH_OUTPUTDEBUGSTRING = UE::UE_CH_OUTPUTDEBUGSTRING,
|
||||||
UE_CH_AFTEREXCEPTIONPROCESSING = UE::UE_CH_AFTEREXCEPTIONPROCESSING,
|
UE_CH_AFTEREXCEPTIONPROCESSING = UE::UE_CH_AFTEREXCEPTIONPROCESSING,
|
||||||
UE_CH_ALLEVENTS = UE::UE_CH_ALLEVENTS,
|
|
||||||
UE_CH_SYSTEMBREAKPOINT = UE::UE_CH_SYSTEMBREAKPOINT,
|
UE_CH_SYSTEMBREAKPOINT = UE::UE_CH_SYSTEMBREAKPOINT,
|
||||||
UE_CH_UNHANDLEDEXCEPTION = UE::UE_CH_UNHANDLEDEXCEPTION,
|
UE_CH_UNHANDLEDEXCEPTION = UE::UE_CH_UNHANDLEDEXCEPTION,
|
||||||
UE_CH_RIPEVENT = UE::UE_CH_RIPEVENT
|
UE_CH_RIPEVENT = UE::UE_CH_RIPEVENT,
|
||||||
|
UE_CH_DEBUGEVENT = UE::UE_CH_DEBUGEVENT
|
||||||
};
|
};
|
||||||
|
|
||||||
enum eHandlerReturnType : DWORD
|
enum eHandlerReturnType : DWORD
|
||||||
|
|
|
||||||
|
|
@ -259,10 +259,10 @@ const
|
||||||
UE_CH_UNLOADDLL = 19;
|
UE_CH_UNLOADDLL = 19;
|
||||||
UE_CH_OUTPUTDEBUGSTRING = 20;
|
UE_CH_OUTPUTDEBUGSTRING = 20;
|
||||||
UE_CH_AFTEREXCEPTIONPROCESSING = 21;
|
UE_CH_AFTEREXCEPTIONPROCESSING = 21;
|
||||||
UE_CH_ALLEVENTS = 22;
|
|
||||||
UE_CH_SYSTEMBREAKPOINT = 23;
|
UE_CH_SYSTEMBREAKPOINT = 23;
|
||||||
UE_CH_UNHANDLEDEXCEPTION = 24;
|
UE_CH_UNHANDLEDEXCEPTION = 24;
|
||||||
UE_CH_RIPEVENT = 25
|
UE_CH_RIPEVENT = 25;
|
||||||
|
UE_CH_DEBUGEVENT = 26;
|
||||||
|
|
||||||
UE_FUNCTION_STDCALL = 1;
|
UE_FUNCTION_STDCALL = 1;
|
||||||
UE_FUNCTION_CCALL = 2;
|
UE_FUNCTION_CCALL = 2;
|
||||||
|
|
|
||||||
|
|
@ -116,10 +116,10 @@ UE_CH_LOADDLL = 18
|
||||||
UE_CH_UNLOADDLL = 19
|
UE_CH_UNLOADDLL = 19
|
||||||
UE_CH_OUTPUTDEBUGSTRING = 20
|
UE_CH_OUTPUTDEBUGSTRING = 20
|
||||||
UE_CH_AFTEREXCEPTIONPROCESSING = 21
|
UE_CH_AFTEREXCEPTIONPROCESSING = 21
|
||||||
UE_CH_ALLEVENTS = 22
|
|
||||||
UE_CH_SYSTEMBREAKPOINT = 23
|
UE_CH_SYSTEMBREAKPOINT = 23
|
||||||
UE_CH_UNHANDLEDEXCEPTION = 24
|
UE_CH_UNHANDLEDEXCEPTION = 24
|
||||||
UE_CH_RIPEVENT = 25
|
UE_CH_RIPEVENT = 25
|
||||||
|
UE_CH_DEBUGEVENT = 26
|
||||||
|
|
||||||
UE_OPTION_HANDLER_RETURN_HANDLECOUNT = 1
|
UE_OPTION_HANDLER_RETURN_HANDLECOUNT = 1
|
||||||
UE_OPTION_HANDLER_RETURN_ACCESS = 2
|
UE_OPTION_HANDLER_RETURN_ACCESS = 2
|
||||||
|
|
|
||||||
|
|
@ -94,10 +94,10 @@ UE_CH_LOADDLL EQU 18
|
||||||
UE_CH_UNLOADDLL EQU 19
|
UE_CH_UNLOADDLL EQU 19
|
||||||
UE_CH_OUTPUTDEBUGSTRING EQU 20
|
UE_CH_OUTPUTDEBUGSTRING EQU 20
|
||||||
UE_CH_AFTEREXCEPTIONPROCESSING EQU 21
|
UE_CH_AFTEREXCEPTIONPROCESSING EQU 21
|
||||||
UE_CH_ALLEVENTS EQU 22
|
|
||||||
UE_CH_SYSTEMBREAKPOINT EQU 23
|
UE_CH_SYSTEMBREAKPOINT EQU 23
|
||||||
UE_CH_UNHANDLEDEXCEPTION EQU 24
|
UE_CH_UNHANDLEDEXCEPTION EQU 24
|
||||||
UE_CH_RIPEVENT EQU 25
|
UE_CH_RIPEVENT EQU 25
|
||||||
|
UE_CH_DEBUGEVENT EQU 26
|
||||||
|
|
||||||
UE_OPTION_HANDLER_RETURN_HANDLECOUNT EQU 1
|
UE_OPTION_HANDLER_RETURN_HANDLECOUNT EQU 1
|
||||||
UE_OPTION_HANDLER_RETURN_ACCESS EQU 2
|
UE_OPTION_HANDLER_RETURN_ACCESS EQU 2
|
||||||
|
|
|
||||||
|
|
@ -107,10 +107,10 @@ UE_CH_LOADDLL = 18
|
||||||
UE_CH_UNLOADDLL = 19
|
UE_CH_UNLOADDLL = 19
|
||||||
UE_CH_OUTPUTDEBUGSTRING = 20
|
UE_CH_OUTPUTDEBUGSTRING = 20
|
||||||
UE_CH_AFTEREXCEPTIONPROCESSING = 21
|
UE_CH_AFTEREXCEPTIONPROCESSING = 21
|
||||||
UE_CH_ALLEVENTS = 22
|
|
||||||
UE_CH_SYSTEMBREAKPOINT = 23
|
UE_CH_SYSTEMBREAKPOINT = 23
|
||||||
UE_CH_UNHANDLEDEXCEPTION = 24
|
UE_CH_UNHANDLEDEXCEPTION = 24
|
||||||
UE_CH_RIPEVENT = 25
|
UE_CH_RIPEVENT = 25
|
||||||
|
UE_CH_DEBUGEVENT = 26
|
||||||
|
|
||||||
UE_OPTION_HANDLER_RETURN_HANDLECOUNT = 1
|
UE_OPTION_HANDLER_RETURN_HANDLECOUNT = 1
|
||||||
UE_OPTION_HANDLER_RETURN_ACCESS = 2
|
UE_OPTION_HANDLER_RETURN_ACCESS = 2
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,6 @@ __declspec(dllexport) ULONG_PTR TITCALL GetDebuggedFileBaseAddress()
|
||||||
|
|
||||||
__declspec(dllexport) void TITCALL SetCustomHandler(DWORD ExceptionId, LPVOID CallBack)
|
__declspec(dllexport) void TITCALL SetCustomHandler(DWORD ExceptionId, LPVOID CallBack)
|
||||||
{
|
{
|
||||||
|
|
||||||
if(ExceptionId == UE_CH_BREAKPOINT)
|
if(ExceptionId == UE_CH_BREAKPOINT)
|
||||||
{
|
{
|
||||||
DBGCustomHandler->chBreakPoint = (ULONG_PTR)CallBack;
|
DBGCustomHandler->chBreakPoint = (ULONG_PTR)CallBack;
|
||||||
|
|
@ -139,18 +138,9 @@ __declspec(dllexport) void TITCALL SetCustomHandler(DWORD ExceptionId, LPVOID Ca
|
||||||
{
|
{
|
||||||
DBGCustomHandler->chRipEvent = (ULONG_PTR)CallBack;
|
DBGCustomHandler->chRipEvent = (ULONG_PTR)CallBack;
|
||||||
}
|
}
|
||||||
else if(ExceptionId == UE_CH_ALLEVENTS)
|
else if(ExceptionId == UE_CH_DEBUGEVENT)
|
||||||
{
|
{
|
||||||
DBGCustomHandler->chEverythingElse = (ULONG_PTR)CallBack;
|
DBGCustomHandler->chDebugEvent = (ULONG_PTR)CallBack;
|
||||||
DBGCustomHandler->chCreateThread = (ULONG_PTR)CallBack;
|
|
||||||
DBGCustomHandler->chExitThread = (ULONG_PTR)CallBack;
|
|
||||||
DBGCustomHandler->chCreateProcess = (ULONG_PTR)CallBack;
|
|
||||||
DBGCustomHandler->chExitProcess = (ULONG_PTR)CallBack;
|
|
||||||
DBGCustomHandler->chLoadDll = (ULONG_PTR)CallBack;
|
|
||||||
DBGCustomHandler->chUnloadDll = (ULONG_PTR)CallBack;
|
|
||||||
DBGCustomHandler->chOutputDebugString = (ULONG_PTR)CallBack;
|
|
||||||
DBGCustomHandler->chSystemBreakpoint = (ULONG_PTR)CallBack;
|
|
||||||
DBGCustomHandler->chRipEvent = (ULONG_PTR)CallBack;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -84,6 +84,20 @@ __declspec(dllexport) void TITCALL DebugLoop()
|
||||||
ExtensionManagerPluginDebugCallBack(&DBGEvent, UE_PLUGIN_CALL_REASON_EXCEPTION);
|
ExtensionManagerPluginDebugCallBack(&DBGEvent, UE_PLUGIN_CALL_REASON_EXCEPTION);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Debug event custom handler
|
||||||
|
if(DBGCustomHandler->chDebugEvent != NULL)
|
||||||
|
{
|
||||||
|
myCustomHandler = (fCustomHandler)((LPVOID)DBGCustomHandler->chDebugEvent);
|
||||||
|
__try
|
||||||
|
{
|
||||||
|
myCustomHandler(&DBGEvent);
|
||||||
|
}
|
||||||
|
__except(EXCEPTION_EXECUTE_HANDLER)
|
||||||
|
{
|
||||||
|
DBGCustomHandler->chDebugEvent = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//Debug event
|
//Debug event
|
||||||
switch(DBGEvent.dwDebugEventCode)
|
switch(DBGEvent.dwDebugEventCode)
|
||||||
{
|
{
|
||||||
|
|
@ -1349,7 +1363,7 @@ __declspec(dllexport) void TITCALL DebugLoop()
|
||||||
}
|
}
|
||||||
__except(EXCEPTION_EXECUTE_HANDLER)
|
__except(EXCEPTION_EXECUTE_HANDLER)
|
||||||
{
|
{
|
||||||
DBGCustomHandler->chSystemBreakpoint = NULL;
|
DBGCustomHandler->chRipEvent = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -212,6 +212,7 @@ typedef struct
|
||||||
ULONG_PTR chSystemBreakpoint;
|
ULONG_PTR chSystemBreakpoint;
|
||||||
ULONG_PTR chUnhandledException;
|
ULONG_PTR chUnhandledException;
|
||||||
ULONG_PTR chRipEvent;
|
ULONG_PTR chRipEvent;
|
||||||
|
ULONG_PTR chDebugEvent;
|
||||||
} CustomHandler, *PCustomHandler;
|
} CustomHandler, *PCustomHandler;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
|
|
@ -445,10 +446,10 @@ typedef struct HOOK_ENTRY
|
||||||
#define UE_CH_UNLOADDLL 19
|
#define UE_CH_UNLOADDLL 19
|
||||||
#define UE_CH_OUTPUTDEBUGSTRING 20
|
#define UE_CH_OUTPUTDEBUGSTRING 20
|
||||||
#define UE_CH_AFTEREXCEPTIONPROCESSING 21
|
#define UE_CH_AFTEREXCEPTIONPROCESSING 21
|
||||||
#define UE_CH_ALLEVENTS 22
|
|
||||||
#define UE_CH_SYSTEMBREAKPOINT 23
|
#define UE_CH_SYSTEMBREAKPOINT 23
|
||||||
#define UE_CH_UNHANDLEDEXCEPTION 24
|
#define UE_CH_UNHANDLEDEXCEPTION 24
|
||||||
#define UE_CH_RIPEVENT 25
|
#define UE_CH_RIPEVENT 25
|
||||||
|
#define UE_CH_DEBUGEVENT 26
|
||||||
|
|
||||||
#define UE_OPTION_HANDLER_RETURN_HANDLECOUNT 1
|
#define UE_OPTION_HANDLER_RETURN_HANDLECOUNT 1
|
||||||
#define UE_OPTION_HANDLER_RETURN_ACCESS 2
|
#define UE_OPTION_HANDLER_RETURN_ACCESS 2
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue