注册 登录
编程论坛 汇编论坛

网上看到的DisableWriteProtect和EnableWriteProtect这两个函数的实现有问题吗?

vfdff 发布于 2010-08-14 22:44, 1764 次点击
程序代码:
VOID DisableWriteProtect(PULONG pOldAttr)
{
    ULONG uAttr;
    _asm
    {
        push eax
            mov eax, cr0
            mov uAttr, eax
            and eax, 0FFFEFFFFh // CR0 16 BIT = 0
            mov cr0, eax
            pop eax
    };
    *pOldAttr = uAttr; //保存原有的 CRO 属性

}

VOID EnableWriteProtect(ULONG uOldAttr )
{
    _asm
    {
        push eax
            mov eax, uOldAttr //恢复原有 CR0 属性
            mov cr0, eax
            pop eax
    };

   }
网上看到的DisableWriteProtect和EnableWriteProtect这两个函数的实现有问题吗?为什么我使用VC6.0编译错误呢?
这个是在 http://hi.baidu.com/chinbey/blog/item/725de0ae35f042cb7cd92ac5.html上看到的
16 回复
#2
vfdff2010-08-14 22:55
回复 楼主 vfdff
只有本站会员才能查看附件,请 登录

在单步调试时发现本身进入这些汇编代码就出现异常,是不是要求什么权限呢?
#3
你们都要疼我哦2010-08-15 01:20
驱动在0环,怎么能在VC6里调试呢
#4
zklhp2010-08-15 13:02
编译参数有问题 你这是编译驱动的么。。。

用到了特权指令 肯定需要改编译参数的。。
#5
zklhp2010-08-15 13:05
以下是引用vfdff在2010-8-14 22:55:00的发言:


在单步调试时发现本身进入这些汇编代码就出现异常,是不是要求什么权限呢?

这都是特权指令 得用windbg一类的
#6
vfdff2010-08-15 23:19
回复 4楼 zklhp
怎么修改呢?能给个具体的例子吗
#7
vfdff2010-08-15 23:19
回复 5楼 zklhp
用这儿windbg进入进入特权指令了?
#8
Alar302010-08-16 10:16
这个
貌似功力不够
帮不上哈
#9
zklhp2010-08-16 10:41
以下是引用vfdff在2010-8-15 23:19:12的发言:

怎么修改呢?能给个具体的例子吗

百度一下 你就知道
#10
zklhp2010-08-16 16:30
以下是引用明教无双在2010-8-16 12:37:22的发言:

标题栏上的"X"按钮,已变灰。但系统右键环境菜单的"关闭"项,也相应无效了。如果希望右键环境菜单的"关闭"项,是有效的,如何做呢?

死锁的话 貌似结束进程是好方法。。。
#11
vfdff2010-08-16 22:28
回复 9楼 zklhp
应该没有很方便的方法,不然就是个漏洞
#12
sll08072010-09-07 09:34
应用程序工作在R3无权调用特权指令的啊

内核态下windows系统的内存区域是受保护的  所以必须将内存写保护状态打开才能写数据

#13
vfdff2010-09-12 03:25
写保护状态打开 需要 0 级权限吗
#14
zklhp2010-09-12 15:32
以下是引用vfdff在2010-9-12 03:25:04的发言:

写保护状态打开 需要 0 级权限吗

应该需要罢
#15
sll08072010-09-19 18:08
开写保护就是 修改CR0寄存器 WP位 晕。。。

再说 在多核心模式下 这样做是不安全的
#16
vfdff2011-03-09 23:18
回复 16楼 sll0807
修改CR0寄存器 WP位 是不是也有权限限制?
1