软件断点

int 3 指令,8086 引入,软件断点的基础
机器码为1字节,即 0xCC,没有数量限制
缺陷:属于代码类断点,即可以让CPU执行到代码段内的某个地址停下来,不适用于数据段和I/O空间
对于ROM(只读寄存器)中的程序(比如BIOS或其它固件程序),无法动态增加软件断点,因为目标内存是只读的无法动态写入断点指令

使用 windbg 打开可执行程序,这里用的是扫雷
x ntdll!*readfile* 找一下ntdll 里面的 readfile 函数再通过 u 地址 看一下汇编代码
这时候是 mov eax,3 ...

image.png

bp 地址 下个断点,bl 查看断点列表

image.png

go 运行起来会断住(不知道为啥写的是 Breakpoint 0 hit)

image.png

然后 go 一下再次运行起来,这时候再去 u 76f1f8e0 还是 mov eax,3 如果想观察到 int 3 这样的指令可以再打开一个 windbg,通过非侵入式的方式来附加扫雷的进程

image.png

再去 u 76f1f8e0

image.png