mirror of https://github.com/x64dbg/TitanEngine
removed the locks from Debugger.Context, now DBGContext is a local variable everywhere.
This commit is contained in:
parent
cbe59495aa
commit
aa8e991f08
|
|
@ -5,13 +5,11 @@
|
||||||
#include "Global.Handle.h"
|
#include "Global.Handle.h"
|
||||||
#include "Global.Engine.Threading.h"
|
#include "Global.Engine.Threading.h"
|
||||||
|
|
||||||
static CONTEXT DBGContext = {};
|
|
||||||
|
|
||||||
__declspec(dllexport) bool TITCALL GetContextFPUDataEx(HANDLE hActiveThread, void* FPUSaveArea)
|
__declspec(dllexport) bool TITCALL GetContextFPUDataEx(HANDLE hActiveThread, void* FPUSaveArea)
|
||||||
{
|
{
|
||||||
MutexLocker locker("DBGContext"); //lock DBGContext
|
|
||||||
if(FPUSaveArea)
|
if(FPUSaveArea)
|
||||||
{
|
{
|
||||||
|
CONTEXT DBGContext;
|
||||||
memset(&DBGContext, 0, sizeof(CONTEXT));
|
memset(&DBGContext, 0, sizeof(CONTEXT));
|
||||||
DBGContext.ContextFlags = CONTEXT_ALL;
|
DBGContext.ContextFlags = CONTEXT_ALL;
|
||||||
|
|
||||||
|
|
@ -36,10 +34,8 @@ __declspec(dllexport) bool TITCALL GetContextFPUDataEx(HANDLE hActiveThread, voi
|
||||||
|
|
||||||
__declspec(dllexport) ULONG_PTR TITCALL GetContextDataEx(HANDLE hActiveThread, DWORD IndexOfRegister)
|
__declspec(dllexport) ULONG_PTR TITCALL GetContextDataEx(HANDLE hActiveThread, DWORD IndexOfRegister)
|
||||||
{
|
{
|
||||||
MutexLocker locker("DBGContext"); //lock DBGContext
|
|
||||||
|
|
||||||
ULONG_PTR retValue = 0;
|
ULONG_PTR retValue = 0;
|
||||||
|
CONTEXT DBGContext;
|
||||||
memset(&DBGContext, 0, sizeof(CONTEXT));
|
memset(&DBGContext, 0, sizeof(CONTEXT));
|
||||||
DBGContext.ContextFlags = CONTEXT_ALL;
|
DBGContext.ContextFlags = CONTEXT_ALL;
|
||||||
|
|
||||||
|
|
@ -277,7 +273,6 @@ __declspec(dllexport) ULONG_PTR TITCALL GetContextDataEx(HANDLE hActiveThread, D
|
||||||
|
|
||||||
__declspec(dllexport) ULONG_PTR TITCALL GetContextData(DWORD IndexOfRegister)
|
__declspec(dllexport) ULONG_PTR TITCALL GetContextData(DWORD IndexOfRegister)
|
||||||
{
|
{
|
||||||
MutexLocker locker("DBGContext"); //lock DBGContext
|
|
||||||
HANDLE hActiveThread = OpenThread(THREAD_SUSPEND_RESUME|THREAD_GET_CONTEXT, false, DBGEvent.dwThreadId);
|
HANDLE hActiveThread = OpenThread(THREAD_SUSPEND_RESUME|THREAD_GET_CONTEXT, false, DBGEvent.dwThreadId);
|
||||||
ULONG_PTR ContextReturn = GetContextDataEx(hActiveThread, IndexOfRegister);
|
ULONG_PTR ContextReturn = GetContextDataEx(hActiveThread, IndexOfRegister);
|
||||||
EngineCloseHandle(hActiveThread);
|
EngineCloseHandle(hActiveThread);
|
||||||
|
|
@ -286,9 +281,9 @@ __declspec(dllexport) ULONG_PTR TITCALL GetContextData(DWORD IndexOfRegister)
|
||||||
|
|
||||||
__declspec(dllexport) bool TITCALL SetContextFPUDataEx(HANDLE hActiveThread, void* FPUSaveArea)
|
__declspec(dllexport) bool TITCALL SetContextFPUDataEx(HANDLE hActiveThread, void* FPUSaveArea)
|
||||||
{
|
{
|
||||||
MutexLocker locker("DBGContext"); //lock DBGContext
|
|
||||||
if(FPUSaveArea)
|
if(FPUSaveArea)
|
||||||
{
|
{
|
||||||
|
CONTEXT DBGContext;
|
||||||
memset(&DBGContext, 0, sizeof(CONTEXT));
|
memset(&DBGContext, 0, sizeof(CONTEXT));
|
||||||
DBGContext.ContextFlags = CONTEXT_ALL;
|
DBGContext.ContextFlags = CONTEXT_ALL;
|
||||||
|
|
||||||
|
|
@ -317,7 +312,7 @@ __declspec(dllexport) bool TITCALL SetContextFPUDataEx(HANDLE hActiveThread, voi
|
||||||
|
|
||||||
__declspec(dllexport) bool TITCALL SetContextDataEx(HANDLE hActiveThread, DWORD IndexOfRegister, ULONG_PTR NewRegisterValue)
|
__declspec(dllexport) bool TITCALL SetContextDataEx(HANDLE hActiveThread, DWORD IndexOfRegister, ULONG_PTR NewRegisterValue)
|
||||||
{
|
{
|
||||||
MutexLocker locker("DBGContext"); //lock DBGContext
|
CONTEXT DBGContext;
|
||||||
memset(&DBGContext, 0, sizeof(CONTEXT));
|
memset(&DBGContext, 0, sizeof(CONTEXT));
|
||||||
DBGContext.ContextFlags = CONTEXT_ALL;
|
DBGContext.ContextFlags = CONTEXT_ALL;
|
||||||
|
|
||||||
|
|
@ -576,7 +571,6 @@ __declspec(dllexport) bool TITCALL SetContextDataEx(HANDLE hActiveThread, DWORD
|
||||||
|
|
||||||
__declspec(dllexport) bool TITCALL SetContextData(DWORD IndexOfRegister, ULONG_PTR NewRegisterValue)
|
__declspec(dllexport) bool TITCALL SetContextData(DWORD IndexOfRegister, ULONG_PTR NewRegisterValue)
|
||||||
{
|
{
|
||||||
MutexLocker locker("DBGContext"); //lock DBGContext
|
|
||||||
HANDLE hActiveThread = OpenThread(THREAD_SUSPEND_RESUME|THREAD_SET_CONTEXT|THREAD_GET_CONTEXT, false, DBGEvent.dwThreadId);
|
HANDLE hActiveThread = OpenThread(THREAD_SUSPEND_RESUME|THREAD_SET_CONTEXT|THREAD_GET_CONTEXT, false, DBGEvent.dwThreadId);
|
||||||
bool ContextReturn = SetContextDataEx(hActiveThread, IndexOfRegister, NewRegisterValue);
|
bool ContextReturn = SetContextDataEx(hActiveThread, IndexOfRegister, NewRegisterValue);
|
||||||
EngineCloseHandle(hActiveThread);
|
EngineCloseHandle(hActiveThread);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue