阅读:1503回复:8
如何在日Ring0下截获一段内存区域的写入操作?win2k,linux下均可,给个思路
如题:
小弟要对Win2000下一段核心内存区域的写入进行截获,为了记录下写入的地址和操作后的值,那位大侠有着方面的经验,请多指教啊!谢谢大家! |
|
最新喜欢:![]() |
沙发#
发布于:2002-04-17 12:34
这个问题很复杂,一般说来没有必要。看看你的问题是不是必须这样做。如果一定要做,需要用到CPU的调试功能(可能会和某些调试器冲突),或者分析Windows的虚拟内存管理,把包含你要保护的内容设置成不再物理内存,然后拦截INT 13。两种方法都很复杂,都很难调试(估计你找不到调试CPU)。资料可以参考IA-32 Intel Architecture Software Developer\'s Manual:Volume 3 System Programming Guide。
|
|
板凳#
发布于:2002-04-17 12:43
faint!
你应该写个debugger。 用dr0~dr3 |
|
|
地板#
发布于:2002-04-17 13:39
faint! To Lov1999,\"faint\"中文是啥意思 ? |
|
|
地下室#
发布于:2002-04-17 13:42
[quote]faint! To Lov1999,\"faint\"中文是啥意思 ? [/quote] faint! faint就是晕倒! |
|
|
5楼#
发布于:2002-04-17 13:54
那你为啥总是晕倒,是不是病了?
|
|
|
6楼#
发布于:2002-04-17 13:59
那你为啥总是晕倒,是不是病了? faint! 兄弟你倒是挺幽默 |
|
|
7楼#
发布于:2002-04-18 13:54
没仔细想过,不过实现不算太难吧?
我简单描述: 1、挂接页异常处理程序 2、取得你要截获的内存区域对应的页表项地址将其存在位改为0; 3、若页异常发生,判断是否为你要的区域,不是让系统处理,否则。。。 其中还有些细节:区域是可分页的话,处理要麻烦些; 对用户区的内存你先查查提交了没(VAD树),不要把错误程序胡乱访问未分配内存也当成触发条件。 |
|
8楼#
发布于:2002-04-18 13:59
你仅仅截获“写”操作的话,就改改CR0的WP位和表项的U/S、R/W位吧,简单一些。
|
|