mirror of https://github.com/x64dbg/TitanEngine
Improve debug privilege functionality
This commit is contained in:
parent
ce87d2bea8
commit
2447a299c8
|
|
@ -2066,24 +2066,10 @@ DWORD EngineSetDebugPrivilege(HANDLE hProcess, bool bEnablePrivilege)
|
||||||
|
|
||||||
HANDLE EngineOpenProcess(DWORD dwDesiredAccess, bool bInheritHandle, DWORD dwProcessId)
|
HANDLE EngineOpenProcess(DWORD dwDesiredAccess, bool bInheritHandle, DWORD dwProcessId)
|
||||||
{
|
{
|
||||||
if(engineEnableDebugPrivilege)
|
return OpenProcess(dwDesiredAccess, bInheritHandle, dwProcessId);
|
||||||
EngineSetDebugPrivilege(GetCurrentProcess(), true);
|
|
||||||
HANDLE hProcess = OpenProcess(dwDesiredAccess, bInheritHandle, dwProcessId);
|
|
||||||
DWORD dwLastError = GetLastError();
|
|
||||||
if(engineEnableDebugPrivilege)
|
|
||||||
EngineSetDebugPrivilege(GetCurrentProcess(), false);
|
|
||||||
SetLastError(dwLastError);
|
|
||||||
return hProcess;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
HANDLE EngineOpenThread(DWORD dwDesiredAccess, bool bInheritHandle, DWORD dwThreadId)
|
HANDLE EngineOpenThread(DWORD dwDesiredAccess, bool bInheritHandle, DWORD dwThreadId)
|
||||||
{
|
{
|
||||||
if(engineEnableDebugPrivilege)
|
return OpenThread(dwDesiredAccess, bInheritHandle, dwThreadId);
|
||||||
EngineSetDebugPrivilege(GetCurrentProcess(), true);
|
|
||||||
HANDLE hThread = OpenThread(dwDesiredAccess, bInheritHandle, dwThreadId);
|
|
||||||
DWORD dwLastError = GetLastError();
|
|
||||||
if(engineEnableDebugPrivilege)
|
|
||||||
EngineSetDebugPrivilege(GetCurrentProcess(), false);
|
|
||||||
SetLastError(dwLastError);
|
|
||||||
return hThread;
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -79,8 +79,6 @@ __declspec(dllexport) void* TITCALL InitDebugW(wchar_t* szFileName, wchar_t* szC
|
||||||
}
|
}
|
||||||
if(CreateProcessW(szFileNameCreateProcess, szCommandLineCreateProcess, NULL, NULL, false, DEBUG_PROCESS | DEBUG_ONLY_THIS_PROCESS | DebugConsoleFlag | CREATE_NEW_CONSOLE, NULL, szCurrentFolder, &dbgStartupInfo, &dbgProcessInformation))
|
if(CreateProcessW(szFileNameCreateProcess, szCommandLineCreateProcess, NULL, NULL, false, DEBUG_PROCESS | DEBUG_ONLY_THIS_PROCESS | DebugConsoleFlag | CREATE_NEW_CONSOLE, NULL, szCurrentFolder, &dbgStartupInfo, &dbgProcessInformation))
|
||||||
{
|
{
|
||||||
if(engineEnableDebugPrivilege)
|
|
||||||
EngineSetDebugPrivilege(GetCurrentProcess(), false);
|
|
||||||
DebugAttachedToProcess = false;
|
DebugAttachedToProcess = false;
|
||||||
DebugAttachedProcessCallBack = NULL;
|
DebugAttachedProcessCallBack = NULL;
|
||||||
return &dbgProcessInformation;
|
return &dbgProcessInformation;
|
||||||
|
|
@ -551,8 +549,6 @@ __declspec(dllexport) bool TITCALL AttachDebugger(DWORD ProcessId, bool KillOnEx
|
||||||
}
|
}
|
||||||
if((engineSafeAttach ? DebugActiveProcess_ : DebugActiveProcess)(ProcessId))
|
if((engineSafeAttach ? DebugActiveProcess_ : DebugActiveProcess)(ProcessId))
|
||||||
{
|
{
|
||||||
if(engineEnableDebugPrivilege)
|
|
||||||
EngineSetDebugPrivilege(GetCurrentProcess(), false);
|
|
||||||
funcDebugSetProcessKillOnExit = GetProcAddress(GetModuleHandleA("kernel32.dll"), "DebugSetProcessKillOnExit");
|
funcDebugSetProcessKillOnExit = GetProcAddress(GetModuleHandleA("kernel32.dll"), "DebugSetProcessKillOnExit");
|
||||||
if(funcDebugSetProcessKillOnExit != NULL)
|
if(funcDebugSetProcessKillOnExit != NULL)
|
||||||
{
|
{
|
||||||
|
|
@ -570,6 +566,11 @@ __declspec(dllexport) bool TITCALL AttachDebugger(DWORD ProcessId, bool KillOnEx
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (engineEnableDebugPrivilege)
|
||||||
|
{
|
||||||
|
EngineSetDebugPrivilege(GetCurrentProcess(), false);
|
||||||
|
DebugRemoveDebugPrivilege = false;
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue