挂钩 InternetOpenUrl

Hooking InternetOpenUrl

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

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

编辑的句柄 return

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

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

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

那么我怎样才能让它工作呢?

更新:

现在我调用 InternetOpen 来获取虚拟句柄。似乎由 InternetOpenInternetOpenUrl 编辑的句柄 return 不相等。

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

所以您正在尝试将 URL 查询重定向到一个文件...您始终可以托管该文件,然后在任何一种情况下都可以保证您有一个有效的句柄。但是,假设是一个本地文件,我认为如果您在 URL 中指定 "file://" 协议,它可能会按照您想要的方式工作。