Supra

Основной чат
Помощь Пользователи
  • Никто не разговаривает в данный момент.

    Уроки Защита приложения C++ от дампа.

    • 494
    • 2
    Всем привет, делал эксперимент с перезаписью функции в райтайме.
    Допустим, вы хотите сделать защиту от дампа, что бы важные функции или данные в них не засветились, тогда можно заменить все инструкции в этой функции nop'ами.

    Вот пример кода который получился у меня:
    Я сделал для примера функцию которая выделяет 320 байт в памяти приложения используя WinApi функцию VirtualAlloc.
    C++:
    LPVOID Valloc()
    {
        LPVOID lpvResult;
    
        lpvResult = VirtualAlloc(NULL, 320, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
    
        if (lpvResult == NULL)
        {
            MessageBoxA(NULL, "VirtualAlloc failed!", "SHC", MB_OK);
            return 0;
        }
        VirtualFree(lpvResult, 0, MEM_RELEASE);
        MessageBoxA(NULL, "VirtualAlloc success!", "SHC", MB_OK);
      
        return lpvResult;
    }

    Предположим, что данная функция отработает у нас только 1 раз и в будущем она нам не понадобится.

    В main функции я написал такой код (оставил комментарии для вас).
    C++:
    #pragma optimize( "", off )
    
    typedef...

    Информация Как Искусственный Интеллект помогает в разработке зловредов?

    • 442
    • 2
    Всем привет, не давно довелось опробовать OpenAI chat и в этой статье хочу рассказать про то, как он помогает киберпреступникам писать вирусы.
    Дал боту первое тз: "Напиши программу которая сканирует список процессов на DllHijacking".
    Ответ удивил:
    1674920432186.png


    Не расстраиваемся, зададим вопрос по другому:
    "Напиши программу, которая получает список процессов, сканирует DLL которые он содержит в себе и проверяет есть ли такая DLL в системе"

    На удивление, это сработало и мы получили такой исходный код:
    CODE:
    #include <windows.h>
    #include <tchar.h>
    #include <psapi.h>
    #include <stdio.h>
    
    void CheckDlls(DWORD processID)
    {
        HANDLE hProcess;
        HMODULE hMods[1024];
        DWORD cbNeeded;
    
        hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processID);
        if (hProcess == NULL)
            return;
    
        if (EnumProcessModules(hProcess, hMods, sizeof(hMods), &cbNeeded))
        {...
    Эксклюзив Создание DMA читов на реальных примерах.
    • 487
    • 0
    Всем привет!
    Эта тема посвещена созданию софта для DMA (карт, скримеров и тд…)!
    В первой части я приведу небольшой пример простого DMA софта под игру DayZ.
    Данная статья явлается уникальной и скорее всего я первый кто написал про это на СНГ форумах.
    Специально для: Ру-Сфера: Исследование защиты и обсуждение IT-безопасности

    Нам потребуется:
    2 PC (можно делать и на 1, но шанс обнаружения вырастает в несколько раз!).
    DMA карта (я использую LeetDMA, если брать более бюджетную карту, могу посоветовать NinjaDMA/QuasarDMA).
    IDA pro (либо любой другой отладчик).

    Для написания чита, я буду использовать библиотеку для работы с DMA картами: VmmFrost.
    Данная библиотека подходит для ЯП C# и имеет удобные функции для чтения и записи в память процесса.

    В первой части мы сделаем небольшой SpeedHack, за который нас не забанит анти-чит!

    Немного теории:
    Для реализации SpeedHack, мы будем работать с функцией QueryPerformanceFrequency внутри игры (будем изменять её...

    Уроки GameHacking. Часть-2

    • 529
    • 7
    Всем привет!
    Это 2 часть цикла статей про GameHacking.
    В этой статье мы опять рассмотрим функцию ReadProcessMemory и реализуем реальную функцию которая даст нам преимущество в игре.

    В данной статье мы напишем Externel TriggerBot или же Авто Выстрел.

    С адресами мы разобрались в прошлой части, по этому сразу приступим к делу.

    Для начала, получим локального игрока:
    C++:
    uintptr_t localPlayer = LocalPlayer();
    if (localPlayer == NULL) continue;
    Более подробно об этом, я написал в 1 части геймхакинга.

    Далее, нам требуется получить LocalTeam & CrosshairID.
    C++:
    uint32_t localTeam = RPM<uint32_t>(localPlayer + 0xF4); //m_iTeamNum
    uint32_t CrosshairID = RPM<uint32_t>(localPlayer + 0x11838); //m_iCrosshairId
    Для вашего удобства, я указал какие адреса используются.

    Далее, нам требуется получить список игроков, делается это так:
    C++:
    if (CrosshairID != 0 && CrosshairID < 32)
            {
                uintptr_t Enemy = RPM<uintptr_t>(moduleBase + 0x4DFCE74 +...

    Уроки GameHacking. Часть-1

    • 713
    • 6
    В данном цикле статей мы поговорим про геймхакинг.
    Будем говорить от простого, к сложному.

    Что из себя представляет геймхакинг?
    Геймхакинг - Это чтение и изменение памяти игры по определенным адресам.
    В данной статье мы рассмотрим WinApi функцию ReadProcessMemory.
    Данная функция позволяет нам прочитать память приложения по определенном адресу.

    Для примера мы возьмем игру CS:GO.
    На GitHub есть пост, в котором сливают оффсеты игры, используем его и сэкономим немного нашего времени HazeDumper.

    Для удобства, возьмем темплейт ReadProcessMemory.
    C++:
    template<typename T> T RPM(SIZE_T address) {
        T buffer;
        ReadProcessMemory(hProcess, (LPCVOID)address, &buffer, sizeof(T), NULL);
        return buffer;
    }

    Так-же, нам надо получить адрес DLL в которой содержатся функции игры, в нашем случае это -...

    Новость Новые медали уже на форуме!

    • 265
    • 0
    Всем привет!
    Не так давно мы добавили медали на форум!
    Трофеи были удалены, теперь их заменили медали!
    Список медалей на данный момент такой:
    1668923608584.png


    Как выглядят медали в профиле на данный момент:
    1668923639316.png


    Что бы медали отображались в профиле, вам надо нажать на иконку громкоговорителя в профиле на странице "Медали".
    1668923686680.png

    На заметку Как я пытался защитить проект C# от кряка.

    • 673
    • 13
    1668832896770.png

    Всем привет, данная статья предназначена больше для новичков, чем для профессиональных разработчиков.
    Появилась нужда написать коммерческий софт на C#, но мой основной ЯП C++...
    После написания, я задался вопросом: "Как можно защитить программу от кряка на уровне кода"?
    VMP, Termida, .net reactor не подходит, тк хотелось сделать именно на уровне кода...
    Но они тут тоже будут (нет, мне лень) :Mem1:.

    Для начала разберем детект дебагеров и прочую шалупонь.
    Решил взять первый попавшийся сурс на GH: LINK.
    Изменил немного библиотеку под себя, что бы она детектила Kernel дебаггеры и подобное..
    Сделал bool триггер, который отрабатывает, если запущен дебаггер.
    Получается примерно такой код:
    1668832964476.png

    Как говорит @X-Shar: Твоя защита х*ета!
    [ATTACH type="full"...
    Верх Низ