关于NTVDM的一个设想 讨论帖
大家都知道1在R3下可以直接I/Ohttp://bbs.pediy.com/showthread.php?p=434124#post434124
关于ring3直接访问硬件的办法,前面已经介绍了2篇,本篇算是结束篇了。篇幅较长,大家慢慢阅读。高手飘过。
基本上我们能依据8条保护规则来进行访问的情况都概括了。还是跟前面一样,我们先贴出保护规则来。
(1)若CPL<=IOPL,则直接转步骤(8);
(2)取得I/O位图开始偏移;
(3)计算I/O地址对应位所在字节在I/O许可位图内的偏移;
(4)计算位偏移以形成屏蔽码值,即计算I/O地址对应位在字节中的第几位;
(5)把字节偏移加上位图开始偏移,再加1,所得值与TSS界限比较,若越界,则产生出错码为0的通用保护故障;
(6)若不越界,则从位图中读对应字节及下一个字节;
(7)把读出的两个字节与屏蔽码进行与运算,若结果不为0表示检查未通过,则产生出错码为0的通用保护故障;
(8)进行I/O访问。
2我们可以修改标志位 让他允许我们的进程进行I/O类似的还有进行SSDT HOOK的时候 修改CR0去保护
我想知道 当用NTVDM的读写的MBR的时候 很明显会告诉你 指令无效类似的 我们可也可以借鉴以上两种 更改一下验证让NTVDM那个黑洞洞的DOS窗口使用DEBUG命令直接读写磁盘呢 那就太邪恶了 如果调试NTVDM的话应该怎么调试呢 windbg怎么观察 NTVDM返回拒绝的时候 系统发生那些微妙的变化呢
如果观察到了这些变化 我们手动更改 让OS放过NTVDM对MBR的操作 不可以吗
这只是我的 一种设想不知道有没有人 利用过 欢迎跟帖 指教 这想法不错! 楼主加油呗 让我想起了98时代时使用-o 70,10干掉BIOS密码....{:soso_e120:} 本帖最后由 x64asm 于 2012-1-20 02:16 编辑
RING3是不能访问硬件的,代码处于随时可换页换出的状态,访问硬件相当不稳定
且经常处于可中断状态,而IO是尽可能避免出现中断的。
访问硬件需串行化操作,不能刚刚设定好IO寄存器,然后被其他线程切换,系统也要访问IO,切换回来后造成无法预料的结果。
页:
[1]