DMA
Интеграция с DMA/FPGA-картами
Интеграция DMA
Больше информации, примеров и скриптов — здесь
DMA (Direct Memory Access) — это технология, которая позволяет читать и записывать данные напрямую в память компьютера, в обход как CPU, так и операционной системы. Благодаря этому можно получать доступ к памяти любого процесса, даже если он защищён античитом или такими механизмами, как:
- Kernel Patch Protection (KPP),
- Hypervisor Protected Code Integrity (HVCI),
- user-mode hooks,
- Secure Boot / VBS / Credential Guard и т. д.
В EyeAuras используется LeechCore — open-source библиотека от Ulf Frisk, которую широко считают стандартом для работы с DMA-устройствами на базе PCIe/Thunderbolt/FPGA. Она используется в популярных проектах вроде PCILeech, а также в отладчиках, forensic-инструментах, системах автоматизации и утилитах для низкоуровневого анализа памяти.
Что это даёт?
С DMA вы получаете:
- Полный доступ к системной памяти, включая ядро и защищённые процессы — как на чтение, так и на запись.
- Возможность анализировать игры, защищённые античитом, без обнаружения.
- Полноценную поддержку скриптов на C# поверх аппаратного доступа — вы работаете с памятью почти так же, как через
ReadProcessMemory, но фактически всё идёт через физическую шину PCIe.
И всё это доступно через обычный scripting в EyeAuras — без необходимости изучать HDL, внутренности PCIe, виртуализацию или писать собственные драйверы.
Схема #1 — игра и бот на разных ПК
Это основной и самый безопасный вариант. Игра и бот запускаются на разных компьютерах, соединённых через DMA-устройство.
- ПК, на котором запущена игра, остаётся нетронутым — на него не устанавливается никакое ПО, нет подозрительных процессов или драйверов.
- DMA-устройство (например, FPGA-плата) маскируется под SSD, Wi‑Fi-адаптер или другое PCIe-устройство.
- На втором ПК запускается EyeAuras, который взаимодействует с игровой машиной полностью извне.
Такую схему очень сложно обнаружить, поэтому её обычно используют в security research и при разработке ботов для сред с высоким уровнем защиты.
Схема #2 — игра и бот на одном ПК
Этот вариант менее безопасен:
- Всё работает на одной машине.
- Античит может обнаружить EyeAuras, DMA-устройство или драйвер.
Однако на практике DMA часто настолько далека от обычной поверхности детекта для игры и античита, что это просто никто не проверяет. В таких случаях этот вариант вполне рабочий и при этом заметно проще в настройке.
Пример использования
С точки зрения scripting ничего не меняется. Используется тот же интерфейс IMemory:
using EyeAuras.Memory; //required for Memory-related operations
using EyeAuras.Memory.MPFS; //required for DMA
var processList = LCProcess.FPGA().GetProcesses(); //get list of processes by reading it via DMA device
Log.Info($"Processes: \n\t{processList.DumpToTable()}"); // dump process list to the log
А вот так можно открыть процесс и прочитать значение из памяти через DMA-устройство:
using EyeAuras.Memory; //required for Memory-related operations
using EyeAuras.Memory.MPFS; //required for DMA
var process = LCProcess.FPGA().ByProcessName("game.exe");
var playerHp = process.Memory.Read<int>(process.Memory.BaseAddress + 0x1C4);
if (playerHp < 30)
{
Log.Warn($"Low HP: {playerHp}");
}
CoreMemтеперь может указывать на memory interface, работающий через DMA.playerBaseможет быть как виртуальным, так и физическим адресом — вам не нужно об этом беспокоиться.- EyeAuras автоматически берёт на себя трансляцию адресов, повторы запросов, paging и управление memory backend.
Требования к оборудованию
Для использования DMA вам понадобится FPGA-плата, совместимая с LeechCore.
Хорошая новость: по состоянию на 2025 год 99% распространённых FPGA-плат совместимы. Достаточно прошить подходящую firmware и подключить устройство.
Популярные варианты:
- Screamer M.2 / Thunderbolt (популярный вариант plug-and-play)
- Xilinx SP605 / KC705 / AC701
- Lecroy bridges, FT601 devices, STM32 custom builds и т. д.
Техническая реализация в EyeAuras
Интеграция DMA построена на backend-слое IMemoryBackend, который поддерживает:
- Чтение и запись через физические и виртуальные адреса
- Поддержку как x64-, так и x86-процессов
- Автоматическую переинициализацию и восстановление после ошибок
- Горячее переключение между DMA и
ReadProcessMemoryво время выполнения — удобно для отладки и fallback-сценариев