|
大家都知道
1在R3下可以直接I/O http://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的操作 不可以吗
这只是我的 一种设想 不知道有没有人 利用过 欢迎跟帖 指教 |
|