找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 5487|回复: 4

关于NTVDM的一个设想 讨论帖

  [复制链接]

21

主题

110

回帖

4

精华

铂金会员

积分
7522
发表于 2012-1-17 07:07:46 | 显示全部楼层 |阅读模式
大家都知道  
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的操作 不可以吗

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

280

主题

203

回帖

0

精华

版主

积分
1808
发表于 2012-1-17 16:04:31 | 显示全部楼层
这想法不错!

0

主题

20

回帖

0

精华

初来乍到

积分
30
发表于 2012-1-17 18:37:04 | 显示全部楼层
楼主加油呗

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2012-1-17 20:47:22 | 显示全部楼层
让我想起了98时代时使用-o 70,10干掉BIOS密码....{:soso_e120:}
我就是嗷嗷叫的老马了......

1

主题

39

回帖

0

精华

铜牌会员

积分
299
发表于 2012-1-20 02:15:02 | 显示全部楼层
本帖最后由 x64asm 于 2012-1-20 02:16 编辑

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


访问硬件需串行化操作,不能刚刚设定好IO寄存器,然后被其他线程切换,系统也要访问IO,切换回来后造成无法预料的结果。
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表