最近学习拦截下载窗口创建的一些心得

    技术2022-05-18  17

    最近自己在搞一个课题,其中一部分工作是拦截浏览器下载框,即一旦浏览器下载框创建了,我就可以拦截到。刚开始的时候不知道从哪儿入手,自己就一步一步的找。

    这个过程也差不多要一个月了,最开始关注的是setwindowshookex函数,但由于自己不会用,还有一个原因是论文里提到的跟这个函数拦截的消息不同,我就放弃了。然后又找到了setwineventhook函数,拦截的是EVENT_OBJECT_CREATE事件,呵呵,主要是这跟论文里写的是相同的。在这个过程中,出现了一些问题,调试dll文件时,老是不稳定,有时会进回调函数,可有时却不能。郁闷。

    但最关键的问题是在用搜狗浏览器选择高速下载的时候,可以拦截到,可偏偏用普通的ie下载方式却拦截不到下载框的创建。简直无语,而且用dll方式hook的话,又会被安全卫士截杀,郁闷的直想卸掉他(当然按理说,应该做到不被安全软件截杀到才对的,可先能做出来就不错了,那还能管他们多呢。)。

    后来又换了一个api函数,RegisterShellHookWindow。他不用dll方式,安全卫士貌似也没有拦截,但也有问题。我拦截的事件是HSHELL_WINDOWCREATED(后来也换过其他所有的方式),可以拦截到普通的ie下载,可拦截不到高速下载方式。背了各具。万念俱灰啊。

    晚上,就刚才,我用spy++软件测试拦截,才明白我以前根本就不用会它,原来这个软件是很强大的。测试后发现WM_CREATE就能拦截到两种方式的下载框创建。怎么好像回到当初那个函数了,哎。(对了测试过程中,还有一个小细节,开始的时候在日志消息里我选择的是同一进程的窗口,并没有拦截到ie下载方式,后来才发现搜狗是多个进程运行的,而创建下载的进程并不是下载页面的那个进程,好奇怪。后来我就选择所有的窗口,就拦截到了,两种都拦截到了。)

    上图是普通的ie下载方式

    上图是搜狗高速下载方式

     

    明天就动手写代码,早点把这部分搞定,任务还多着呢。


    最新回复(0)