mirror of https://github.com/x64dbg/TitanEngine
Two fixes from PR review of the thread-exit reset-recovery: - When restoring the hardware breakpoint after the stepped-over thread exits, rebuild each still-suspended thread's debug registers from the authoritative DebugRegister[] table (re-arming every enabled slot, as CREATE_THREAD does) instead of from the exiting thread's now-gone context. The old code rebuilt DR7 from GetContextData() (the dead thread), writing a DR7 with only the restored slot to every thread and silently disabling any other hardware breakpoint. The restore is also moved before the threads are resumed, since SetThreadContext does not reliably update the debug registers of a running thread. - Erase the per-thread single-step state in the EXIT_THREAD handler. A thread can exit after StepInto() armed its step but before the trap event arrives; leaving the entry behind means a reused thread id inherits it (StepInto declines to arm, or a later single-step fires the dead thread's callback). |
||
|---|---|---|
| TitanEngine | ||
| TitanEngineLoaders/LibraryLoader | ||
| distorm | ||
| hooks | ||
| scylla_wrapper | ||
| .gitattributes | ||
| .gitignore | ||
| CMakeLists.txt | ||
| LICENSE | ||
| TitanEngine.sln | ||
| cmake.toml | ||
| cmkr.cmake | ||
| format.bat | ||
| install.bat | ||
| readme.txt | ||
| release.bat | ||
readme.txt
This is a bugfixed & enhanced version of TitanEngine v2.0.3
The following things have been fixed/added (list might be incomplete):
- fixed memory breakpoints in general
- fixed harware breakpoints in general
- only report exceptions that are unhandled by the debugger
- working on x64 (previously there was a structure alignment problem)
- some code commenting
- fixed DumpProcessExW (found/fix provided by Aguila)
- added a callback on the system breakpoint
- added memory breakpoints on execute
- added QWORD hardware breakpoints
- smaller and faster DLL loaders
- supports multiple calling conventions (including the callbacks)
- MinGW import libraries
- fixed exception handling
- Importer functions use Scyllas business logic now, much more accurate
- updated distorm lib to v3, was v1
- countless code improvements
NOTE: LUA, Python, MASM and Delphi might not work correctly
Mainly because their headers havent been adjusted
to these changes. However this is easy. Compare with
C/C++ headers, fix it up and send us.
If you are good with these kinda codes, please help review, do pull-requests,
and criticize what you think can be be improved !
You can discuss with us here
http://forum.tuts4you.com/forum/138-titanengine-community-edition/