2017-12-01 55 views
0

私はwininetライブラリを使用し、これをフックしてインターネット要求を監視します。HINTERNETのハンドルからURLを取得する方法

フック機能は、 "InternetConnectW"、 "HttpOpenRequestW"、 "InternetReadFile"です。

まず、 "InternetConnectW"からHINTERNETハンドルを取得します。

そして、最初のハンドルで "HttpOpenRequestW"から2番目のHINTERNETハンドルを取得します。

"InternetReadFile"をフックすると、INパラメータに2番目のハンドルが含まれます。

これはInternetReadFile Hooking Functionです。

 
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を取得するにはどうすればよいですか?

答えて

1

INTERNET_OPTION_URLInternetQueryOptionとしてみてください。

例:szUrlはoutbufferグローバル

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); 
+0

が割り当てられていますか? https://msdn.microsoft.com/ko-kr/library/windows/desktop/aa385101(v=vs.85).aspx – lucidmaj7

+0

ここで私はdealloc szUrl? – lucidmaj7

+0

ヒープに固定長の配列を割り当てるには無意味ですが、そのようにsizeofを使うのは間違いです。これは、バッファではなくポインタのサイズを提供します。 –

関連する問題