用汇编编写消息系统 (2.2) 内存的内存断点和硬件断点的区别

背景

根据Windows内存处理机制,任何内存当中的内容都是分页加载的,而在保护模式下,内存页有许多属性,包括可不可读,写,运行等

正文

内存的内存断点是软件层面(操作系统这个大软件和调试软件本身)控制的

如果是写入断点则设置页属性PAGE_EXECUTE_READ,不可写,一旦写入就会掷错,这也从一定程度上证明了断点属于一种异常

如果是访问断点就设置PAGE_NOACCESS,禁止访问,然后catch exception

现在有一个小问题,如果是同页但是非目标地址的内存,也会被断点,这需要调试器层面放行,但是有点想象不出来如何实现这种放行

硬件断点则是cpu硬件层面的

在CPU硬件层面提供多个寄存器用于描述目标内存对象,一旦cpu访问或写入该对象则断下断点,效率比前者高了很多个数量级

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2019-2024 kier Val
  • Visitors: | Views: