挂钩InternetOpenUrl

时间:2017-01-09 01:52:06

标签: c++ windows winapi hook wininet

我正在编写一个应该在另一个进程中挂钩InternetOpenUrlInternetReadFile的应用程序。

InternetOpenUrl的钩子版本中,它将检查传递给它的lpszUrl是否与正则表达式匹配。如果匹配,则记录实际InternetOpenUrl返回的句柄。

然后在InternetReadFile的钩子版本中,如果InternetReadFile参数等于记录的句柄,它将从文件中读取而不是调用实际的hFile

我发现Windows会在调用InternetOpenUrl时尝试连接到提供的服务器,如果无法建立连接,该函数将返回NULL

但是我希望这个机制即使没有Internet连接也能工作,所以当正则表达式匹配时,我似乎无法通过调用钩子中的实际InternetOpenUrl来获得句柄。

那我怎么能让它发挥作用呢?

更新

现在我调用InternetOpen来获取虚拟句柄。 InternetOpenInternetOpenUrl返回的句柄似乎不相等。

但我不确定它是否有保障,寻找更好的选择。

1 个答案:

答案 0 :(得分:2)

因此,您尝试将URL查询重定向到文件...您可以随时托管该文件,然后在任一情况下都可以保证有效的句柄。但是,假设一个本地文件,我认为如果您在URL中指定“file://”协议,它可能会以您希望的方式工作。