阅读:3434回复:22
请教RING0下读写IO的问题。
我正在写一个可在WINDOWS 98/ME/2K/XP中的小工具,其中有读写IO的操作,有WINIO的方式已经实现,不知WINIO有没有版权的相关制约?后来改用NTRING0的CODE,但发现极不稳定,在测试过程中两台配置不一样的机器会有不一样的结果,在同一台机器中第一次运行结果正确,第二次运行结果就可能不正确。请高手们指导指导,实在想不通了。
|
|
沙发#
发布于:2004-12-23 19:31
我正在写一个可在WINDOWS 98/ME/2K/XP中的小工具,其中有读写IO的操作,有WINIO的方式已经实现,不知WINIO有没有版权的相关制约?后来改用NTRING0的CODE,但发现极不稳定,在测试过程中两台配置不一样的机器会有不一样的结果,在同一台机器中第一次运行结果正确,第二次运行结果就可能不正确。请高手们指导指导,实在想不通了。 你是怎么实现的?具体点,这样不好回答 还有既然winio已经很好了,你为什么还有用那些方法呢? |
|
|
板凳#
发布于:2004-12-23 23:42
直接从网上下载WINIO软件,再按照例子来做就行了。
因为想试试不用驱动,只用CODE的方式能不能做到,在网上发现了一些代码就试了,发现有些电脑上是可以,有些电脑不行,同一台电脑一次与另一次读出来的东西完全不一样。不知何解? |
|
地板#
发布于:2004-12-23 23:46
我用的代码就是网上的NTRING0.CPP呀,在void __declspec (naked) Ring0Proc1()中改成自己的,发现运行结果不对,另外还发现不能用浮点数(float),有没大人可以帮帮呀?
|
|
地下室#
发布于:2004-12-24 13:38
AllenZhang兄弟,有试过这样的问题吗?或是有没更好的解决方案?
|
|
5楼#
发布于:2004-12-26 21:52
路过,你们继续
|
|
6楼#
发布于:2004-12-27 09:59
把你的例子贴上来看看,还有使用WINIO和直接IO有什么不同,结果都是什么???
|
|
|
7楼#
发布于:2004-12-27 12:03
我的例子暂时无法贴上来,用WINIO就很正常,但是用NTRING0的话有两个问题:一是不能用浮点数,不只在NTRING0中不行,只要包了NTRING0,就连外部没用到它的也不行了。二是结果不稳定,有时读正确,有时为0,有时都不知读出些是什么。
|
|
8楼#
发布于:2004-12-27 12:46
你用NTRING0进去的话,你的RING0代码的地址还是用户地址空间,在2G以下,这会导致某些操作的不正确,建议你在RING0分配核心地址空间,然后把代码复制过去,在核心地址空间运行,用到的地址重定位的方法可以参考一般病毒的做法.....
|
|
|
9楼#
发布于:2004-12-27 13:15
我在读写IO前开启RING0,把读出来的数据放在一个已定义的数据结构里面,然后再关掉RING0,其它的运算等等都在正常模式下来做,这样应该不会有这些问题的呀?
|
|
10楼#
发布于:2004-12-27 19:52
你在RING0中读到的数据可能就已经不对了.
|
|
|
11楼#
发布于:2004-12-28 10:34
哪有没有办法可以确定在RING0下读写资料正确的方法教一下?
|
|
12楼#
发布于:2004-12-28 10:37
哪有没有办法可以确定在RING0下读写资料正确的方法教一下? WINIO是最方便的,一般来说尽量使用驱动来IO比较好,除非你写病毒. |
|
|
13楼#
发布于:2004-12-28 10:50
我首先声明我不是写病毒,我也觉得WINIO是最好用的一个。但我想网络有人讨论可以用代码的方式来进入或RING0,而我只是要在RING0中做很简单的IO读写,所以就想用最简单的方法来试一下。
|
|
14楼#
发布于:2004-12-28 10:53
你用NTRING0进去的话,你的RING0代码的地址还是用户地址空间,在2G以下,这会导致某些操作的不正确,建议你在RING0分配核心地址空间,然后把代码复制过去,在核心地址空间运行,用到的地址重定位的方法可以参考一般病毒的做法..... 我不太理解(因为我是刚开始接触RING0),能否详细讲解一下? |
|
15楼#
发布于:2004-12-28 13:48
兄弟Ring0在不同机器里面写啥内容不稳定 具体点 看看我能否为你解答
|
|
|
16楼#
发布于:2004-12-28 17:22
我的目标是要在RING0下去做读写IO的动作,现在只验证在RING0下读,读出来的结果就不稳定了,有时读出来的正确,有时读出来是0,有进读出来的我也不知是什么数据。真得很奇怪,如果一直是错的,我就死心了,但有时又是对的。另外,我有做开关RING0的动作,就是在做完IO读写后,会做退出RING0这个动作,是否我在RING0里保存的数据,会因为我关了RING0而受到影响?
|
|
17楼#
发布于:2005-01-04 21:44
For reply your issue only,I must regist a user.So tied.
I am focous on ring3 to ring0 switch recently,at the first begginning,I implement it by winio driver.Recently ,I have finished coding an asm code for ring3 to ring0 switch without driver,it looks work ok .it's size is 3.5k only.Maybe some days later ,I will post it at this website when I make this code more strong. |
|
18楼#
发布于:2005-01-05 09:55
Thank you very much for your help. Waiting for your good news. Whether your code can use in VC++ 6?
|
|
19楼#
发布于:2005-01-05 16:34
Coding it asm code.
Can only be compiled by asm. |
|
上一页
下一页