监视其它进程中某一内存的数据的变化

在Win32系统下,由于限制,无法实时监控其他进程内存变化,但可以通过定时扫描来接近这一目标。针对Intel CPU,可以利用调试寄存器实现这一功能,涉及的知识包括Win32程序调试技术。本文将详细介绍如何使用调试寄存器来跟踪内存地址变化,并对当前文本编辑器的不足提出期望。
摘要由CSDN通过智能技术生成

  怎么样才能得知其他进程中某一内存的内容发生了变化?有几个条件我想首先说明一下,在win32系统下想实时得到其他进程一段内存的内容变化是不可能的。唯一的可能是定时扫描。另外如果想要得知内核态内存的变化也是不太容易实现(姑且允许我这么我这么说,因为在方面我没有进行深入的调查)。还有CPU的要求我现在只是针对intel,因为手头没有AMD的CPU,所以就没有测试过。 

  如果想要实时得到其他进程的内存内容的变化,有两种方案,其一是修改反汇编后的源程序,其二是debug源程序。对于第一种方案来说,工作量和汇编知识要求相对要高一点。那么第二种方案只需要一些win32 程序的debug技术就可以了,相对来说就比较容易实现。在这里我们采用第二种方案。

  intel cpu提供了一组调试寄存器可以用来帮助我们跟踪我们感兴趣的内存地址。下面我来详细的介绍一下这些寄存器的功能。(顺便想说一句这个文本编辑器的功能有点缺陷,真的希望有所改进)

31              23              15              7               0
+---+---+---+---+---+---+---+---+---+-+-----+-+-+-+-+-+-+-+-+-+-+
|LEN|R/W|LEN|R/W|LEN|R/W|LEN|R/W|   | |     |G|L|G|L|G|L|G|L|G|L|
|   |   |   |   |   |   |   |   |0 0|0|0 0 0| | | | | | | | | | | DR7
| 3 | 3 | 2 | 2 | 1 | 1 | 0 | 0 |   | |     |E|E|3|3|2|2|1|1|0|0|
|---+---+---+---+---+---+---+---+-+-+-+-----+-+-+-+-+-+-+-+-+-+-|
|                               |B|B|B|                 |B|B|B|B|
|0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0| | | |0 0 0 0 0 0 0 0 0| | | | | DR6
|                               |T|S|D|                 |3|2|1|0|
|---------------+---------------+-+-+-+---------+-------+-+-+-+-|
|                                                               |
|                            RESERVED                           | DR5
|                                                               |
|---------------+---------------+---------------+---------------|
|                                                               |
|                            RESERVED                 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值