驱动层hook系统函数的时,如何屏蔽掉只读属性?
来源:互联网 发布:三星s7edge清空数据 编辑:程序博客网 时间:2024/06/06 19:36
对于Intel 80486或以上的CPU,CR0的位16是写保护(Write Proctect)标志。当设置该标志时,处理器会禁止超级用户程序(例如特权级0的程序)向只读页面执行写操作;当该位复位时则反之。因此,在写前把设置该位就可以
- cli
- mov eax, cr0
- and eax, -65537 ; fffeffffH
- mov cr0, eax
写完后,再把该位设置回去:
- mov cr0, eax
- sti
- 主要是设置cr0的WP(Write Protect)位来禁止内存的只读保护。使用以下两个函数设置cr0
- _inline void WPOFF()
- {
- ULONG uAttr;
- _asm
- {
- cli
- push eax
- mov eax, cr0
- mov g_uCr0, eax
- and eax, 0FFFEFFFFh // CR0 16 BIT = 0
- mov cr0, eax
- pop eax
- };
- }
- _inline void WPON()
- {
- _asm
- {
- push eax
- mov eax, g_uCr0 //恢復原有 CR0 屬性
- mov cr0, eax
- pop eax
- sti
- };
- }
但修改的时候要注意:
1.“提升中断请求级”到DPC,屏蔽APC和普通优先级别的中断。更重要的是防止线程调度(CPU调度程序是在DPC级别),因为修改cr0的时候被中断或切换,会造出以外的结果(蓝屏死机)。使用KeRaiseIrqlToDpcLevel提高中断请求级到DPC,KeLowerIrql恢复到原中断级。
2.对于多CPU的系统,为了防止被切换到另一个CPU上运行程序,此时要加内核锁。使用KeAcquireSpinLock函数上锁,KeReleaseSpinLock函数解锁。
- 驱动层hook系统函数的时,如何屏蔽掉只读属性?
- 输入框属性只读时 回格键时屏蔽
- 如何去掉XP系统中文件夹的只读属性
- HOOk 系统热键屏蔽
- 驱动层IAT HOOK
- 驱动中全局hook应用层API函数
- c# 如何设置coboBox的只读属性
- HooK函数屏蔽组合按键
- 发一个支持任意地点hook的类(包含驱动hook和应用层hook)
- 应用层open如何调用驱动open函数的?
- 只读属性的赋值
- 通过Hook技术屏蔽系统键
- 用DOS命令改变文件夹的只读隐藏系统属性
- 批处理去掉所有目录的隐藏系统只读属性
- ios-开发 替换系统原生只读属性的 值
- 如何去掉Access的只读属性之解药
- 在VC中,如何修改文件的只读属性设置
- 如何设置JavaScript某个自定义的对象属性为只读
- Java中的instanceof关键字
- ActionBar最近学习整理之二:风格自定义
- android笔记(一)mkyaffs2image的用法
- Nhibernate中CreateSQLQuery用法实例
- ORA-01506: missing or illegal database name
- 驱动层hook系统函数的时,如何屏蔽掉只读属性?
- 判断运行的是iPhone5及解决4inch屏黑边问题
- Ubuntu Linux系统下apt-get命令
- poj3254 poj1185 状态压缩DP
- 337C - Quiz
- java的GUI界面编程
- nyoj 116 士兵杀敌(二)
- 一步一步制作yaffs/yaffs2根文件系统(五)---生成yaffs/yaffs2镜像文件及下载到开发板
- 想学习数据结构大家给些建议