Другое С/С++ Вопрос - Ответ

0xff65

Участник
36
2
Приветствую, решил подогнать лоадер с метод инъекции SetWindowsHookEx, изменял только FindWindowA, но лоадер стопается на моменте [ERROR]: please, start game, что не так?

C++:
#include "loaderFree.hpp"

void downloadFile(const char *dllLink, const char *dllPath)
{
    URLDownloadToFileA(0, dllLink, dllPath, 0, 0);
    DeleteUrlCacheEntryA(dllLink);

    std::cout << "[INFO]: software downloaded!" << std::endl;
}

bool injectDll(const char *dllPath) // by ICoded
{
    HWND hWnd = FindWindowA("NULL", "GTA:SA:MP");
    if (!hWnd) {
        std::cout << "[ERROR]: please, start game" << std::endl;
        return false;
    }
    
    DWORD pid;
    DWORD tid = GetWindowThreadProcessId(hWnd, &pid);
    if (!tid)
    {
        std::cout << "[ERROR]: cannot get process id" << std::endl;
        return false;
    }

    HANDLE hThread = OpenThread(THREAD_ALL_ACCESS, FALSE, tid);
    if (!hThread || hThread == INVALID_HANDLE_VALUE)
    {
        std::cout << "[ERROR]: cannot open process" << std::endl;
        return false;
    }

    HMODULE hMod = LoadLibraryExA(dllPath, NULL, DONT_RESOLVE_DLL_REFERENCES);
    if (!hMod)
    {
        std::cout << "[ERROR]: cannot load software" << std::endl;
        return false;
    }

    if (!SetWindowsHookExW(3, (HOOKPROC)GetProcAddress, hMod, tid))
    {
        std::cout << "[ERROR]: cannot set hook" << std::endl;
        return false;
    }

    std::cout << "[INFO]: injected!" << std::endl;

    Sleep(5000);

    if (PostThreadMessageW(tid, 0, 0, 0))
    {
        ShowWindow(GetConsoleWindow(), SW_HIDE);
        WaitForSingleObject(hThread, INFINITE);
        CloseHandle(hThread);
    }
    
    return true;
}

int main()
{
    std::cout << "[INFO]: starting download..." << std::endl;
    downloadFile(DLL_LINK, DLL_PATH);

    std::cout << "[INFO]: injecting..." << std::endl;
    injectDll(DLL_PATH);

    system("pause");
    return true;
}
 

Smeruxa

smeruxa.ru
Проверенный
1,431
789
Приветствую, решил подогнать лоадер с метод инъекции SetWindowsHookEx, изменял только FindWindowA, но лоадер стопается на моменте [ERROR]: please, start game, что не так?

C++:
#include "loaderFree.hpp"

void downloadFile(const char *dllLink, const char *dllPath)
{
    URLDownloadToFileA(0, dllLink, dllPath, 0, 0);
    DeleteUrlCacheEntryA(dllLink);

    std::cout << "[INFO]: software downloaded!" << std::endl;
}

bool injectDll(const char *dllPath) // by ICoded
{
    HWND hWnd = FindWindowA("NULL", "GTA:SA:MP");
    if (!hWnd) {
        std::cout << "[ERROR]: please, start game" << std::endl;
        return false;
    }
  
    DWORD pid;
    DWORD tid = GetWindowThreadProcessId(hWnd, &pid);
    if (!tid)
    {
        std::cout << "[ERROR]: cannot get process id" << std::endl;
        return false;
    }

    HANDLE hThread = OpenThread(THREAD_ALL_ACCESS, FALSE, tid);
    if (!hThread || hThread == INVALID_HANDLE_VALUE)
    {
        std::cout << "[ERROR]: cannot open process" << std::endl;
        return false;
    }

    HMODULE hMod = LoadLibraryExA(dllPath, NULL, DONT_RESOLVE_DLL_REFERENCES);
    if (!hMod)
    {
        std::cout << "[ERROR]: cannot load software" << std::endl;
        return false;
    }

    if (!SetWindowsHookExW(3, (HOOKPROC)GetProcAddress, hMod, tid))
    {
        std::cout << "[ERROR]: cannot set hook" << std::endl;
        return false;
    }

    std::cout << "[INFO]: injected!" << std::endl;

    Sleep(5000);

    if (PostThreadMessageW(tid, 0, 0, 0))
    {
        ShowWindow(GetConsoleWindow(), SW_HIDE);
        WaitForSingleObject(hThread, INFINITE);
        CloseHandle(hThread);
    }
  
    return true;
}

int main()
{
    std::cout << "[INFO]: starting download..." << std::endl;
    downloadFile(DLL_LINK, DLL_PATH);

    std::cout << "[INFO]: injecting..." << std::endl;
    injectDll(DLL_PATH);

    system("pause");
    return true;
}
Попробуй так
HWND hWnd = FindWindowA(NULL, "GTA:SA:MP");
+ старт программы от имени админа
 
  • Нравится
Реакции: 0xff65

0xff65

Участник
36
2
обрати внимание, что твой ехешник должен быть х32, соответствуя игре
Перебрал все ошибки мира, а вот оно какое оказалось решение..

обрати внимание, что твой ехешник должен быть х32, соответствуя игре
А вот ещё один вопрос, использую usermode mmap IAT, игру просто всегда крашит, пробывал так же древнейший mmap thread hijacking - результат один и тоже, это так же из-за x32 архитектуры этой прекрасной игры?

1734516863115.png

b
 
Последнее редактирование:

Uno 0_o

Участник
35
13
Пасаны как сделать инжект закриптованного кода в память с последующим декриптом так-же в памяти. XDD
Кто шарит хелпаните молодому


Upd: пояснение
Допустим есть строка
system("calc");
Я ее хуярю методом AES и получается так - +P8Sq1XJLtk3kns608sfcg== (huihuihuihuihui1 Это ключ)
Загружаю в память и там ее расшифровываю обратно в исполняемый код и там он уже исполняется. (Можно в целом и в байтовом виде или ассемблерном мне до пизды как, главное чтоб работало ) Последний раз с памятью я работал в шараге на Turbo-C
 
Последнее редактирование:

Vintik

Через тернии к звёздам
Проверенный
1,568
1,066
Пасаны как сделать инжект закриптованного кода в память с последующим декриптом так-же в памяти. XDD
Кто шарит хелпаните молодому
А можно русским языком.
Декриптом это ты о чём?
 

AdCKuY_DpO4uLa

Адский дрочер
Друг
369
817

horacy

Известный
110
97
как получить разбита ли фара у машины?

вы, вероятно, можете проверить это с помощью этих функций.

C++:
                    CVehicle* cveh = getSelfCVehicle();
                    //0-off light on-1+
                    for (size_t i = 0; i < 4; i++)
                    {
                    addMessageToChatWindow("light id %d state: %d", i,cveh->GetDamageManager()->GetLightStatus(i));
                    }
                     //damage status panels
                        for (size_t i = 0; i < 3; i++)
                        {
                            addMessageToChatWindow("panel id %d state: %d", i,cveh->GetDamageManager()->GetPanelStatus(i));
                        }

нужно проверить какому ID панели соответствует отражатель и какому статусу соответствует поврежденный отражатель

 

Smeruxa

smeruxa.ru
Проверенный
1,431
789
Как color перевести в RGB и обратно? Так же этот RGB передать в AddMessage (RefChat)
Очень поможет, может глупый вопрос, но все же
Не надо выдавать ответы гадая, будьте добры, мне нужен корректный ответ который написан не на рандом, что color состоит из r g b давайте разобьем и т.д.
Я несколько раз пытался, криво косо получается и не выдает нужный мне цвет, поэтому пришел сюда за помощью
C++:
rakhook::on_receive_rpc += [](unsigned char& id, RakNet::BitStream* bs) -> bool {
        if (id == 93) {
            bs->ResetReadPointer();

            uint32_t color;
            bs->Read(color);