挂钩 InternetOpenUrl
Hooking InternetOpenUrl
我正在编写一个应在另一个进程中挂钩 InternetOpenUrl
和 InternetReadFile
的应用程序。
在 InternetOpenUrl
的挂钩版本中,它将检查传递给它的 lpszUrl
是否与正则表达式匹配。如果匹配,则记录由实际 InternetOpenUrl
.
编辑的句柄 return
然后在 InternetReadFile
的 hook 版本中,如果 hFile
参数等于记录的句柄,它将从文件读取而不是调用实际的 InternetReadFile
。
我发现 Windows 会在调用 InternetOpenUrl
时立即尝试连接到提供的服务器,如果无法建立连接,该函数将 return NULL
.
但我希望这种机制即使在没有 Internet 连接的情况下也能工作,所以当正则表达式匹配时,我似乎无法通过在我的 hook 中调用实际的 InternetOpenUrl
来获得句柄。
那么我怎样才能让它工作呢?
更新:
现在我调用 InternetOpen
来获取虚拟句柄。似乎由 InternetOpen
和 InternetOpenUrl
编辑的句柄 return 不相等。
但不确定是否有保障,寻找更好的选择。
所以您正在尝试将 URL 查询重定向到一个文件...您始终可以托管该文件,然后在任何一种情况下都可以保证您有一个有效的句柄。但是,假设是一个本地文件,我认为如果您在 URL 中指定 "file://" 协议,它可能会按照您想要的方式工作。
我正在编写一个应在另一个进程中挂钩 InternetOpenUrl
和 InternetReadFile
的应用程序。
在 InternetOpenUrl
的挂钩版本中,它将检查传递给它的 lpszUrl
是否与正则表达式匹配。如果匹配,则记录由实际 InternetOpenUrl
.
然后在 InternetReadFile
的 hook 版本中,如果 hFile
参数等于记录的句柄,它将从文件读取而不是调用实际的 InternetReadFile
。
我发现 Windows 会在调用 InternetOpenUrl
时立即尝试连接到提供的服务器,如果无法建立连接,该函数将 return NULL
.
但我希望这种机制即使在没有 Internet 连接的情况下也能工作,所以当正则表达式匹配时,我似乎无法通过在我的 hook 中调用实际的 InternetOpenUrl
来获得句柄。
那么我怎样才能让它工作呢?
更新:
现在我调用 InternetOpen
来获取虚拟句柄。似乎由 InternetOpen
和 InternetOpenUrl
编辑的句柄 return 不相等。
但不确定是否有保障,寻找更好的选择。
所以您正在尝试将 URL 查询重定向到一个文件...您始终可以托管该文件,然后在任何一种情况下都可以保证您有一个有效的句柄。但是,假设是一个本地文件,我认为如果您在 URL 中指定 "file://" 协议,它可能会按照您想要的方式工作。