VictorZhong
驱动牛犊
驱动牛犊
  • 注册日期2004-12-17
  • 最后登录2005-01-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3434回复:22

请教RING0下读写IO的问题。

楼主#
更多 发布于:2004-12-23 16:02
我正在写一个可在WINDOWS 98/ME/2K/XP中的小工具,其中有读写IO的操作,有WINIO的方式已经实现,不知WINIO有没有版权的相关制约?后来改用NTRING0的CODE,但发现极不稳定,在测试过程中两台配置不一样的机器会有不一样的结果,在同一台机器中第一次运行结果正确,第二次运行结果就可能不正确。请高手们指导指导,实在想不通了。
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-12-23 19:31
我正在写一个可在WINDOWS 98/ME/2K/XP中的小工具,其中有读写IO的操作,有WINIO的方式已经实现,不知WINIO有没有版权的相关制约?后来改用NTRING0的CODE,但发现极不稳定,在测试过程中两台配置不一样的机器会有不一样的结果,在同一台机器中第一次运行结果正确,第二次运行结果就可能不正确。请高手们指导指导,实在想不通了。


你是怎么实现的?具体点,这样不好回答
还有既然winio已经很好了,你为什么还有用那些方法呢?
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
VictorZhong
驱动牛犊
驱动牛犊
  • 注册日期2004-12-17
  • 最后登录2005-01-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-12-23 23:42
直接从网上下载WINIO软件,再按照例子来做就行了。
因为想试试不用驱动,只用CODE的方式能不能做到,在网上发现了一些代码就试了,发现有些电脑上是可以,有些电脑不行,同一台电脑一次与另一次读出来的东西完全不一样。不知何解?
VictorZhong
驱动牛犊
驱动牛犊
  • 注册日期2004-12-17
  • 最后登录2005-01-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-12-23 23:46
我用的代码就是网上的NTRING0.CPP呀,在void __declspec (naked) Ring0Proc1()中改成自己的,发现运行结果不对,另外还发现不能用浮点数(float),有没大人可以帮帮呀?
VictorZhong
驱动牛犊
驱动牛犊
  • 注册日期2004-12-17
  • 最后登录2005-01-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-12-24 13:38
AllenZhang兄弟,有试过这样的问题吗?或是有没更好的解决方案?
chen19224
驱动牛犊
驱动牛犊
  • 注册日期2004-12-24
  • 最后登录2007-11-25
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-12-26 21:52
路过,你们继续
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
6楼#
发布于:2004-12-27 09:59
把你的例子贴上来看看,还有使用WINIO和直接IO有什么不同,结果都是什么???
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
VictorZhong
驱动牛犊
驱动牛犊
  • 注册日期2004-12-17
  • 最后登录2005-01-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-12-27 12:03
我的例子暂时无法贴上来,用WINIO就很正常,但是用NTRING0的话有两个问题:一是不能用浮点数,不只在NTRING0中不行,只要包了NTRING0,就连外部没用到它的也不行了。二是结果不稳定,有时读正确,有时为0,有时都不知读出些是什么。
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
8楼#
发布于:2004-12-27 12:46
你用NTRING0进去的话,你的RING0代码的地址还是用户地址空间,在2G以下,这会导致某些操作的不正确,建议你在RING0分配核心地址空间,然后把代码复制过去,在核心地址空间运行,用到的地址重定位的方法可以参考一般病毒的做法.....
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
VictorZhong
驱动牛犊
驱动牛犊
  • 注册日期2004-12-17
  • 最后登录2005-01-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-12-27 13:15
我在读写IO前开启RING0,把读出来的数据放在一个已定义的数据结构里面,然后再关掉RING0,其它的运算等等都在正常模式下来做,这样应该不会有这些问题的呀?
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
10楼#
发布于:2004-12-27 19:52
你在RING0中读到的数据可能就已经不对了.
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
VictorZhong
驱动牛犊
驱动牛犊
  • 注册日期2004-12-17
  • 最后登录2005-01-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-12-28 10:34
哪有没有办法可以确定在RING0下读写资料正确的方法教一下?
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
12楼#
发布于:2004-12-28 10:37
哪有没有办法可以确定在RING0下读写资料正确的方法教一下?

WINIO是最方便的,一般来说尽量使用驱动来IO比较好,除非你写病毒.
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
VictorZhong
驱动牛犊
驱动牛犊
  • 注册日期2004-12-17
  • 最后登录2005-01-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-12-28 10:50
我首先声明我不是写病毒,我也觉得WINIO是最好用的一个。但我想网络有人讨论可以用代码的方式来进入或RING0,而我只是要在RING0中做很简单的IO读写,所以就想用最简单的方法来试一下。
VictorZhong
驱动牛犊
驱动牛犊
  • 注册日期2004-12-17
  • 最后登录2005-01-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-12-28 10:53
你用NTRING0进去的话,你的RING0代码的地址还是用户地址空间,在2G以下,这会导致某些操作的不正确,建议你在RING0分配核心地址空间,然后把代码复制过去,在核心地址空间运行,用到的地址重定位的方法可以参考一般病毒的做法.....

我不太理解(因为我是刚开始接触RING0),能否详细讲解一下?
SUNSHANGXIN
驱动老牛
驱动老牛
  • 注册日期2002-11-19
  • 最后登录2009-08-01
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望19点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-12-28 13:48
兄弟Ring0在不同机器里面写啥内容不稳定 具体点 看看我能否为你解答
[b]苍白的,不是文字,是人的思想 虚伪的,不是网络,是人的灵魂 伤心的,不是爱情,是人的心灵 难忘的,不是容貌,是人的思诀 黎明的曙光早已不见了夕日的辉煌 东方的日出早就失去了往日的灿烂 而我也尽脱了昨日的笑容去迎接明天的枯涩 [/b]
VictorZhong
驱动牛犊
驱动牛犊
  • 注册日期2004-12-17
  • 最后登录2005-01-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-12-28 17:22
我的目标是要在RING0下去做读写IO的动作,现在只验证在RING0下读,读出来的结果就不稳定了,有时读出来的正确,有时读出来是0,有进读出来的我也不知是什么数据。真得很奇怪,如果一直是错的,我就死心了,但有时又是对的。另外,我有做开关RING0的动作,就是在做完IO读写后,会做退出RING0这个动作,是否我在RING0里保存的数据,会因为我关了RING0而受到影响?
dobyhand
驱动牛犊
驱动牛犊
  • 注册日期2005-01-04
  • 最后登录2005-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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.
VictorZhong
驱动牛犊
驱动牛犊
  • 注册日期2004-12-17
  • 最后登录2005-01-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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?
dobyhand
驱动牛犊
驱动牛犊
  • 注册日期2005-01-04
  • 最后登录2005-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2005-01-05 16:34
Coding it asm code.
Can only be compiled by asm.
上一页
游客

返回顶部