From d777ee3590d56d2bff73d4851eab5c4a59ebafd9 Mon Sep 17 00:00:00 2001 From: "Mr. eXoDia" Date: Sun, 18 May 2014 02:20:15 +0200 Subject: [PATCH] - resolved issue #42 (fixed the pre/post filters) - resolved issue #34 (critical sections lock tested & working) - dynamic DLLLoader name (avoids detection + you can debug two DLL files in the same directory) --- TitanEngine/Global.Breakpoints.cpp | 13 ++++--------- TitanEngine/Global.Engine.Threading.cpp | 22 +++++++++++++++------- TitanEngine/Global.Engine.Threading.h | 3 +-- TitanEngine/TitanEngine.Debugger.cpp | 23 +++++++++-------------- TitanEngine/TitanEngine.cpp | 1 - 5 files changed, 29 insertions(+), 33 deletions(-) diff --git a/TitanEngine/Global.Breakpoints.cpp b/TitanEngine/Global.Breakpoints.cpp index f4d78c3..738e05d 100644 --- a/TitanEngine/Global.Breakpoints.cpp +++ b/TitanEngine/Global.Breakpoints.cpp @@ -126,15 +126,10 @@ void BreakPointPostReadFilter(ULONG_PTR lpBaseAddress, unsigned char* lpBuffer, ULONG_PTR cur_addr=curBp->BreakPointAddress; for(SIZE_T j=0; jBreakPointSize; j++) { - if(cur_addr+j==start && cur_addr+j=start && cur_addr+jBreakPointSize-j; - if((cur_addr+n)>end) - n=end-cur_addr; //do not overflow the buffer - memcpy(lpBuffer+index, &curBp->OriginalByte[j], n); - if(n==curBp->BreakPointSize) - break; + memcpy(lpBuffer+index, &curBp->OriginalByte[j], sizeof(char)); } } } @@ -154,7 +149,7 @@ void BreakPointPreWriteFilter(ULONG_PTR lpBaseAddress, SIZE_T nSize, CriticalSec ULONG_PTR cur_addr=curBp->BreakPointAddress; for(SIZE_T j=0; jBreakPointSize; j++) { - if(cur_addr+j==start && cur_addr+j=start && cur_addr+junlock(); DisableBPX(cur_addr); @@ -180,7 +175,7 @@ void BreakPointPostWriteFilter(ULONG_PTR lpBaseAddress, SIZE_T nSize, CriticalSe ULONG_PTR cur_addr=curBp->BreakPointAddress; for(SIZE_T j=0; jBreakPointSize; j++) { - if(cur_addr+j==start && cur_addr+j=start && cur_addr+jBreakPointActive = UE_BPXINACTIVE; //little hack lock->unlock(); diff --git a/TitanEngine/Global.Engine.Threading.cpp b/TitanEngine/Global.Engine.Threading.cpp index a03bbe4..7dea371 100644 --- a/TitanEngine/Global.Engine.Threading.cpp +++ b/TitanEngine/Global.Engine.Threading.cpp @@ -2,37 +2,45 @@ #include "definitions.h" #include "Global.Engine.Threading.h" -static CRITICAL_SECTION locks[LockLast]; +static CRITICAL_SECTION locks[LockLast] = {}; +static bool bInitDone = false; -void CriticalSectionInitializeLocks() +static void CriticalSectionInitializeLocks() { + if(bInitDone) + return; for(int i=0; i