diff --git a/SDK/C/TitanEngine.h b/SDK/C/TitanEngine.h index 7b181cf..c64fb1b 100644 --- a/SDK/C/TitanEngine.h +++ b/SDK/C/TitanEngine.h @@ -58,6 +58,8 @@ #define UE_ENGINE_SET_DEBUG_PRIVILEGE 9 #define UE_ENGINE_SAFE_ATTACH 10 #define UE_ENGINE_MEMBP_ALT 11 +#define UE_ENGINE_DISABLE_ASLR 12 +#define UE_ENGINE_SAFE_STEP 13 #define UE_OPTION_REMOVEALL 1 #define UE_OPTION_DISABLEALL 2 diff --git a/TitanEngine/Global.Engine.cpp b/TitanEngine/Global.Engine.cpp index 745d36f..b1ae70a 100644 --- a/TitanEngine/Global.Engine.cpp +++ b/TitanEngine/Global.Engine.cpp @@ -21,6 +21,7 @@ bool engineEnableDebugPrivilege = false; bool engineSafeAttach = false; bool engineMembpAlt = false; bool engineDisableAslr = false; +bool engineSafeStep = true; char engineFoundDLLName[512] = {0}; char engineFoundAPIName[512] = {0}; diff --git a/TitanEngine/Global.Engine.h b/TitanEngine/Global.Engine.h index 0ab22e8..f63f7bc 100644 --- a/TitanEngine/Global.Engine.h +++ b/TitanEngine/Global.Engine.h @@ -24,6 +24,7 @@ extern bool engineEnableDebugPrivilege; extern bool engineSafeAttach; extern bool engineMembpAlt; extern bool engineDisableAslr; +extern bool engineSafeStep; //Global.Engine.Functions void EngineInit(); diff --git a/TitanEngine/TitanEngine.Debugger.DebugLoop.cpp b/TitanEngine/TitanEngine.Debugger.DebugLoop.cpp index 4199eaf..7f02216 100644 --- a/TitanEngine/TitanEngine.Debugger.DebugLoop.cpp +++ b/TitanEngine/TitanEngine.Debugger.DebugLoop.cpp @@ -88,7 +88,7 @@ __declspec(dllexport) void TITCALL DebugLoop() const uint32_t NtBuildNumber = *(uint32_t*)(0x7FFE0000 + 0x260); if(NtBuildNumber != 0 && NtBuildNumber >= 10240) { - IsDbgReplyLaterSupported = true; + IsDbgReplyLaterSupported = engineSafeStep; } DBGFileHandle = NULL; diff --git a/TitanEngine/TitanEngine.Engine.cpp b/TitanEngine/TitanEngine.Engine.cpp index fab5df0..e022ffe 100644 --- a/TitanEngine/TitanEngine.Engine.cpp +++ b/TitanEngine/TitanEngine.Engine.cpp @@ -56,6 +56,10 @@ __declspec(dllexport) void TITCALL SetEngineVariable(DWORD VariableId, bool Vari { engineDisableAslr = VariableSet; } + else if (VariableId == UE_ENGINE_SAFE_STEP) + { + engineSafeStep = VariableSet; + } } __declspec(dllexport) bool TITCALL EngineCreateMissingDependencies(char* szFileName, char* szOutputFolder, bool LogCreatedFiles) diff --git a/TitanEngine/stdafx.h b/TitanEngine/stdafx.h index 72073ec..bf86613 100644 --- a/TitanEngine/stdafx.h +++ b/TitanEngine/stdafx.h @@ -473,6 +473,7 @@ typedef struct HOOK_ENTRY #define UE_ENGINE_SAFE_ATTACH 10 #define UE_ENGINE_MEMBP_ALT 11 #define UE_ENGINE_DISABLE_ASLR 12 +#define UE_ENGINE_SAFE_STEP 13 #define UE_OPTION_REMOVEALL 1 #define UE_OPTION_DISABLEALL 2