nudtcan
驱动牛犊
驱动牛犊
  • 注册日期2011-03-16
  • 最后登录2011-05-26
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望71点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2953回复:3

求教Windows下打开office软件调用内核函数过程

楼主#
更多 发布于:2011-03-16 15:26
本人在研究hook技术,即对软件的透明加密技术

基本想法:
       修改Windows内核函数,如zwopenfile, zwcreatefile, zwreadfile……等函数,将他们的在内存中的地址换成自己写的函数,这样在用户打开应用程序文件时都会用到我写的函数,函数实现的内容是把文件进行加密然后保存到硬盘中,这样即使别人拷走文件,但不运行我的驱动程序,就不能正常打开。

现在我遇到的问题是,打开office文档时,例如word,就不能拦截到,按道理如果打开文件时调用系统zwopenfile 或者creatfile函数时,都会被我的程序截获,但是现在不成功,我怀疑office文件打开时与其他文件不一样。
现在成功拦截到的有写字板程序。

请教各位大侠,给予指示,谢谢
wxj120bw
驱动小牛
驱动小牛
  • 注册日期2008-06-14
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分109分
  • 威望1014点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2011-03-16 17:05
在你拦截的函数里你是怎么判断文件被打开的?
nudtcan
驱动牛犊
驱动牛犊
  • 注册日期2011-03-16
  • 最后登录2011-05-26
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望71点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2011-03-18 09:39
其实我的想法并不是去拦截某个文件打开,最终想法是,我把系统的zwopenfile, zwcreatefile, zwreadfile……等函数在ssdt中替换成我写的函数,只要是用户打开文件,都会调用到我的函数,然后在我的函数里进行加密。

现在我为了调试方便,对调用到我函数的进程进行判断,对我希望加密的文件就继续执行我的函数,如word.exe,通过PsGetCurrentProcess可以得到进程信息,如果不是我希望加密的文件就调用系统原来的函数正常操作。系统原来的内核函数入口我是有保存的
nudtcan
驱动牛犊
驱动牛犊
  • 注册日期2011-03-16
  • 最后登录2011-05-26
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望71点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2011-03-21 09:25
我在自己写的函数里hookzwcreatefile() , hookzwopenfile(), hookzwreadfile(), hookzwwrifile(), hookzwclose(), 中 我debugprint()输出一些信息,发现打开word程序时,也都输出了信息,而且确定是winword进程调用引起的,因为有输出进程信息,这就证明了word程序是调用我写的这些函数的,但为什么就不能像txt文件一样加密?
我在论坛里搜索了相关帖子,发现word打开时,会生成中间文件,现在我就不太清楚这个流程是怎么回事,如果中间文件也是调用我写的这些函数,应该也会成功才对啊

请各位指教
游客

返回顶部