我使用wininet库并将其挂钩以监控互联网请求。
挂钩功能是“InternetConnectW”,“HttpOpenRequestW”和“InternetReadFile”。
首先,我从“InternetConnectW”获得一个HINTERNET句柄。
我从第一个句柄“HttpOpenRequestW”获得第二个HINTERNET句柄。
当我挂钩“InternetReadFile”时,IN参数包含第二个句柄。
这是InternetReadFile挂钩功能。
BOOL STDAPICALLTYPE Hook_InternetReadFile( __in HINTERNET hFile, __out LPVOID lpBuffer, __in DWORD dwNumberOfBytesToRead, __out LPDWORD lpdwNumberOfBytesRead ) { // i want to get Internet http URL here!!!!! return Origin_InternetReadFile(hFile, lpBuffer, dwNumberOfBytesToRead, lpdwNumberOfBytesRead); }
如何从HINTERNET手柄获取URL?
答案 0 :(得分:1)
尝试将INTERNET_OPTION_URL
与InternetQueryOption一起使用。
示例:
TCHAR *szUrl = new TCHAR[INTERNET_MAX_URL_LENGTH];
DWORD dwLen = sizeof(TCHAR)*INTERNET_MAX_URL_LENGTH;
BOOL bRet = InternetQueryOption(hFile, INTERNET_OPTION_URL, szUrl, &dwLen);