Справочная карта по основным средствам чтения процессов, доступу к памяти процесса, pointer chain, pattern scanning, PE-хелперам, модулям, code cave и выбору backend.
Читатели из опциональных пакетов вынесены в nuget/.
local, native local, kernel-driver или MPFS._EPROCESS list, если backend умеет читать kernel virtual memory.IProcess — верхнеуровневая абстракция целевого процесса.IProcessMemory — facade для памяти процесса.IMemoryAccessor — практический API для чтения и записи.IMemoryBackend — выполняет низкоуровневые операции.RemoteMemoryObject — небольшая базовая обёртка для объектов, которые представляют известный адрес внутри IMemory view.EyeAuras.Memory.Shared содержит контракты.EyeAuras.Memory содержит доступ к локальному процессу.EyeAuras.Memory.KD содержит доступ через kernel driver.EyeAuras.Memory.MPFS содержит доступ через MemProcFS / LeechCore / VMM.IProcess — IsValid, ProcessName, ProcessId, Memory,GetProcessModules(), GetThreads(), VirtualQuery(...),GetMemoryRegions().IProcessMemory — facade памяти процесса.IMemoryAccessor — типизированные чтение/запись, чтение pointers и pointer chain.IMemory — view памяти, часто ограниченное модулем через MemoryOfModule(...).RemoteMemoryObject — базовый класс для memory object-обёрток, привязанных к адресу.IMemoryBackend — контракт реализации backend.IProcessControlApi — allocation, protection, CreateThread,ExecuteCode, suspend/resume, APC там, где это поддерживается.IProcessSupportsManualMapping — opt-in marker для backend, которые умеют подготавливать и синхронно выполнять manual mapping code через IProcess и IProcessControlApi.LocalProcess — обычный локальный user-mode reader.NativeLocalProcess — native local backend с настройкой прав и handle.KDProcess — reader через kernel driver.LCProcess, ILCProcessBuilder — readers на базе MPFS/LeechCore/VMM.MemoryExtensionsForPatterns, BytePattern, StringPattern — signature scanning.MemoryExtensionsForCodeCaves, CodeCaveEntry — перечисление code cave в рамках модуля; по умолчанию сканируются readable executable sections, а последовательности 0x00, 0xCC и 0x90 считаются допустимым заполнением cave.MemoryExtensionsForImports, MemoryExtensionsForExports,ProcessPEExtensions — PE-хелперы.MemoryExtensionsForEprocess — backend-neutral helpers для чтения высокоуровневой информации о процессе и модулях из _EPROCESS, PEB и loader-list records через любой IMemoryReader, который умеет читать нужную virtual memory.MemoryExtensionsForTebPeb — backend-neutral helpers для чтения адреса PEB из TEB, загруженных модулей из PEB loader lists и параметров запуска процесса из RTL_USER_PROCESS_PARAMETERS через любой IMemoryReader, который умеет читать целевое user-mode address space. Также содержит хелперы для запроса TEB по живой локальной OS thread-to-TEB схеме в сценариях, где старт идёт от Windows thread id или handle.ReadProcessInformation — читает PID и image-name по адресу _EPROCESS, не раскрывая сырые kernel structures.ReadProcessModulesViaEprocess — читает загруженные модули через PEB, на который ссылается _EPROCESS, и возвращает ProcessModuleInformation.ReadTebAddressViaThreadHandle — запрашивает у живой локальной OS значение ThreadBasicInformation.TebBaseAddress по уже открытому thread handle.ReadTebAddressViaThreadId — открывает живой локальный Windows thread по id, получает его TEB address и закрывает временный handle.ReadPebAddressViaTeb — читает TEB.ProcessEnvironmentBlock по переданному адресу TEB и явно указанной архитектуре цели.ReadProcessModulesViaPeb — читает загруженные модули по переданному адресу PEB и явно указанной архитектуре цели.ReadProcessModulesViaTeb — объединяет чтение TEB-to-PEB и обход PEB loader-list.ReadProcessParametersViaPeb — читает command-line, image-path,ReadProcessParametersViaTeb — объединяет чтение TEB-to-PEB и чтение RTL_USER_PROCESS_PARAMETERS.ReadArchitectureViaEprocess — читает архитектуру процесса из полей kernel structure; это лучший путь, если backend умеет читать _EPROCESS.WoW64Process.ReadArchitectureViaTeb — читает архитектуру процесса через self pointer в TEB; это предпочтительный user-mode путь, когда адрес TEB уже известен.ReadArchitectureViaPeb — читает архитектуру через PEB.ImageBaseAddress и тип machine у PE в памяти; используйте этот путь, когда известен только адрес PEB.Подключение по выбранному окну:
IWindowHandle;ProcessId;IsValid и ProcessId.Чтение pointer chain:
IMemoryAccessor;ReadPointerChain или ReadPointerChain32;Сканирование сигнатуры:
BytePattern или StringPattern;Поиск code cave:
MemoryOfModule(...);EnumerateCodeCaves(minBytes, alignment) для executable caves;sectionFilter и acceptedFillBytes, если cave нужен для размещения данных или допустим только конкретный байт заполнения;Read<T> и Write<T>; запись byte-span оставляйте для machine-code payload или закодированных строк.Чтение entity list:
IMemory;null или устаревшие pointers.Перечисление процессов из kernel memory:
KDProcess или reader на базе VMM/MPFS. Источником памяти может быть другая машина, dump или live VMM acquisition._EPROCESS из backend/driver/acquisition;ReadProcessesViaEprocess(eprocessAddress);ReadProcessInformation(eprocessAddress) для snapshot одного процесса;ReadProcessModulesViaEprocess(eprocessAddress) для данных о модулях, если backend также умеет читать user-mode address space целевого процесса;ReadArchitectureViaEprocess(eprocessAddress), если архитектуру нужно определить через _EPROCESS.WoW64Process;_EPROCESS, PEB и loader-list.Перечисление модулей из user-mode memory без OS snapshot API:
ReadTebAddressViaThreadId; если подходящий thread handle уже открыт, используйте ReadTebAddressViaThreadHandle;ReadPebAddressViaTeb(tebAddress, architecture), если старт идёт от TEB;ReadArchitectureViaTeb(tebAddress), если архитектура неизвестна, а адрес TEB считается надёжным;ReadArchitectureViaPeb(pebAddress), если архитектура неизвестна и надёжен только адрес PEB;ReadProcessModulesViaPeb(pebAddress, architecture) или ReadProcessModulesViaTeb(tebAddress, architecture) для получения модулей;ReadProcessParametersViaPeb(pebAddress, architecture) или ReadProcessParametersViaTeb(tebAddress, architecture) для получения startup metadata, например image path, command line и current directory;Manual map DLL в совместимую цель:
IProcess, который также реализует IProcessSupportsManualMapping;LocalProcess и NativeLocalProcess;WHProcess поддерживает x64 GUI targets, если доступны его WH control prerequisites;InjectDllViaManualMapping(...); mapper опирается на IProcessControlApi.ExecuteCode(...), чтобы дождаться синхронного завершения перед чтением return buffers mapper и освобождением shellcode;CreateThread(...) как примитив ожидания завершения; это асинхронная fire-and-forget surface для запуска thread.IProcess как основной контракт цели.LocalProcess для обычного локального доступа.NativeLocalProcess, если нужна тонкая настройка native handle и permission.KDProcess только когда действительно нужен доступ через driver.LCProcess / ILCProcessBuilder для acquisition/VMM-сценариев.[field: FieldOffset(...)], маршрутизируйте доступ через небольшой типизированный интерфейс и держите типизированные static offsets для арифметики list/link pointers.ReadTebAddressViaThreadId или ReadTebAddressViaThreadHandle, а затем проверяйте результат через ReadArchitectureViaTeb.IMemoryAccessor.Read<T> и IMemoryAccessor.Write<T>. Byte arrays/spans используйте для реальных byte payload, например machine code, строк, file/protocol layouts или bulk buffers.MemoryOfModule(...).EnumerateCodeCaves(...).CreateThread(...); используйте IProcessControlApi.ExecuteCode(...) или backend с IProcessSupportsManualMapping.ReadProcessesViaEprocess на обычной user-mode памяти процесса; он ожидает kernel virtual addresses и подходящие layout Windows kernel._EPROCESS, PEB или loader-list из public API. Общие helpers специально возвращают ProcessInformation, ProcessModuleInformation и Architecture; если нужен сырой layout, низкоуровневые readers могут определить собственные struct.Marshal.OffsetOf<T>(nameof(...)), имена backing-field у auto-properties или строки с именами членов для pointer math в obfuscated assemblies; храните нужные offsets как типизированные static members рядом с соответствующими объявлениями [field: FieldOffset(...)].BinaryPrimitives, MemoryMarshal или ручную упаковку байтов как тонкую обёртку над обычными scalar reads/writes в памяти процесса. Оставляйте эти API для явной работы с byte format.IProcess, IProcessMemory, IMemoryAccessor, IMemoryBackend,IProcessControlApi, IProcessControlApi.ExecuteCode,IProcessSupportsManualMapping, LocalProcess, NativeLocalProcess, KDProcess,LCProcess, ILCProcessBuilder, ReadPointerChain, VirtualQuery,BytePattern, StringPattern, MemoryExtensionsForPatterns,ProcessPEExtensions, MemoryExtensionsForEprocess,MemoryExtensionsForTebPeb, ReadPebAddressViaTeb,ReadProcessModulesViaPeb, ReadProcessModulesViaTeb,ReadProcessParametersViaPeb, ReadProcessParametersViaTeb,ReadTebAddressViaThreadHandle, ReadTebAddressViaThreadId,ReadProcessesViaEprocess, ReadProcessInformation,ReadProcessModulesViaEprocess, ReadArchitectureViaEprocess,ReadArchitectureViaTeb, ReadArchitectureViaPeb,MemoryExtensionsForCodeCaves, EnumerateCodeCaves, CodeCaveEntry,ModuleSectionEntry, MemoryOfModule, RemoteMemoryObject, ReadString.pattern-scanning.mdwindows-subsystems/window-handles.mdosd/selection.mdreverse-engineering/reprocess.mdrecipes/bot-memory-entity-list-reader.md