逆向工程核心原理之第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;
}

posted on 2022-03-22 22:12  子虚乌有  阅读(97)  评论(0编辑  收藏  举报