diff --git a/.gitignore b/.gitignore index c14ae4d..61641b3 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ /TitanEngine/obj /TitanEngine/x64 /TitanEngine/Release +Release/*/* *.layout *.depend *.sdf diff --git a/Release/x32/TitanEngine.dll b/Release/x32/TitanEngine.dll deleted file mode 100644 index 7211f16..0000000 Binary files a/Release/x32/TitanEngine.dll and /dev/null differ diff --git a/Release/x32/TitanEngine.exp b/Release/x32/TitanEngine.exp deleted file mode 100644 index e675986..0000000 Binary files a/Release/x32/TitanEngine.exp and /dev/null differ diff --git a/Release/x32/TitanEngine.lib b/Release/x32/TitanEngine.lib deleted file mode 100644 index dd42327..0000000 Binary files a/Release/x32/TitanEngine.lib and /dev/null differ diff --git a/Release/x64/TitanEngine.dll b/Release/x64/TitanEngine.dll deleted file mode 100644 index b72dd19..0000000 Binary files a/Release/x64/TitanEngine.dll and /dev/null differ diff --git a/Release/x64/TitanEngine.exp b/Release/x64/TitanEngine.exp deleted file mode 100644 index 8307041..0000000 Binary files a/Release/x64/TitanEngine.exp and /dev/null differ diff --git a/Release/x64/TitanEngine.lib b/Release/x64/TitanEngine.lib deleted file mode 100644 index 62fd1da..0000000 Binary files a/Release/x64/TitanEngine.lib and /dev/null differ diff --git a/TitanEngine/TitanEngine.cpp b/TitanEngine/TitanEngine.cpp index 5e8b2d5..edf44b9 100644 --- a/TitanEngine/TitanEngine.cpp +++ b/TitanEngine/TitanEngine.cpp @@ -17337,7 +17337,8 @@ __declspec(dllexport) void TITCALL DebugLoop() { if(BreakPointBuffer[MaximumBreakPoints].MemoryBpxRestoreOnHit != 1) { - RemoveMemoryBPX(BreakPointBuffer[MaximumBreakPoints].BreakPointAddress, BreakPointBuffer[MaximumBreakPoints].BreakPointSize); + if(DBGEvent.u.Exception.ExceptionRecord.ExceptionInformation[0] == 0) //read operation + RemoveMemoryBPX(BreakPointBuffer[MaximumBreakPoints].BreakPointAddress, BreakPointBuffer[MaximumBreakPoints].BreakPointSize); } else { @@ -17378,7 +17379,8 @@ __declspec(dllexport) void TITCALL DebugLoop() { if(BreakPointBuffer[MaximumBreakPoints].MemoryBpxRestoreOnHit != 1) //remove breakpoint { - RemoveMemoryBPX(BreakPointBuffer[MaximumBreakPoints].BreakPointAddress, BreakPointBuffer[MaximumBreakPoints].BreakPointSize); + if(DBGEvent.u.Exception.ExceptionRecord.ExceptionInformation[0] == 1) //write operation + RemoveMemoryBPX(BreakPointBuffer[MaximumBreakPoints].BreakPointAddress, BreakPointBuffer[MaximumBreakPoints].BreakPointSize); } else //restore breakpoint after trap flag { @@ -17419,7 +17421,8 @@ __declspec(dllexport) void TITCALL DebugLoop() { if(BreakPointBuffer[MaximumBreakPoints].MemoryBpxRestoreOnHit != 1) { - RemoveMemoryBPX(BreakPointBuffer[MaximumBreakPoints].BreakPointAddress, BreakPointBuffer[MaximumBreakPoints].BreakPointSize); + if(DBGEvent.u.Exception.ExceptionRecord.ExceptionInformation[0] == 0 && (ULONG_PTR)DBGEvent.u.Exception.ExceptionRecord.ExceptionAddress >= BreakPointBuffer[MaximumBreakPoints].BreakPointAddress && (ULONG_PTR)DBGEvent.u.Exception.ExceptionRecord.ExceptionAddress <= BreakPointBuffer[MaximumBreakPoints].BreakPointAddress + BreakPointBuffer[MaximumBreakPoints].BreakPointSize) //read operation + RemoveMemoryBPX(BreakPointBuffer[MaximumBreakPoints].BreakPointAddress, BreakPointBuffer[MaximumBreakPoints].BreakPointSize); } else { diff --git a/TitanEngine/TitanEngine.workspace b/TitanEngine/TitanEngine.workspace new file mode 100644 index 0000000..6680f1c --- /dev/null +++ b/TitanEngine/TitanEngine.workspace @@ -0,0 +1,6 @@ + + + + + +