diff --git a/GleeBug/Debugger.Loop.cpp b/GleeBug/Debugger.Loop.cpp index 9d6fb99..8aa0d9f 100644 --- a/GleeBug/Debugger.Loop.cpp +++ b/GleeBug/Debugger.Loop.cpp @@ -6,6 +6,7 @@ namespace GleeBug { //initialize loop variables _breakDebugger = false; + _isDebugging = true; while (!_breakDebugger) { @@ -104,5 +105,6 @@ namespace GleeBug //cleanup _processes.clear(); _process = nullptr; + _isDebugging = false; } }; \ No newline at end of file diff --git a/GleeBug/Debugger.Process.Memory.cpp b/GleeBug/Debugger.Process.Memory.cpp index 722f8ad..cb21f84 100644 --- a/GleeBug/Debugger.Process.Memory.cpp +++ b/GleeBug/Debugger.Process.Memory.cpp @@ -4,12 +4,15 @@ namespace GleeBug { bool ProcessInfo::MemRead(ptr address, void* buffer, ptr size, ptr* bytesRead) const { - return !!ReadProcessMemory(this->hProcess, reinterpret_cast(address), buffer, size, nullptr); + ptr read; + if (!bytesRead) + bytesRead = &read; + return !!ReadProcessMemory(this->hProcess, reinterpret_cast(address), buffer, size, (SIZE_T*)bytesRead); } bool ProcessInfo::MemReadSafe(ptr address, void* buffer, ptr size, ptr* bytesRead) const { - if (!MemRead(address, buffer, size)) + if (!MemRead(address, buffer, size, bytesRead)) return false; //choose the filter method that has the lowest cost @@ -53,7 +56,10 @@ namespace GleeBug bool ProcessInfo::MemWrite(ptr address, const void* buffer, ptr size, ptr* bytesWritten) { - return !!WriteProcessMemory(this->hProcess, reinterpret_cast(address), buffer, size, nullptr); + ptr written; + if (!bytesWritten) + bytesWritten = &written; + return !!WriteProcessMemory(this->hProcess, reinterpret_cast(address), buffer, size, (SIZE_T*)bytesWritten); } bool ProcessInfo::MemWriteSafe(ptr address, const void* buffer, ptr size, ptr* bytesWritten) diff --git a/GleeBug/Debugger.h b/GleeBug/Debugger.h index 2192d17..1eed499 100644 --- a/GleeBug/Debugger.h +++ b/GleeBug/Debugger.h @@ -249,6 +249,7 @@ namespace GleeBug DEBUG_EVENT _debugEvent; ProcessMap _processes; bool _isRunning = false; + bool _isDebugging = false; /** \brief The current process (can be null in some cases).