Справочная карта по необязательным API EyeAuras.FridaSdk: устройства Frida, сессии, скрипты, payload'ы Frida Gadget, адаптеры IProcess поверх Frida и нативные named-pipe readers процессов через CAgent.
FridaContainerExtensions делает сервисы Frida SDK доступными из script container.Load/Unload, RPC, потоками сообщений, поддержкой debugger и живой перезагрузкой скриптов.FridaAgentProcess — адаптер IProcess поверх уже существующей Frida session.WHProcess — экспериментальный backend IProcess для x64 GUI-процессов, который использует Windows hook transport для чтения/записи памяти с низкими правами и небольших операций удаленного управления.Для script mini-apps у EyeAuras.FridaSdk есть два обязательных шага настройки, если вы используете сервисы Frida SDK:
EyeAuras.FridaSdk.AddNewExtension<FridaContainerExtensions>();
var frida = GetService<IFridaExperimentalApi>();
Не считайте, что IFridaExperimentalApi или Frida binary helpers автоматически доступны из DI только потому, что пакет компилируется. Без FridaContainerExtensions получение сервиса может завершиться ошибкой или вернуть неполную конфигурацию хоста.
CAgentProcess.ByProcessId(...) — это статическая фабрика process-reader'ов из того же пакета, но если скрипт также получает сервисы Frida SDK, FridaContainerExtensions все равно нужно добавить заранее.
| Слой | Для чего использовать | Основные API |
|---|---|---|
| Frida session/script | Инструментация, хуки, свой JavaScript внутри целевого процесса | IFridaExperimentalApi, IFridaSession, IFridaScript, IFridaLiveScript |
| Frida Gadget | Подключение к внедренному или встроенному runtime Frida по локальному порту | FridaSdkBinaries, AttachByLocalPort |
| Process reader на базе Frida | Использовать Frida session как IProcess для memory/reverse-engineering инструментов |
FridaAgentProcess, FridaAgentRpcType, FridaMemoryBackend |
| CAgent process reader | Использовать нативную DLL + named-pipe RPC для операций с памятью и управлением процессом | CAgentProcess, ICAgentProcess, IProcessControlApi |
| WH process reader | Использовать GUI window thread и Windows hook transport для экспериментальных low-permission probes памяти/процесса и x64 manual mapping | WHProcess, WHProcess.ByWindowHandle, WHProcess.ExecuteCode, IProcessSupportsManualMapping |
IProcess.WHProcess.WHProcess, если цель соответствует требованиям WH control.IFridaExperimentalApi — управляемая точка входа для операций Frida.FridaExperimentalApi — реализация по умолчанию.GetDevices() — список доступных устройств Frida.GetLocalDevice() — получить локальное устройство Frida.GetLocalProcesses() — список локальных процессов, видимых Frida.GetRemoteDevice(...) — подключиться к удаленному серверу/устройству Frida.AttachByLocalProcessId(...) — прикрепить Frida session к локальному процессу.AttachByLocalProcessName(...) — найти и подключиться по имени процесса.AttachByLocalPort(...) — подключиться к Frida Gadget/server на локальном порту.IFridaDevice — абстракция устройства Frida.IFridaProcess — информация о процессе, видимом Frida.IFridaSession — сессия подключенного процесса, владеет скриптами, при Dispose отключается.IFridaScript — загруженный Frida JavaScript с Load, Unload, Post, PostWithData, Rpc, Rpc<T>, Eternalize, debugger controls и observables сообщений.IBasicFridaScript — упрощенная поверхность script API, используемая agent wrappers.IFridaLiveScript — script, привязанный к файлу или observable, который перезагружается при изменении содержимого.FridaContainerExtensions — необязательная DI/container-регистрация для SDK.FridaSdkBinaries предоставляет встроенные байты DLL Frida Gadget.GetLibraryForX86(...), GetLibraryForX64(...) — полные payload'ы Gadget.GetSlimLibraryForX86(...), GetSlimLibraryForX64(...) — облегченные payload'ы.AttachByLocalPort(...).FridaAgentProcess.BySession(...) адаптирует существующую IFridaSession к IProcess.FridaMemoryBackend выполняет чтение и запись через agent RPC.FridaAgentRpcType выбирает транспорт:
Default / Frida — встроенный RPC Frida.NamedPipeAsServer / NamedPipeAsClient — managed/TypeScript named-pipe bridge вокруг Frida agent script.NativeNamedPipeAsClient / NativeCompositeNamedPipeAsClient — client-режимы named pipe в нативном стиле.IProcess.EAF_RPC_C_{pid}.CAgentProcess.ByProcessId(processId, composite = false) подключается к этому endpoint.CAgentProcess.ByPipeName(pipeName, composite = false) подключается по явному имени pipe.CAgentProcess реализует ICAgentProcess, IProcess и операции управления процессом.IFridaExperimentalApi.GetCAgentLibraryForX64() и GetCAgentLibraryForX86() возвращают встроенные байты DLL CAgent.allocation/free, LoadLibrary, FreeLibrary, создание remote thread и дублирование handle'ов.EyeAuras.FridaSdk.CAgent — нативная C++ DLL, которая предоставляет named-pipe RPC.EyeAuras.FridaSdk.CAgent.Trampoline — вспомогательные нативные payload'ы для loader/trampoline/proxy.EyeAuras.FridaSdk.SimpleAgent — простой нативный agent/sample/test project.WHProcess.ByWindowHandle(hwnd) — основной способ подключения. Требует x64 GUI-цель с рабочим window thread.WHProcess.ByProcessId(pid) и WHProcess.ByThreadId(tid) — вспомогательные discovery wrappers, которые по возможности переходят к window handle.WHProcess реализует IProcess для чтения/записи памяти, модулей, потоков и перечисления регионов памяти.WHProcess.ExecuteCode(startAddress, parameter) синхронно вызывает уже подготовленный указатель на x64-код в выбранном GUI thread и передает parameter через RCX. Используйте только для очень маленьких процедур, которые сразу завершаются.IProcessControlApi в WHProcess поддерживает базовые примитивы управления: выделение памяти, изменение protection, освобождение и CreateThread, если WH transport может занять уже существующую RWX trampoline page.WHProcess реализует IProcessSupportsManualMapping для x64-целей. WH manual mapping использует IProcessControlApi.ExecuteCode(...) для синхронного выполнения mapper'а и по-прежнему требует тех же условий WH control, включая доступную существующую RWX trampoline page.FridaContainerExtensions.IFridaExperimentalApi.AttachByLocalProcessId, AttachByLocalProcessName или AttachByLocalPort.Dispose.FridaAgentProcess.BySession(session, rpcType).ProcessId и IsValid.IProcess в код памяти, ReProcess или reverse-engineering UI.AttachByLocalPort(port).FridaContainerExtensions, если скрипт получает IFridaExperimentalApi, чтобы взять байты DLL CAgent или другие сервисы SDK.CAgentProcess.ByProcessId(pid) или ByPipeName(...).ProcessId совпадает с ожидаемым процессом.IProcess/IProcessControlApi.WHProcess.ByWindowHandle(...), ByProcessId(...) или ByThreadId(...).WHProcess есть доступ к существующей RWX trampoline page.IFridaExperimentalApi.GetCAgentLibraryForX64().WHProcess.InjectDllViaManualMapping(bytes).CAgentProcess.ByProcessId(pid) и проверьте возвращаемые PID и имя процесса.AddNewExtension<FridaContainerExtensions>().FridaAgentProcess, если Frida session уже есть, а следующему API нужен IProcess.CAgentProcess предпочитайте явные вызовы фабрик вместо reflection — у фабрики есть необязательные параметры.CreateThread(...) — mapper'у нужно синхронное завершение ExecuteCode(...) до чтения return buffers и освобождения shellcode.IFridaExperimentalApi до добавления FridaContainerExtensions.EyeAuras.FridaSdkEyeAuras.FridaSdk.BinariesEyeAuras.FridaSdk.CAgentEyeAuras.FridaSdk.CAgent.TrampolineIFridaExperimentalApiFridaExperimentalApiIFridaDeviceIFridaProcessIFridaSessionIFridaScriptIBasicFridaScriptIFridaLiveScriptFridaAgentProcessIFridaAgentProcessFridaAgentRpcTypeFridaMemoryBackendFridaSessionExtensionsFridaSdkBinariesCAgentProcessICAgentProcessIProcessControlApiIProcessSupportsManualMappingWHProcessWHProcess.ExecuteCodeWHProcess.InjectDllViaManualMappingFridaAgentScriptViaNamedPipeFridaCompositeNamedPipeRpcFridaContainerExtensionsmemory/processes.mdreverse-engineering/reprocess.mdscripting/runtime.md