阅读:3109回复:3
求教Windows下打开office软件调用内核函数过程
本人在研究hook技术,即对软件的透明加密技术
基本想法: 修改Windows内核函数,如zwopenfile, zwcreatefile, zwreadfile……等函数,将他们的在内存中的地址换成自己写的函数,这样在用户打开应用程序文件时都会用到我写的函数,函数实现的内容是把文件进行加密然后保存到硬盘中,这样即使别人拷走文件,但不运行我的驱动程序,就不能正常打开。 现在我遇到的问题是,打开office文档时,例如word,就不能拦截到,按道理如果打开文件时调用系统zwopenfile 或者creatfile函数时,都会被我的程序截获,但是现在不成功,我怀疑office文件打开时与其他文件不一样。 现在成功拦截到的有写字板程序。 请教各位大侠,给予指示,谢谢 |
|
沙发#
发布于:2011-03-16 17:05
在你拦截的函数里你是怎么判断文件被打开的?
|
|
板凳#
发布于:2011-03-18 09:39
其实我的想法并不是去拦截某个文件打开,最终想法是,我把系统的zwopenfile, zwcreatefile, zwreadfile……等函数在ssdt中替换成我写的函数,只要是用户打开文件,都会调用到我的函数,然后在我的函数里进行加密。
现在我为了调试方便,对调用到我函数的进程进行判断,对我希望加密的文件就继续执行我的函数,如word.exe,通过PsGetCurrentProcess可以得到进程信息,如果不是我希望加密的文件就调用系统原来的函数正常操作。系统原来的内核函数入口我是有保存的 |
|
地板#
发布于:2011-03-21 09:25
我在自己写的函数里hookzwcreatefile() , hookzwopenfile(), hookzwreadfile(), hookzwwrifile(), hookzwclose(), 中 我debugprint()输出一些信息,发现打开word程序时,也都输出了信息,而且确定是winword进程调用引起的,因为有输出进程信息,这就证明了word程序是调用我写的这些函数的,但为什么就不能像txt文件一样加密?
我在论坛里搜索了相关帖子,发现word打开时,会生成中间文件,现在我就不太清楚这个流程是怎么回事,如果中间文件也是调用我写的这些函数,应该也会成功才对啊 请各位指教 |
|