关于hook方面的实现(200分)

  • 主题发起人 主题发起人 zxi2000
  • 开始时间 开始时间
Z

zxi2000

Unregistered / Unconfirmed
GUEST, unregistred user!
想做一个动态对文件进行加密解密的处理<br>具体思路是: <br>针对doc文件, 在关闭文档时,在该doc文件里加入一段自定义信息, 打开时,则先把这段<br>自定义信息去掉, 这样即使别人把该文件copy走,也没办法在其它机器上打开<br>查看了一下以前的贴子,感觉好象需要hook closehandle, shellexecute, createprocess等函数, 不过在设置钩子类型时, 不知道应该设置哪种类型<br>SetWindowsHookEx 里应该设置WH_CBT还是WH_SHELL?<br><br>希望高手们指教,或者有没有更好的思路?
 
关注,钩子的问题少有人回答.我问了好几个,没有满意的答案.
 
问问麻子吧!<br>我用delphi没有做过,用DDK的HOOK方法倒是可以!
 
麻子是哪位高人?联系方式?
 
说一个驱动一级的HOOK方式。<br>拦截ZWCreateFile函数,然后当文件被打开的时候对文件的信息进行解密。<br>拦截ZwClose函数,对文件的内容进行加密!<br>(个人看法!)
 
建议使用WH_CBT类型,以避免漏截.WH_SHELL类型按照理解,也应该可以,不过没实际测试,主要是不知是否能对你所提供的几个函数全部适用.<br><br>当然,我上面的回复完全是错误的,因为楼主对这个HOOK API 的概念也是完全错误的.<br>消息钩子和 HOOK API 完全是两码事,共同点只在于都使用了HOOK.<br>消息钩子的目的是对设置的消息类型的每一个消息进行截取.<br>而HOOK API虽然也包含的是一个消息钩子,但其目的是在于,注入目标进程中,修改API入口(方法不只修改API一种),也就是说,不管哪种消息类型,只要有一个消息就足够了,截取到一个消息,就可以将DLL注入到目标进程中.这个消息甚至可以是鼠标消息.<br>个人认为,HOOK API 来实现一个这样的功能,有点将问题复杂化.<br>如果是我做的话,我会先将DOC文件更改打开方式,默认设置为自己的这个程序打开.当然,你得先自己把这个文件加密了.这样,每次打开DOC文件,系统就调用自己的程序来打开这个文件,程序运行后,先将DOC文件解密,生成一个解密的临时文件,再调用原DOC文件默认打开程序,打开解密的临时DOC文件.程序中可以设置一个定时器,判断DOC文件是否关闭,如果关闭,则删除临时文件.<br>我想这个方案比起HOOK API来,不但代码简单,不需要DLL,而且占用系统资源更少.<br>至于安全可靠性,我想你的HOOK API方案也不会有多好.关键在于你的加密解密程序要设置好权限了.别让什么人都可以运行 起来.
 
[:)]首先多谢zfg886的回复,把我从死胡同里拉了回来<br>因为老板的要求就是用户不需要再打开任何程序,一开机后指定格式文件必须要有这种加解密的功能,象我等看别人眼色行事,实在是没有太多发言权<br>能不能可以这么理解<br>1, 参照api函数原型, 定义自已相应的api函数,做成dll<br>2. 利用进程隐藏的方式,把该dll注入到进程iexplore里,在开机时自动运行<br>做到这两步就可以了?
 
to zxi2000兄:<br>1, 参照api函数原型, 定义自已相应的api函数,做成dll<br>type<br> TtextoutA=function(parameters...) :boolean;stdll;<br>function myTextoutA(parameters...) :boolean;<br>begin<br>....<br>end;<br>可是怎么让系统不调用api函数TextoutA而调用我定义的mytextouta函数。<br>这在dll中怎摸实现的?
 
后退
顶部