是否可以设置当CPU写入特定地址时中断的中断?

2023-12-28

当写入特定地址时是否可以使x86 cpu中断?

我想要一个硬件机制来监视某些地址的变化。


我想知道在写入特定地址时是否可以使x86 cpu中断?

有可能的。

您可以设置调试寄存器之一(DR0 to DR4) 到你想要监控的地址,然后在中配置相应的标志DR7作为“全局断点,仅在数据写入时中断,1 字节大小”。一旦完成,该 CPU 完成的任何正常数据写入都会触发调试异常(中断 1),并且调试异常处理程序可以弄清楚发生了什么并执行您想要的任何操作(例如,向用户报告写入?)。

但是,存在一些限制 - 您不能在用户空间中自己执行此操作,并且需要依赖内核的支持;并且内核的支持希望包括在任务切换期间保存/恢复调试寄存器(以便当您的任务在另一个CPU上运行时您的断点不会停止工作,并且您的断点不会给其他任务带来问题)。因此(除非您完全控制计算机/CPU - 例如您正在编写自己的内核),通常您必须依赖操作系统提供的任何 API。

如果其他东西修改了内存(例如磁盘控制器或网卡),它也将不起作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以设置当CPU写入特定地址时中断的中断? 的相关文章

  • x86 汇编中 cmove 指令的用途?

    反汇编可执行文件时我遇到了cmove操作说明 我已经在互联网上搜索过 但我只发现这是一个有条件的移动 如果源和目的地相等mov发生 我还不明白为什么我需要它 因为它不会改变操作数 它的目的是什么 The CMOVcc指令不比较源和目标 它们
  • 如何在汇编程序中使用 C 库?

    我想知道如何用汇编语言编写文本编辑器 但现代操作系统需要 C 库 特别是对于它们的窗口系统 我找到了这个page http pengu1n is programmer com posts 8304 html 这对我有很大帮助 但我想知道是否
  • elf .rel.text 部分中 R_386_32/R_386_PC32 的含义

    为了理解重定位的概念 我编写了一个简单的 chk c 程序 如下所示 1 include
  • C/C++ 中的简单“Hello World”内联汇编语言程序

    我使用 devcpp 和 borland c 编译器 asm mov ax 4 I O Func mov bx 1 Output func mov cx name address of the string mov dx 6 length
  • x86 平台中的 KVM 影子页表处理

    据我了解 在没有硬件支持来宾虚拟到主机物理地址转换的处理器上 KVM 使用影子页表 当来宾操作系统修改其页表时 会构建和更新影子页表 硬件中有没有专门的指令 以x86为参考 来修改页表 除非有特殊说明 否则不会对VMM 造成陷阱 Linux
  • 编写 AMD64 SysV 程序集时使用哪些寄存器作为临时寄存器?

    我正在使用实现一个功能cpuid根据 AMD64 SysV ABI 进行组装 我需要在函数本身中使用 2 个临时寄存器 第一个用于累积返回值 第二个用作计数器 我的功能目前如下所示 zero argument function some c
  • x86-64 上这个语句有什么问题?

    该函数的目的是获取堆栈的起始地址 unsigned long find start void asm movq rsp eax 当我编译它时 出现错误 Error suffix or operands invalid for movq mo
  • C++ 中的 CPUID 实现

    我想知道这里是否有人有一些可以从任何托管 net 语言引用的 C CPUID 实现的好示例 另外 如果情况并非如此 我是否应该注意 X86 和 X64 之间的某些实现差异 我想使用 CPUID 来获取运行我的软件的机器上的信息 崩溃报告等
  • 如何在汇编语言中换行打印多个字符串

    我试图在汇编中的不同行上打印多个字符串 但使用我的代码 它只打印最后一个字符串 我对汇编语言非常陌生 所以请耐心等待 section text global start start mov edx len mov edx len1 mov
  • 在 x86 Intel VT-X 非根模式下,是否可以在每个指令边界传递中断?

    除了不将中断传送到虚拟处理器的某些正常指定条件 cli if 0 等 之外 客户机中的所有指令实际上都是可中断的吗 也就是说 当传入的硬件中断先传递给 LAPIC 然后传递给处理器时 据说会发生一些内部魔法 将其转换为虚拟中断给来宾 使用虚
  • 近调用/跳转表并不总是在引导加载程序中工作

    一般问题 我一直在开发一个简单的引导加载程序 并在某些环境中偶然发现了一个问题 在这些环境中 此类指令不起作用 mov si call tbl SI Call table pointer call call tbl Call print c
  • 观察点固定地址

    对于我当前的嵌入式应用程序 我尝试将 GDB 观察点放在固定的内存地址处 例如 我的应用程序更新以下地址 0x10793ad0 为了确定代码的哪一部分破坏了值 我尝试了 watch 0x10793ad0 即使 GDB 在此之后不会打印任何错
  • qemu kvm:如何获取性能监控中断?

    我在操作系统内核中编写了一些函数 以便在指令计数器溢出时发出性能监控中断 PMI 它在我的机器 Intel core i5 上运行良好 但是当我使用 qemu 在 qemu 上运行它时 qemu system x86 64 enable k
  • C# 是否可以中断 ThreadPool 内的特定线程?

    假设我已将一个工作项排入队列ThreadPool 但是如果没有要处理的数据 从BlockingQueue 如果队列为空并且队列中不再有工作 那么我必须调用Thread Interrupt方法 如果我想中断阻塞任务 但是如何用 a 做同样的事
  • STM32F4 板上的 SPI 从机设置

    我正在尝试通过主从配置中的 SPI 在两个 STM32F4 发现板之间进行通信 我已经有了主设备的代码 但我对需要对从设备的 SPI 初始化进行的更改感到有点困惑 我还想在主机发送数据时实现中断 而不是让从机一直轮询 RXNE 寄存器 但是
  • 设置 IRQ 映射

    我正在遵循一些教程和参考文献来尝试设置我的内核 我在教程中遇到了一些不熟悉的代码 但根本没有解释它 这是我被告知映射的代码16 IRQs 0 15 到 ISR 地点32 47 void irq remap void outportb 0x2
  • 为什么 clang 使用 -O0 生成低效的 asm(对于这个简单的浮点和)?

    我正在 llvm clang Apple LLVM 版本 8 0 0 clang 800 0 42 1 上反汇编此代码 int main float a 0 151234 float b 0 2 float c a b printf f c
  • 这种没有推送寄存器的交换有多安全?

    我对汇编非常陌生 下面的代码应该通过两个不同的函数交换两个整数 首先使用swap c然后使用swap asm 但我怀疑 我是否需要push 我的意思是保存 汇编代码之前寄存器的每个值和pop稍后 就在返回之前 main 换句话说 如果我返回
  • Visual Studio 2012 本机 C++ DLL x86 编译

    我最近将我的工具集从 Win 7 x86 Visual Studio 2010 升级到 Win 8 x64 Visual Studio 2012 但是 现在我的本机 C dll 编译为 x64 而不是 x86 除了将代码移至新操作系统并将其
  • 为什么我的代码显示垃圾?

    当我也想打印列表中的每个数字时 我的代码显示垃圾 有什么问题吗 输出应如下所示 给定的数组是 2G 4 PT为什么这是垃圾总数是 7 Code ASSUME CS CODE DS DATA SS STK ORG 0000H DATA SEG

随机推荐

  • 在MFC中创建窗口时如何获得最大可能的窗口大小?

    我需要获得正在创建的窗口的最大可能高度和宽度 窗口不会首先最大化 怎么做 您可以使用获取系统指标 https msdn microsoft com en us library windows desktop ms724385 v vs 85
  • 将 SQL 转换为 LINQ 查询 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有以下 SQL 查询 我需要将它放在 LINQ 中 我尝试了几件事 但无法让它工作 这是 SQL 查询 SELECT ST Descrip
  • 如何在 ColdFusion <2016 中保留结构中的分配顺序

    ColdFusion 不保留元素分配给结构的顺序 在我的特定情况下 当我需要从此结构创建 SOAP 信封并且接收者需要以特定顺序接收信封中的数据时 这就产生了问题 从 ColdFusion 2016 及更高版本开始 StructNew 方法
  • 如何使用固定位置的 jQuery 可拖动?

    它在 Firefox 中完美运行 但在 ie chrome 和 Opera 中不起作用 div has position fixed and is draggable 除了 Firefox 之外它不起作用 不要在 CSS 中设置固定 它适用
  • 将winsound转换为linux平台?

    在我不久前编写的一个聊天脚本中 我使用winsound python 库在收到新消息时播放 ding 声音 ding wav 现在我想知道如何才能使其在 Linux 上工作 仅使用 ogg 音频文件 代码如下 import sys impo
  • 在 std::views::join 之后使用 std::views::filter 无法编译

    我在使用时遇到问题std views filter在加入的流 范围上 我不知道这里到底出了什么问题 我想这些元素可能无法使用正确的 复制 移动 语义传递 应该使用引用包装器或其他东西 include
  • 将 mp4 视频保存到设备相机胶卷

    我从一个 NSString 开始 它是 mp4 文件的 url 从这里我希望将该视频保存到设备相机胶卷中 看来我只能保存 mov 文件 所以我必须首先转换 mp4 但我看到的关于此的几篇文章没有帮助 谁能帮助我完成这个任务 提前致谢 您可以
  • C# 使用 StreamReader 读取资源内的文本文件时出现 FileNotFound 异常

    using SteamReader sr new StreamReader text txt 我也尝试不将文本文件放在 resx file The StreamReader您正在使用的构造函数期望该文件存在于磁盘上 如果该文件嵌入到程序集中
  • 当我的应用程序关闭时,如何处理通知操作?

    问题概要 我正在编写一个 iOS 应用程序 它发送提醒通知 让用户通过 x callback url 运行其他应用程序 如果应用程序位于前台或后台 我的一切都可以完美运行 但当我的应用程序关闭时 它就无法运行 当我的应用程序关闭时 通知也会
  • 如何在 Xamarin 中重用相同的视图? XAML

    所以我得到了这段代码 我需要在或多或少的所有页面上重复使用 但是我有点厌倦了更改一个页面并且必须在 10 个或更多地方做同样的事情 有没有更好的方法做这个 使用 Xamarin Forms 也许可以使用自定义控制器或使用标记扩展在堆栈布局内
  • 使用 ISO V2 Coated 等颜色配置文件将 CMYK 颜色转换为 RGB?

    我知道这个问题之前已经以多种不同的方式提出过 但似乎没有一个与我的问题相关 我想转换一个CMYK准确地着色RGB使用颜色配置文件 例如ISO Coated V2 我想这样做 因为简单的数学转换会导致明亮的颜色无法在CMYK色彩空间 理想情况
  • 在 JSON 请求中发送图像

    我在用着JSON with REST用于使用 Web 服务的 api 现在我还需要根据请求发送图像 是否可以 如果是 我需要在客户端 服务器端进行哪些更改 在我的Java代码中 我应该如何发送图像内容 是否需要单独设置内容类型 执行此操作的
  • Python:无需 OpenCV 即可访问相机

    同志们 我想用 Python 从笔记本电脑摄像头捕获图像 目前所有迹象都指向 OpenCV 问题是 OpenCV 的安装是一场噩梦 而且每次您在新系统上重新安装代码时 这个噩梦都会再次发生 有没有更轻量级的方法在Python中捕获相机数据
  • Rails Paperclip S3 重命名数千个文件?

    我正在尝试重命名 s3 中的许多文件 更改当前的回形针has attached file path from stuff id updated at style extension to stuff id counter style ext
  • 为什么我的工具输出会覆盖自身以及如何修复它?

    这个问题的目的是要成为一个典范 https meta stackoverflow com questions 291992它涵盖了各种各样的问题 其答案归结为 你有 DOS 行结尾被输入到 Unix 工具中 任何有相关问题的人都应该清楚地解
  • 有没有办法将 gmpxx.h 与 c++98 一起使用?

    由于我的项目 我需要使用 c 98 和 gmpxx h 但即使对于一个简单的项目 它也不起作用 include
  • Chrome DevTools:SASS 源文件未保存在磁盘上

    我按照 Google 提供的说明设置源映射 https developers google com chrome developer tools docs css preprocessors https developers google
  • Unity错误:UnityEngine.Component'不包含“velocity”的定义

    我对 C 很陌生 所以如果这是显而易见的 请原谅我 我正在按照中的步骤操作本教程 http www instructables com id Make A 2D Infinite Runner with Unity step6 The Ro
  • 折叠表达式和函数名称查找

    我正在学习 C 17 中的折叠表达式 我有以下代码 include
  • 是否可以设置当CPU写入特定地址时中断的中断?

    当写入特定地址时是否可以使x86 cpu中断 我想要一个硬件机制来监视某些地址的变化 我想知道在写入特定地址时是否可以使x86 cpu中断 有可能的 您可以设置调试寄存器之一 DR0 to DR4 到你想要监控的地址 然后在中配置相应的标志