能力值:
( LV12,RANK:450 )
2 楼
直接设定CR0的第16位 WP 位为零:
能够写
mov eax, cr0 ;取cr0 的标志位
mov OldAttr, eax ;保存原来的标志
and eax, 0FFFEFFFFh ;设置 CR0 16 BIT = 0
mov cr0, eax ;设置
恢复
mov eax, OldAttr
mov cr0, eax
比那个VirtualProtectEx 是不是更简单,哈哈
能力值:
( LV9,RANK:530 )
3 楼
最初由 gzgzlxg 发布 直接设定CR0的第16位 WP 位为零: 能够写 mov eax, cr0 ;取cr0 的标志位 mov OldAttr, eax ;保存原来的标志 ........
学习
能力值:
( LV4,RANK:50 )
4 楼
真的很谢谢,努力学习!!
能力值:
( LV4,RANK:50 )
5 楼
化境里面没有提到WP位,而且……
从上表可见,80386有四个32位的控制寄存器,分别命名位CR0、CR1、CR2和CR3。但CR1被保留,供今后开发的处理器使用,在80386中不能使用CR1,否则会引起无效指令操作异常。CR0包括指示处理器工作方式的控制位,包含启用和禁止分页管理机制的控制位,包含控制浮点协处理器操作的控制位。CR2及CR3由分页管理机制使用。CR0中的位5―位30及CR3中的位0至位11是保留位,这些位不能是随意值,必须为0。
控制寄存器CR0的低16位等同于80286的机器状态字MSW。
CR0中的位5―位30保留必须为0的,而且里面也没有提到WP位,网上查了一下也没有,gzgzlxg大侠能不能说说原因?我糊涂了
能力值:
( LV4,RANK:50 )
6 楼
我也没看到BIT
能力值:
( LV4,RANK:50 )
7 楼
X86系列CPU内部的CR0位16乃是WP位.该位如果被置0,则RING0代码可以修改任意地址的数据(当然必须有物理页对应.)无论该地址对应的页是否为写保护.:)那么我们所要干的是在需要的时候让自己的代码拥有该权限,而不需要时,仍然恢复系统内存保护策略.
317K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3E0S2K9X3q4S2i4K6u0W2j5X3u0K6i4K6u0W2N6i4y4Q4x3V1k6V1L8$3y4K6i4K6u0r3b7$3!0E0M7s2g2@1k6i4u0Q4x3V1k6b7M7X3!0Y4M7X3q4E0L8h3W2F1k6#2)9J5c8X3I4#2x3q4)9J5y4f1f1%4i4K6t1#2z5f1q4Q4x3U0f1^5y4q4)9J5y4f1f1$3i4K6t1#2z5p5q4Q4x3U0f1^5x3q4)9J5y4f1f1$3i4K6t1#2z5f1y4Q4x3U0g2m8c8W2)9J5y4f1f1$3i4K6t1#2z5e0k6Q4x3U0f1^5y4#2)9J5y4f1f1$3i4K6t1#2b7e0q4Q4x3U0g2m8x3#2)9J5c8Y4y4&6M7#2)9J5c8U0u0C8x3o6x3I4x3W2)9J5k6h3S2@1L8h3H3`.
能力值:
( LV12,RANK:450 )
8 楼
Intel Architecture Software Developer’s
Manual
Volume 3:
System Programming WP
Write Protect (bit 16 of CR0). Inhibits supervisor-level procedures from writing into user-level read-only pages when set; allows supervisor-level procedures to write into user-level read-only pages when clear. This flag facilitates implementation of the copyon-write method of creating a new process (forking) used by operating systems such as UNIX*.
2-14
能力值:
( LV4,RANK:50 )
9 楼
最初由 gzgzlxg 发布 Intel Architecture Software Developer’s Manual Volume 3: System Programming ........
学习了!!
能力值:
( LV4,RANK:50 )
10 楼
MyIntGate proc
pushad
invoke DbgPrint,$CTA0("My IntGate Reached")
mov eax,CR0
mov CR0VALUE,eax
and eax, 0fffeffffh
mov cr0, eax
mov bx,001bh
mov ds,bx
mov byte ptr ds:[77d504eah],90h
popad
iretd
MyIntGate endp
SYS里的,没有恢复,只为看效果,结果到这里mov byte ptr ds:[77d504eah],90h,兰了,是C0000005 (ACCESS VIOLATION),77d504eah是MessagaBoxA,还有,xp sp2,pm 1.6的,怎么会的?
还有,"当然必须有物理页对应" 怎么理解?