Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Гайд FiveM MatrixSpoofer — Open Source HWID Spoofer

Sloppy
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
13 Фев 2026
Сообщения
724
Реакции
18
Парни, прилетел неплохой опенсурс проект для тех, кто копает в сторону обхода HWID банов в FiveM. Автор решил выложить наработки MatrixSpoofer — это база, написанная «на коленке» от скуки, но технически она закрывает основные дыры, через которые античит сканирует ваше железо.

Пожалуйста, авторизуйтесь для просмотра ссылки.


Как FiveM палит твой конфиг?

Античит тянет индентификаторы из трех основных векторов, и если ты их не подменил — летит мануалбан или автодетект по списку:

  1. Интерфейсы NVIDIA. Сканируются пути NvAdminDevice (объект устройства из nvlddmkm.sys), NvAPI (nvapi64.dll), NvMllDdk и nvml. По сути, им нужен твой GPU-ID, который выдает nvidia-smi.
  2. clipc.dll. Эта библиотека живет в System32 и отвечает за Client Licensing Platform. Она мешает кучу серийников в один уникальный фингерпринт системы. FiveM очень любит этот метод.
  3. NtQueryEaFile. Запрос расширенных атрибутов файлов NTFS. В метаданных часто зашиты серийники томов и дисков. Античит просто читает буфер и забирает данные напрямую.

Как реализован обход:

В случае с NVIDIA и clipc.dll — логика топорная, но рабочая: тупо блокируется доступ к DLL и объектам устройств. Когда FiveM пытается открыть хендл и получает отказ — данных нет, а значит, и банить не за что.

С NtQueryEaFile всё интереснее. Спуфер перехватывает вызов и через FakeEaBuffer подменяет данные в буфере псевдорандомными байтами через xorshift. Сид генерится на основе хеша хендла файла, чтобы данные были консистентными.

Код:
Expand Collapse Copy
void FakeEaBuffer(const PVOID buffer, const ULONG length, const ULONG64 seed)
{
    auto entry = static_cast<PFILE_FULL_EA_INFORMATION>(buffer);
    ULONG offset = 0;
    ULONG64 entrySeed = seed;
    while (offset < length)
    {
        if (entry->EaValueLength > 0)
        {
            const PCHAR valuePtr = entry->EaName + entry->EaNameLength + 1;
            for (USHORT i = 0; i < entry->EaValueLength; i++)
            {
                entrySeed ^= (entrySeed << 13);
                entrySeed ^= (entrySeed >> 7);
                entrySeed ^= (entrySeed << 17);
                valuePtr[i] = static_cast<UCHAR>(entrySeed & 0xFF);
            }
        }
        if (entry->NextEntryOffset == 0)
            break;
        offset += entry->NextEntryOffset;
        entry = reinterpret_cast<PFILE_FULL_EA_INFORMATION>(static_cast<PUCHAR>(buffer) + offset);
    }
}

— Драйверная часть базируется на хуках syscall.
— Для работы с NVIDIA блокируются либы в юзермоде и объекты в кернеле.
— В коде встречается xdefs.h — автор сам говорит, что там дикий костыль, но работает.

Юзать это как готовый продукт на мейне — затея сомнительная, а вот как фундамент для своего драйверного спуфера или изучения методов детекта FiveM — самое то. Исходники открыты, так что под допил подходят идеально.

Интересно, насколько долго этот метод с блокировкой доступа к DLL будет жить в реалиях современных обновлений античита.
 
Назад
Сверху Снизу