punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
阅读:1337回复:11

在IFS_钩子中调用RO_XXX会不会有问题?

楼主#
更多 发布于:2004-06-09 11:41
我已经用一个全局变量区分自己的R0_XXX操作和应用程序的文件操作,
请问各位高手,这样做有没有问题啊?
IFS manager有没有重入问题?
不停学习
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-06-09 17:36
显然有问题,会重入
punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-06-10 14:36
我给做R0_xxx的函数做了标记,对于没做标记的通通放过,怎么还是出现了page fault? :)
不停学习
punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-06-10 14:38
说错了,是对做R0_xxx的线程做了标记,
凡是标记过的线程直接调用下一个钩子,这样就避免了第归重入了,
但是还是出现错误,不过比以前用全局变量来标志好多了! :)
哪位高手能够指点一下吗
不停学习
RED_spring
驱动中牛
驱动中牛
  • 注册日期2002-07-28
  • 最后登录2016-11-06
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望19点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2004-06-10 14:58
应该行的通。

还有什么错误?
punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-06-10 15:02
应该行的通。

还有什么错误?


我装了softice,它捕获了这个错误,我不知道怎么分析?
都是汇编码。
打印一句"page fault"
不停学习
RED_spring
驱动中牛
驱动中牛
  • 注册日期2002-07-28
  • 最后登录2016-11-06
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望19点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2004-06-10 15:37
哈哈,恭喜你,内存访问出错。 多半是你的代码哪个部分弄错了。不过出错的部分不在你的程序里面。(如果你加载了符号表的话)

用stack命令看一下调用堆栈。 在你的程序程序里跟一下,看哪一步出错了。看看调用的参数是否正确,指针是否有问题,是不是把
_asm call写成_asm jmp了,是不是把mov al [edx]写成mov eax [edx]了。如此之类的。。。。

上述纯属推测哈。 :D :D
punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-06-10 16:31
哈哈,恭喜你,内存访问出错。 多半是你的代码哪个部分弄错了。不过出错的部分不在你的程序里面。(如果你加载了符号表的话)

用stack命令看一下调用堆栈。 在你的程序程序里跟一下,看哪一步出错了。看看调用的参数是否正确,指针是否有问题,是不是把
_asm call写成_asm jmp了,是不是把mov al [edx]写成mov eax [edx]了。如此之类的。。。。

上述纯属推测哈。 :D :D

我在钩子里调用ifs manager提供的函数,不会出错吧?
还有一点,我在盏里定义了比较大的局部变量,比如char path[MAX_PATH]之类,会不会导致堆栈不够啊?
还有就是stack出来:
IFSMGR_XXX!0x26
后面那个"!0x26"代表什么意思? :)
不停学习
RED_spring
驱动中牛
驱动中牛
  • 注册日期2002-07-28
  • 最后登录2016-11-06
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望19点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
  • 社区居民
8楼#
发布于:2004-06-10 18:15
"IFSMGR_XXX" 代表段名,0x26代表出错指令在段中的偏移。看softice帮助文档会有不少收获。

如果可能的话,你最好在程序里跟踪一下,哪一步过后蓝了。

我估计可能是你调用传入的参数有问题,或者是破坏了系统的什么数据结构。唉~~ 不好说。
punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-06-10 20:20
"IFSMGR_XXX" 代表段名,0x26代表出错指令在段中的偏移。看softice帮助文档会有不少收获。

如果可能的话,你最好在程序里跟踪一下,哪一步过后蓝了。

我估计可能是你调用传入的参数有问题,或者是破坏了系统的什么数据结构。唉~~ 不好说。
 

应该没有啊,用了int21用来产生目录和删除目录,但是这个不应该是什么大问题啊? :)
不停学习
punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-06-11 09:31
[quote]"IFSMGR_XXX" 代表段名,0x26代表出错指令在段中的偏移。看softice帮助文档会有不少收获。

如果可能的话,你最好在程序里跟踪一下,哪一步过后蓝了。

我估计可能是你调用传入的参数有问题,或者是破坏了系统的什么数据结构。唉~~ 不好说。
 

应该没有啊,用了int21用来产生目录和删除目录,但是这个不应该是什么大问题啊? :) [/quote]

Int 21/AX=7160h/CL=02h - Windows95 - LONG FILENAME - GET CANONICAL LONG FILENAME OR PATH
就是调用这个功能的时候出错
不停学习
punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-06-11 09:38
[quote][quote]"IFSMGR_XXX" 代表段名,0x26代表出错指令在段中的偏移。看softice帮助文档会有不少收获。

如果可能的话,你最好在程序里跟踪一下,哪一步过后蓝了。

我估计可能是你调用传入的参数有问题,或者是破坏了系统的什么数据结构。唉~~ 不好说。
 

应该没有啊,用了int21用来产生目录和删除目录,但是这个不应该是什么大问题啊? :) [/quote]

Int 21/AX=7160h/CL=02h - Windows95 - LONG FILENAME - GET CANONICAL LONG FILENAME OR PATH
就是调用这个功能的时候出错
 [/quote]
Win95中断有没有重入问题啊?
重入不会导致错误吧?
不停学习
游客

返回顶部