KMSRussian 发表于 2012-1-17 07:07:46

关于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的操作 不可以吗

这只是我的 一种设想不知道有没有人 利用过 欢迎跟帖 指教

乔丹二世 发表于 2012-1-17 16:04:31

这想法不错!

heyun234 发表于 2012-1-17 18:37:04

楼主加油呗

马大哈 发表于 2012-1-17 20:47:22

让我想起了98时代时使用-o 70,10干掉BIOS密码....{:soso_e120:}

x64asm 发表于 2012-1-20 02:15:02

本帖最后由 x64asm 于 2012-1-20 02:16 编辑

RING3是不能访问硬件的,代码处于随时可换页换出的状态,访问硬件相当不稳定
且经常处于可中断状态,而IO是尽可能避免出现中断的。


访问硬件需串行化操作,不能刚刚设定好IO寄存器,然后被其他线程切换,系统也要访问IO,切换回来后造成无法预料的结果。
页: [1]
查看完整版本: 关于NTVDM的一个设想 讨论帖