Hasty Briefsbeta

双语

Writing a Debugger from Scratch

4 hours ago
  • 作者用Rust编写了一个调试器,以学习该语言并帮助他人理解调试器内部机制。
  • 调试器采用事件循环:附加到进程、等待调试事件、继续执行。
  • 在Windows上,通过DebugActiveProcess或设置DEBUG_ONLY_THIS_PROCESS标志的CreateProcessW进行附加。
  • 事件循环调用WaitForDebugEventEx接收事件,用ContinueDebugEvent恢复目标进程。
  • 调试事件包括CreateProcess、LoadDll、CreateThread、Exception等,每种事件携带特定数据。
  • 初始异常是进程启动时由ntdll!LdrpDoDebuggerBreak触发的断点。
  • 后续文章将涵盖处理异常、断点、单步执行和其他高级功能。