🗒️C++硬件断点Hook 支持x86+x64 (附完整源码)
2024-7-16
| 2024-7-16
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password

完整代码

HardBreakPointHook
issuimoUpdated Jul 16, 2024

DR0~7寄存器

notion image
 
  • DR0 ~ DR3 这4个寄存器用来设置断点地址
  • DR7 用来控制硬件断点
    • notion image
  • 断点条件
    • 00:执行断点
      01:数据写入断点
      10:I/0读写断点
      11:读写断点,读取指令不算
  • 断点长度
    • 00:1字节(执行断点只能是1字节长)
      01:2字节
      10:未定义或者是8字节(和cpu的系列有关系)
      11:4字节

设置/获取线程上下文

OpenThread

GetThreadContext

SetThreadContext 

SuspendThread 

ResumeThread 

示例

枚举进程所有线程

都是些熟知的函数不过多阐述
 

所需变量

设置断点Hook

注册向量化异常处理程序(VEH)

  • C++
  • 开发
  • 测试使用VEH替代SEH (将VEH限制到作用域内)
    Loading...