easyhook别人的项目

3. 与项目结合####

项目需求点:公司产品前端使用的是NW框架,里面用的是chrome的内核,现在要做一个功能,需要升级,但是升级后不再支持 NPAPI 类型的插件,但支持PPAPI,但是这个时候出现一个问题,加载含有flash插件页面时,CMD命令行窗口会闪一下,要做到能加载flash插件,但是CMD命令行窗口不能闪。
解决:发现是命令行参数是not sandboxed时,通过hook截掉。
集成:按照例子中的代码,进行测试,发现既然不能拦截,郁闷啊,刚开始以为是注入失败,后面加了log,才发现,注入是成功的,失败的原因是因为NW刚起来的固定有几个进程,当弹CMD框的时候,会额外起进程,而我写的注入程序只注入了NW刚起来的程序,没有抓额外的进程,所以失败了,现在问题来了,怎么获取这个会弹cmd框的子进程呢?想了好久,没有找到合适的方法,后面想着只能去改NW的源码了,唉~~~
新的希望:后面我的同事有空,他就帮我看起来了,他比较厉害,他想到可以先hook起子进程的命令,然后在给这个子进程注入,去屏蔽掉
not sandboxed,我就没有想到。然后安装这个思路,就往下做,这里都是hook了kernel32的CreateProcess方法,因为程序区分了宽字节和窄字节,所以要hook CreateProcessA和CreateProcessW这个二个,要确认你注入的程序是64位还是32位,然后注入相应版本的dll
问题点记录:

LhSetExclusiveACL和LhSetInclusiveACL的区别
LhInstallHook与LhSetExclusiveACL/LhSetInclusiveACL必须配对出现,否则hook不会生效,我在做测试的时候,发现我配对
使用了,但是尽然还是没效果,找了好久,后面才发现,是因为我没有搞清楚LhSetExclusiveACL和LhSetInclusiveACL,LhSetExclusiveACL是hook除了当前线程外的所有线程,而LhSetInclusiveACL是可以针对当前线程,所以如果单独起了线程去执行hook的操作,那这样必须使用LhSetExclusiveACL,如果没有起线程,直接执行hook,那必须使用LhSetInclusiveACL。
EasyHook可以支持远程注入
在查看新东西的时候,官方文档很重要,先参照官方文档的例子,可以节约很多时间
hook的时候要确定你注入的是64位还是32
 
原文链接:https://blog.csdn.net/xwp3211/article/details/85633689

猜你喜欢

转载自www.cnblogs.com/hshy/p/12289519.html