逆向工程核心原理之第23章之dll下載網頁
用devc++編譯dll下載網頁程式碼
方法1 用Windows本身的dll:
在 工具->編譯選項->編譯器->在聯結器命令列加入以下命令
去掉 -static-libgcc
新增如下 -lole32 -loleaut32 -lurlmon -lwininet
在 工具->編譯選項->目錄->庫
新增 urlmon.dll 和 wininet.dll所在的目錄 C:\Windows\System32
即可編譯通過
方法2,用IDE帶的.a:
有兩種途徑
途徑1
在 工具->編譯選項->編譯器->在聯結器命令列加入以下命令
去掉 -static-libgcc
新增如下 libole32.a liboleaut32.a liburlmon.a libwininet.a
途徑2:
新建一個專案
在 專案屬性->引數->連結 中加入庫或者物件
64位用如下兩個:
"../../Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib/liburlmon.a"
"../../Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib/libwininet.a"
32位用如下兩個:
"../../Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib32/liburlmon.a"
"../../Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib32/libwininet.a"
附下載程式碼:
#include <stdio.h>
#include <Urlmon.h>
#include <Wininet.h>
#pragma comment(lib,"Urlmon.lib")
#pragma comment(lib, "Wininet.lib")
int main()
{
CoInitialize(NULL);
const char *pURL = "https://www.baidu.com";
const char *pFileName = "D:\\bd.html";
char szBuffer[1024*128] = {0};
unsigned long iSize = 0;
char szPreCommand[128] = {0};
DeleteUrlCacheEntry(pURL);//清空快取,否則伺服器上的檔案修改後,無法下載最新的檔案
if (URLDownloadToFile(NULL, pURL, pFileName, 0, NULL)==S_OK)
{
printf("URLDownloadToFile OK\n");
}
else
{
printf("URLDownloadToFile Fail,Error:%d\n", GetLastError());
}
CoUninitialize();
return 0;
}