liwashington
驱动小牛
驱动小牛
  • 注册日期2004-04-30
  • 最后登录2010-10-21
  • 粉丝0
  • 关注0
  • 积分-11分
  • 威望98点
  • 贡献值1点
  • 好评度12点
  • 原创分0分
  • 专家分0分
阅读:1702回复:6

如何过滤Word的读写数据?

楼主#
更多 发布于:2004-10-25 16:16
我想对word的文件数据读写进行过滤,试了很多方法(比如用户态hook一些ole32.dll中的函数,驱动态hook ZwReadFile和ZwWriteFile等)都没有成功,希望各位高手给以思想上和方法上的指导。如对word的工作过程很了解,给出有关word读写文件操作的原理和流程(函数级)也可以。这里先谢了!!
我只想有个好老婆,每天有几顿好饭吃……
cicada
驱动小牛
驱动小牛
  • 注册日期2003-12-09
  • 最后登录2008-07-11
  • 粉丝1
  • 关注0
  • 积分74分
  • 威望15点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-10-27 19:12
我也想知道,帮你顶一下。
cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
板凳#
发布于:2005-05-11 14:25
现在在顶一下
走走看看开源好 Solaris vs Linux
lifeship
驱动小牛
驱动小牛
  • 注册日期2002-10-18
  • 最后登录2005-07-19
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-05-11 14:44
word 对文件的写操作比较特殊。通常word会先创建一个隐藏的临时文件,对文件进行的所有修改都是对该临时文件的修改。保存时,原文件将被删除,临时文件改名为原文件。
用户层对文件的读写不会调用到ZwReadFile/ZwWriteFile,用户层的文件读写函数,最终将影射到驱动层的NTReadFile/NtWriteFile,这实际上是个系统服务.
对文件的读写操作的过滤可以写文件过滤驱动,具体可参见FileMon
杯汝前来,  老子今朝,  放荡形骸!  甚长年抱渴,  咽如焦釜,  于今喜醉,  气似奔雷!  慢说刘伶,  古今达者,  醉后何妨死便埋! 
liwashington
驱动小牛
驱动小牛
  • 注册日期2004-04-30
  • 最后登录2010-10-21
  • 粉丝0
  • 关注0
  • 积分-11分
  • 威望98点
  • 贡献值1点
  • 好评度12点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-05-11 15:55
要不是有人提起已经把这个贴子给忘了!

通过ZwReadFile和ZwWriteFile确是可以得到一些数据,但并不是全部,我用FileMon看了一下,其读写操作还是有点复杂,其中有FastIo *的操作包含了全部的数据,但并不是通过ZwReadFile和ZwWriteFile来实现的,怀疑其对应的API应该是MapViewOfFile。

总之,要想准确的得到其数据可能要写文件系统驱动了!这是我的看法,不知各位大侠还有何更好的方法?
我只想有个好老婆,每天有几顿好饭吃……
cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
5楼#
发布于:2005-05-11 18:38
用户层对文件的读写不会调用到ZwReadFile/ZwWriteFile,用户层的文件读写函数,最终将影射到驱动层的NTReadFile/NtWriteFile,这实际上是个系统服务.
对文件的读写操作的过滤可以写文件过滤驱动,具体可参见FileMon


这几句没有明白,那到底用户层是否调用ZwReadFile/ZwWriteFile?
还是直接调用NTReadFile/NtWriteFile,或者两者都不调用?

如liwashington所说,“FastIo *的操作包含了全部的数据”是什么意思?难道doc把数据全部catch了,那么也许用的是MapViewOfFile函数!但问题MapViewOfFile?
走走看看开源好 Solaris vs Linux
liwashington
驱动小牛
驱动小牛
  • 注册日期2004-04-30
  • 最后登录2010-10-21
  • 粉丝0
  • 关注0
  • 积分-11分
  • 威望98点
  • 贡献值1点
  • 好评度12点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-05-12 13:29
[quote]用户层对文件的读写不会调用到ZwReadFile/ZwWriteFile,用户层的文件读写函数,最终将影射到驱动层的NTReadFile/NtWriteFile,这实际上是个系统服务.
对文件的读写操作的过滤可以写文件过滤驱动,具体可参见FileMon


这几句没有明白,那到底用户层是否调用ZwReadFile/ZwWriteFile?
还是直接调用NTReadFile/NtWriteFile,或者两者都不调用?

如liwashington所说,“FastIo *的操作包含了全部的数据”是什么意思?难道doc把数据全部catch了,那么也许用的是MapViewOfFile函数!但问题MapViewOfFile? [/quote]

是这样,我通过HOOK ZwReadFile和ZwWriteFile等函数并跟踪Word的运行得知Word程序确实是调用了ZwReadFile和ZwWriteFile这两个函数,但文件的全部数据不全是通过这两个函数实现读写的。至于NtReadFile和NtWriteFile这两个函数,情况好像是这样的:在系统中提供了NtXXX和ZwXXX的两种函数,但实际上它们在作用上是相同的,不知是不是全部相同,但大多好像是相同的。
我只想有个好老婆,每天有几顿好饭吃……
游客

返回顶部