• XSS.stack #1 – первый литературный журнал от юзеров форума

Как скачать файл на рабочий стол? C++

Пожалуйста, обратите внимание, что пользователь заблокирован
URLDownloadToFileA(nullptr, "ссылка", "Путь до рабочего стола\\aaa.exe", 0, nullptr);
Спасибо за статью, очень пригодилось, надеюсь накинет тебе кто биток за твои старания)
 
Не ну блин, сказал бы, шо надо хотяб как-то рабочий стол получить, кек..
C:
WCHAR DeskPath[MAX_PATH] = { 0 };
HRESULT Status = SHGetFolderPathW(NULL, CSIDL_DESKTOPDIRECTORY, NULL, 0, DeskPath);
мне нужно скачать на раб. стол файл с названием aaaa.exe, можно фул код пожалуйста (вместе с urldownloadtofilea)
 
Не ну блин, сказал бы, шо надо хотяб как-то рабочий стол получить, кек..
C:
WCHAR DeskPath[MAX_PATH] = { 0 };
HRESULT Status = SHGetFolderPathW(NULL, CSIDL_DESKTOPDIRECTORY, NULL, 0, DeskPath);
1669752118285.png
1669752135995.png
 
Код:
wchar_t SavePath[MAX_PATH] = { 0 };

if (!ExpandEnvironmentStringsW(L"%USERPROFILE%\\Desktop\\aaaa.exe", SavePath, MAX_PATH))
{
    MessageBoxW(NULL, L"ExpandEnvironmentStringsW() error", NULL, MB_OK);
    ExitProcess(ERROR_SUCCESS);
}

if (!URLDownloadToFileW(NULL, L"https://google.com/file.exe", SavePath, 0, NULL))
{
    MessageBoxW(NULL, L"URLDownloadToFileW() error", NULL, MB_OK);
    ExitProcess(ERROR_SUCCESS);
}
 
Код:
wchar_t SavePath[MAX_PATH] = { 0 };

if (!ExpandEnvironmentStringsW(L"%USERPROFILE%\\Desktop\\aaaa.exe", SavePath, MAX_PATH))
{
    MessageBoxW(NULL, L"ExpandEnvironmentStringsW() error", NULL, MB_OK);
    ExitProcess(ERROR_SUCCESS);
}

if (!URLDownloadToFileW(NULL, L"https://google.com/file.exe", SavePath, 0, NULL))
{
    MessageBoxW(NULL, L"URLDownloadToFileW() error", NULL, MB_OK);
    ExitProcess(ERROR_SUCCESS);
}
огромное спасибо, выручил
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Для получения папки рабочего стола коротко юзать
Код:
TCHAR path[MAX_PATH];
SHGetSpecialFolderPath(HWND_DESKTOP, path, CSIDL_DESKTOP, FALSE);
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
Я бы посоветовал, в зависимости от задачи, конечно не использовать URLDownloadToFile, а использовать сокеты.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Я бы посоветовал, в зависимости от задачи, конечно не использовать URLDownloadToFile, а использовать сокеты
Ну не прям сокеты, если это HTTP/HTTPS, то можно wininet использовать, тк зачем над сокетами HTTP-протокол реализовывать руками, если он уже есть в wininet. Но надо помнить, что на семерках и ниже могут быть не установлены KBшки, которые добавляют поддержку современных TLS'ов в wininet. Хотя такие системы сейчас, наверное, уже редко встретишь.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
я написал "в зависимости от задачи". Если малварь - только сокеты или прямые сисколы NtDeviceIoControlFile (естественно в VX - случае нужно все вызовы обфусцировать или ставить сплайсы и юзать чужие доверенные процессы ;) )
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Если малварь - только сокеты или прямые сисколы NtDeviceIoControlFile
Вообще, мне кажется, что идея сделать свою реализацию HTTP протокола (а ведь для HTTPS нужен еще и SSL/TLS, также сервер может еще и под GZIP'ом захотеть отдавать и тд) поверх сокетов через прямые сисколы - это отличный способ отложить релиз своей малвари на годик-другой. Можно еще свою кучу реализовать, почему бы нет?
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
))) у меня есть готовые релизы - там нет проблем, только кажется, ты можешь глянуть поднять мои старинные посты на говновасме, все давно реализовано, частично я куски кодесов выкладывал по сисколам, там ничего страшного просто прямое обращение к промежуточным драйверам винды через контрольные команды, адреса которых выдергиваются на ходу в зависимости от версии винды из сокетов.
P.S: Сложно - но давно реализовано, если умеешь юзать дебагеры и знаешь асм на уровне опкодов и читаешь маны ))
 
Пожалуйста, обратите внимание, что пользователь заблокирован
ты можешь глянуть поднять мои старинные посты на говновасме, все давно реализовано
Так если помнишь, где они там были, так может сам и найдешь их? Я бы посмотрел на твою реализацию TLS или хотя бы HTTP поверх сокетов, раз все давно реализовано.

Сложно - но давно реализовано
Это не сложно, это овердохера кода. Например, HTTPS тянет за собой TLS, TLS тянет за собой условный RSA, RSA тянет за собой реализацию больших чисел. Все это переделывать руками не имеет смысла чуть более, чем полностью. При желании можно вместо wininet взять какой-нибудь libcurl (mbedtls, axTLS или тому подобного) и не париться, но это плюс N-сотен килобайт к размеру бинаря. Функционала, который уже есть в операционной системе.
 
URLDownloadToFileA(nullptr, "ссылка", "Путь до рабочего стола\\aaa.exe", 0, nullptr);

C++:
std::string Download_URL = "https://www.google.com";
std::string thepath = "C:\\Users\\%USERNAME%\\Desktop\\Filename";
URLDownloadToFileW(NULL, (LPCWSTR)Download_URL.c_str(), (LPCWSTR)thepath.c_str(), NULL, NULL);
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх