Files
reverse-engineering-anything/docs/readme/README_bg.md
T
fd39977c32 docs(desktop): set up a desktop build host from a fresh Linux machine (#9184)
* fix(desktop): keep a program word and a directory's neighbor

The program after env stays the program even when a captured file sits in a
folder of that name. A selected directory is not a database, so a neighboring
file keeps the parent folder's spelling.

* fix(desktop): record whether a selected path is a directory

Capture stores the walked path's kind. A neighboring file of a selected
directory keeps the parent folder's spelling even when that directory never
changes and its children are not content roots.

* fix(desktop): mark containing paths without a pairwise scan

A recorded path marks its known ancestors as directories in one walk up
the path, instead of comparing every recorded path with every other.

* fix(desktop): keep a selected folder that is named like a database log

A folder the caller selected stays a selected root when its name ends in
-journal or -wal. A generated log beside a database file still does not.

* fix(desktop): refuse a build command that exceeds the argument vector

Splitting one argument still leaves the whole command under Linux's E2BIG
limit. A request past that budget is refused before the process starts.

* fix(desktop): remap a captured path in an env assignment

The program word stays the program. A NAME=value assignment keeps its name
and follows a captured path value when that path's spelling moves.

* fix(desktop): keep oversized text out of draft guards

A value or line longer than the draft's text bound is not copied into a
guard, so one large frame cannot fill the task by itself.

* docs(desktop): correct dconf and check-preview guidance

A dconf version kept without its bytes is unreadable, not an empty key
list. A values preview is copied into a check only when it is an uncut scalar.

* fix(desktop): keep an empty env value empty

An empty assignment is not a path. Resolving it named the working directory
and rewrote the value when that directory's spelling moved.

* fix(desktop): keep a run's font on the run, not the frame's text

A formatting attribute such as Scribus FONT is not the document's words.
Joining it across runs made a frame-wide text check of ItalicBold that
failed when a run was split. The font stays a value check on its own run.

* fix(desktop): do not pair JSON records by a selector-shaped field

A field named @record_id matched the id suffix and became [@record_id=one],
which reads an XML attribute. Records paired while their pointers matched
nothing. Names that start with @ or > are not id fields.

* fix(desktop): count a save-numbered id once when pairing members

xml:id and draw:id values such as id123456 were both generated and
numbered, so the same selector was counted twice and refused. A text
edit of two elements keyed only by those ids now keeps its check.

* fix(desktop): preserve selected state directory aliases

* docs(desktop): explain tool and skill refresh prerequisites

* fix(desktop): align nested state selections with aliases

* fix(desktop): check build runtime export capability

* fix(desktop): provide complete runtime repack command

* fix(desktop): retain runtime probe failures

* test(desktop): identify capture independently of schema preflight

* fix(desktop): preserve document URLs and value formats

* fix(desktop): bound added checks and omit noisy text guards

* fix(desktop): exclude unseeded locks from task checks

* fix(desktop): preserve draft bounds and launch URLs

* fix(desktop): render draft values using their source format

* fix(desktop): preserve launch URLs and JSON draft values

* fix(desktop): recognize captured file URL documents

* fix(desktop): render captured file URLs for runtime home

* fix(desktop): distinguish phone numbers from save metadata

* fix(desktop): preserve launch URLs and user text

* fix(desktop): preserve captured URLs and user text

* fix(desktop): preserve local file URL authority

* fix(desktop): preserve local file URL authority

* fix(desktop): preserve local file URL authority

* fix(desktop): render captured file URLs at launch

* fix(desktop): classify numeric timestamps using field context

* fix(desktop): classify numeric timestamps using field context

* fix(desktop): classify numeric timestamps using field context

* fix(desktop): retain context for generated draft values

* fix(desktop): retain context for generated draft values

* fix(desktop): retain context for generated draft values

* test(desktop): cover generated IDs in text guards

* test(desktop): cover generated IDs in text guards

* test(desktop): cover generated IDs in text guards

* fix(desktop): isolate launcher URL encoding

* fix(desktop): isolate launcher URL encoding

* fix(desktop): isolate launcher URL encoding

* fix(desktop): isolate launcher URL encoding

* fix(desktop): retain clean text in noisy record fields

* fix(desktop): classify added line values in one pass

* fix(desktop): apply XML quote rules to text drafts

* fix(desktop): distinguish XML attributes from quoted text

* fix(desktop): preserve parsed XML line context

* fix(desktop): retain partial XML syntax facts

* fix(desktop): recognize markdown autolinks in drafts

* fix(desktop): reuse export exclusions in task drafts

* docs(desktop): clarify gzip scrub limits

* style(desktop): format the noisy-record draft files with the pinned oxfmt

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* test(desktop): move launch execution to boundary suite

* fix(desktop): redact build schema failure output

* refactor(desktop): normalize schema failure once

* fix(desktop): omit unsafe schema parser snippets

* fix(desktop): preserve draft change and selected path evidence

* test(desktop): group retained dconf note regressions

* fix(desktop): respect archive entry format in draft checks

* test(desktop): separate unowned-file draft note cases

* fix(desktop): preserve explicitly selected journal documents

* fix(xml): avoid scanning selected ancestors per tag

* fix(desktop): exclude covered text runs from draft counts

* fix: preserve text when drafting desktop checks

* fix: restore nested desktop state aliases

* refactor: share UUID recognition across draft checks

* fix: retain multiline XML attribute context

* fix: retain relationship identifiers in task drafts

* docs: clarify desktop draft identifier handling

* test(desktop): type formatting run cases as pairs

* test(desktop): separate markup boundary regression group

* test(desktop): remove duplicate seed filename case

* docs(desktop): clarify task checks before scratch export

* fix(desktop): respell selected paths in file URLs

* test(desktop): group captured document spelling cases

* fix(desktop): bound draft preview serialization

* fix(desktop): restore selected state aliases

* fix(desktop): respect entry format in draft noise

* test(desktop): match exported alias evidence at its JSON boundary

* fix(desktop): retain app state logs in exported seeds

* fix: align desktop numeric seed comparisons

* test(desktop): keep one draft exclusion fixture import

* test(desktop): retain log eligibility across draft test groups

* style: fix desktop launch test formatting

* style: format native command path schema

* fix(desktop): map selected external launch paths

* style(desktop): format seed document regressions

* test(desktop): group launch URL regressions

* fix(desktop): omit redundant nested state aliases

* fix(desktop): compare added free text as a whole

* fix(desktop): check recompressed seeds as shipped

* docs(desktop): clarify recovered seed format

* test(desktop): group shipped gzip seed checks

* fix: retain quoted identifier text in task drafts

* fix: recognize Unicode XML in desktop state readers

* fix(desktop): bound nested draft checks

* fix(desktop): explain missing arrays in truncated views

* fix(desktop): find XML type references in archives

* test(desktop): remove duplicated capture assertions

* fix(desktop): retain nested omitted text boundaries

* style(desktop): format draft value imports

* test(desktop): group model and draft value checks

* fix(desktop): map captured launch paths once

* refactor: remove unused whole-text guard state

* refactor: stop passing unused text children

* test: align free-text checks with whole-note policy

* fix: validate recompressed desktop archive seeds

* style(desktop): format archive seed regression

* fix(desktop): retain placed-item sibling guards

* fix(desktop): redact runtime schema errors

* fix(desktop): normalize captured file URLs

* fix(desktop): report seeded files by capture path

* fix(desktop): retain startup readiness failure stage

* fix(desktop): retain JSON date checks

* fix(desktop): preserve archive formatting checks

* fix(desktop): preserve explicitly selected journal files

* fix(desktop): report build command transport limits

* docs(desktop): clarify unreadable dconf versions

* test(desktop): remove duplicate history regression

* fix(desktop): align XML names with exported reader

* fix(desktop): scrub XML independently of reader compatibility

* style(desktop): format review fixes

* style(desktop): format capture review fixes

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: morluto <76467478+morluto@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 22:59:45 +08:00

524 lines
52 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<div align="center">
[English](../../README.md) · [简体中文](README_zh.md) · [繁體中文](README_zh-TW.md) · [日本語](README_ja.md) · [한국어](README_ko.md) · [Türkçe](README_tr.md) · [Русский](README_ru.md) · [Tiếng Việt](README_vi.md) · [ไทย](README_th.md) · [Deutsch](README_de.md) · [Español](README_es.md) · [Français](README_fr.md) · [Українська](README_uk.md) · [Polski](README_pl.md) · [Português (Brasil)](README_pt-BR.md) · [العربية](README_ar.md) · [فارسی](README_fa.md) · [Bahasa Indonesia](README_id.md) · [Italiano](README_it.md)
· [Ελληνικά](README_el.md) · [മലയാളം](README_ml.md) · [Roman Urdu](README_ur-Latn.md) · [Română](README_ro.md) · **Български**
# REA: Reverse Engineer Anything
### Един MCP сървър за обратно инженерство на бинарни файлове, приложения и поведение по време на изпълнение.
**Харесва ви функция в някое приложение? Разберете как работи, чак до ниво бинарен код.**
[![Версия в npm](https://img.shields.io/npm/v/rea-agents?style=flat-square&color=cb3837)](https://www.npmjs.com/package/rea-agents)
[![Каталог с MCP инструменти](https://img.shields.io/badge/MCP-tool_catalog-5c4ee5?style=flat-square)](../reference/mcp-contracts.md#generated-catalog)
[![Изисквания за Node.js](https://img.shields.io/badge/Node.js-requirements-339933?style=flat-square&logo=nodedotjs&logoColor=white)](#current-status)
[![skills.sh](https://skills.sh/b/morluto/rea?style=flat-square)](https://skills.sh/morluto/rea/reverse-engineer-anything)
[![Лиценз MIT](https://img.shields.io/badge/license-MIT-f4c430?style=flat-square)](../../LICENSE)
[![Discord](https://img.shields.io/discord/1556595354999332884?logo=discord&logoColor=white&label=Discord&color=5865F2)](https://discord.gg/GkcryMnJDM)
<a href="https://trendshift.io/repositories/82054?utm_source=repository-badge&amp;utm_medium=badge&amp;utm_campaign=badge-repository-82054" target="_blank" rel="noopener noreferrer"><img src="https://trendshift.io/api/badge/repositories/82054" alt="morluto%2Frea | Trendshift" width="250" height="55"/></a>
**[Уебсайт](https://rea.tools/) · [Ръководства](https://rea.tools/guides/) · [Примери](https://rea.tools/showcase/)**
<a href="https://discord.com/invite/GkcryMnJDM"><img alt="Присъединете се към общността на REA в Discord" src="https://img.shields.io/badge/Join%20us%20on%20Discord-5865F2?style=for-the-badge&logo=discord&logoColor=white" height="40"></a>
[Бърз старт](#бърз-старт) · [Как работи REA](#как-работи-rea) · [Какво можете да анализирате](#какво-можете-да-анализирате) · [Примери](#примери) · [Създаване на RL среди](#build-rl-environments) · [Често задавани въпроси](#често-задавани-въпроси) · [Документация](#документация)
<code>npx rea-agents setup</code>
</div>
> [!IMPORTANT]
> Изтегляйте REA от [morluto/rea](https://github.com/morluto/rea),
> [rea.tools](https://rea.tools/) или [npm пакета rea-agents](https://www.npmjs.com/package/rea-agents).
> Следвайте връзките за инсталиране и издания от тези официални източници. Подобно
> име на хранилище или копиран README не доказва, че дадено изтегляне е официално.
<div align="center">
<br />
<img src="../assets/rea-hopper-analysis.png" alt="REA стартира своя мост за анализ в Hopper, докато изследва нативен бинарен файл" width="1200" />
<br /><br />
<table aria-label="Общността на REA">
<tr>
<td align="center" width="360">
<a href="https://discord.gg/GkcryMnJDM">
<img src="../assets/discord.svg" height="42" alt="Discord" /><br />
<strong>Присъединете се към общността за обратно инженерство</strong>
</a><br />
<sub>Discord · Въпроси и отговори · Покажете какво сте направили</sub>
</td>
</tr>
</table>
<br />
</div>
---
Видели сте функция в приложение и искате същата във вашия продукт? Помолете агента си да я проучи с REA. Той може да изследва приложението без изходния му код, да обясни как работи функцията, да покаже доказателствата и да изгради подобна версия за вашия проект.
REA свързва агента ви с инструменти за изследване на нативни бинарни файлове, JavaScript и Electron приложения, .NET асемблита и уебсайтове. Същите инструменти можете да използвате и от терминала. Анализът се извършва локално, а резултатите включват доказателствата и ограниченията зад всеки извод.
Настройката регистрира REA в агента ви и инсталира съответните инструкции за работния процес. Нативният анализ може да използва вече инсталиран Hopper, Ghidra, IDA или Kuna; по желание настройката може да инсталира Hopper след ваше одобрение. Статичният анализ на JavaScript не изисква двигател за нативен анализ.
> **[Посетете уебсайта на REA](https://rea.tools/)** за инструкции за настройка, илюстрирани ръководства и реални казуси.
## Бърз старт
В Linux стартирането на Ghidra, JADX и инструментите за фърмуер, както и
статичният анализ на JavaScript/Electron, изискват съвместима с procps команда
`ps` в `PATH` на REA за проверките кой процес на кого принадлежи. Стъпките за
отстраняване на проблема са в `docs/getting-started/installation.md`, в раздела
„Linux owned-process prerequisite“.
### Настройте агента си
След като имате инсталирани Node.js и npm, изпълнете:
```bash
npx rea-agents setup
```
Изберете агентите си, прегледайте предложените промени и ги одобрете. Настройката
добавя MCP сървъра на REA и съответните инструкции за работния процес, като прави
резервни копия на съществуващата конфигурация. След това рестартирайте агента.
Настройката записва директно избраната среда за изпълнение и входния скрипт на
REA. Ако сте получили REA чрез инструмент за изпълнение на пакети (package
runner), не изтривайте записа му в кеша. Изтегляйте пакета от доверена
директория извън целевия проект. Подробности за инсталирането и отстраняването на
проблеми има в ръководството за настройка по-долу.
Настройката поддържа Claude Code, Codex, Cursor, Gemini CLI, Grok Build и
[други агенти](../getting-started/installation.md#supported-agents). Вижте
[инсталиране и настройка](../getting-started/installation.md) за конфигуриране на
доставчици на анализ, ръчна регистрация на MCP и инсталиране на плъгина за
Claude Code/Codex.
По подразбиране MCP използва компактни входни схеми, за да заема по-малко от
контекста. Задайте `REA_MCP_INPUT_SCHEMA_PROFILE=full` в MCP регистрацията си,
когато са ви нужни пълните описания на полетата и подробностите за вложената
валидация. И двата профила запазват пълния набор от инструменти и каноничната
валидация на сървъра. Вижте „Compact input schema profile“ в ръководството за MCP
договорите.
По подразбиране се обявяват пълните изходни схеми. Ако клиентът ви ограничава
размера на цялата рамка `tools/list`, задайте
`REA_MCP_OUTPUT_SCHEMA_PROFILE=compact`, за да ограничите всяка обявена изходна
схема, или `off`, за да пропуснете изходните схеми изцяло. И двете настройки
запазват каноничната валидация от страна на сървъра и пълните структурирани
резултати. Вижте „Output schemas“ в ръководството за MCP договорите.
### Попитайте агента си
```text
Разбери как работи търсенето в приложението Notes, покажи ми доказателствата и
изгради подобна функция за моя проект.
```
Заменете Notes с целевото си приложение и функцията, която искате да разберете.
### Използвайте терминала
Изследвайте директорията на разархивирано JavaScript/Electron приложение или ASAR
архив:
```bash
npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json
```
Резултатът включва модули, импорти, границите на Electron и доказателствата за
тях. Заменете пътя с вашата цел, например `"D:/apps/example"` в Windows.
За да инсталирате командата `rea` за редовна употреба:
```bash
npm install --global rea-agents
rea --help
```
За нативен анализ първо конфигурирайте доставчик на анализ. Вижте
[ръководството за CLI и Evidence](../getting-started/cli.md) за нативните
команди, избора на доставчик, моментните снимки (snapshots) и скриптирането.
### Обновяване на REA
REA се променя бързо и новите издания често съдържат поправки на грешки.
Поддържайте инсталацията си актуална.
За CLI, инсталиран с `npm install --global` или `bun add --global`:
```bash
rea update
```
`rea --update` е псевдоним на същия проверен процес и приема същите глобални
флагове за изхода. Използвайте `rea update`, когато го комбинирате с други опции
на командата.
Командите за обновяване запазват общо най-много 4 MiB от stdout и stderr. Твърде
големите отговори с метаданни се отхвърлят след приключване на командата;
подробните (verbose) инсталации продължават с ограничена диагностика. Изходът за
напредъка, предназначен за хора, се съобразява с обратното налягане
(backpressure) на терминала и изчаква изпратените записи да завършат.
Глобалните обновявания чрез Bun изискват Bun 1.2.17 или по-нова версия. При
по-стара версия първо обновете Bun ръчно и след това изпълнете `rea update`.
За да опресните регистрациите в агентите и умението (skill), изпълнете командата
за настройка, която обновяването отпечатва.
Ако използвате `npx`, обновете настройката на агента си с:
```bash
npx rea-agents@latest setup
```
Прегледайте промените от настройката и рестартирайте агента. За еднократни CLI
команди използвайте `npx rea-agents@latest`, последвано от командата. С Bun
използвайте `bunx rea-agents@latest` вместо `npx rea-agents@latest`.
## Как работи REA
Агентът ви извиква REA чрез MCP, за да изследва целта и да проследи съответния
код. REA връща констатации заедно с доказателствата за тях. Агентът ги използва,
за да задава допълнителни въпроси, да обяснява поведението или да напише и тества
реализация. CLI командите използват същите работни процеси.
![Процес на изследване с REA: агентът ви пита за локална цел, REA я изследва и проследява с инструменти за анализ, а агентът използва върнатия код, препратките и неизвестните, за да обясни, реализира и тества.](../../website/public/assets/figures/rea-investigation-flow.svg)
[Отворете фигурата в пълен размер](../../website/public/assets/figures/rea-investigation-flow.svg).
<a id="current-status"></a>
## Какво можете да анализирате
REA изисква Node.js 22.x (>=22.23.4), 24.x (>=24.22.1) или 26.12.1+, както и
npm. Допълнителните инструменти и поддържаните операционни системи зависят от
целта:
| Цел | Какво връща REA | Изисквания и ръководство |
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Инсталирани настолни приложения | Кандидати за среда за изпълнение, поддържащи файлове, маркери на компоненти и следващи проверки | Вградена ограничена проверка на директории и заглавни части; [настолни приложения](../desktop-applications.md) |
| Нативни бинарни файлове | Псевдокод, асемблер, низове, символи, извиквания и препратки | Hopper, Ghidra, IDA или Kuna; [нативен анализ](../guides/native/native-investigation.md) |
| Структура на ELF (офлайн) | Секции, сегменти, оригинални символи/релокации и кандидати за статични защитни механизми | Предоставен от вас pwntools на Linux x64; [диагностика на бинарни файлове](../guides/native/binary-diagnostics.md) |
| Go бинарни файлове | Вградена версия на компилатора, модули, замени и настройки на компилацията | Вградена статична проверка на ELF/PE/thin Mach-O; не изисква инсталиран Go |
| GPU кодови обекти | CUDA/HIP цели, избрани параметри и ресурси на ядрата, запазен PTX текст | Вградена статична проверка на ELF/PE/fatbin/CUBIN/PTX; [GPU кодови обекти](../gpu-code-objects.md) |
| Файлове на модели | Метаданни на GGUF / safetensors, декларации на тензори и изчислени общи стойности | Вградена проверка на заглавните части; по желание хеш на целия файл; [файлове на модели](../model-artifacts.md) |
| IL2CPP метаданни | Образи на асемблита от Unity global-metadata.dat, имена на типове и методи и диапазони на индекси | Вградено статично декодиране на версии 24, 27, 29, 31 и 39; не изисква Unity |
| Godot PCK | Опис и извличане на архива, оригинални данни от заглавната част и директорията и идентичност на избрано съдържание | Вградена статична поддръжка на формати 2, 3 и 4; не изисква Godot |
| Rust бинарни файлове | Вградени от cargo-auditable имена на crate-ове, версии, източници и връзки между зависимостите | Вградена статична проверка на ELF/PE/thin Mach-O; [Rust бинарни файлове](../rust-binaries.md) |
| PE сертификати | Записи Authenticode WIN_CERTIFICATE и полета за самоличност на подписващия от PKCS#7/X.509 | Вградена статична проверка на PE; [PE сертификати](../pe-certificates.md) |
| PE импорти | Имена на импортирани и отложено зареждани (delay-load) DLL библиотеки, ординали, IAT RVA адреси и pefile хеш на импортите | Вградена статична проверка на PE; [PE импорти](../pe-imports.md) |
| Windows преки пътища | Цел, аргументи, работна директория и данни от Shell Link | Вградена статична проверка на LNK; [Windows преки пътища](../guides/native/windows-shortcut.md) |
| ELF бележки | Собственици и типове на PT_NOTE/SHT_NOTE, полета GNU build-id и ABI-tag | Вградена статична проверка на ELF; [ELF бележки](../elf-notes.md) |
| Защита на бинарни файлове | PIE, NX, RELRO, CFG и свързаните с тях флагове в заглавните части на ELF, PE и Mach-O | Вградена статична проверка на заглавните части; [защита на бинарни файлове](../binary-hardening.md) |
| Сривове на Apple (IPS) | Метаданни от .ips, нишки, образи, регистри и документирани класове сривове | Вградена статична проверка на JSON; [Apple IPS](../apple-ips.md) |
| Модули на ядрото на Linux | Ключове от .modinfo, CRC стойности от __versions, наличие на this_module и подпис в края на файла | Вградена статична проверка на ELF; [модули на ядрото](../kernel-modules.md) |
| Erlang BEAM | IFF блокове (chunks), атоми, експорти, импорти, ламбди и заглавната част Code | Вградена статична проверка на BEAM; [Erlang BEAM](../erlang-beam.md) |
| WASM артефакти | Валидация, секции, точни WAT форми на импортите/експортите и декодиран WAT | Предоставен от вас WABT 1.0.42; `inspect_wasm_artifact` |
| EVM байткод | Селектори на функции, отмествания в байтове, изведени аргументи и променливост (mutability) | Локален raw/hex носител на Linux x64; [ръководство за офлайн EVM](../guides/evm/evm-bytecode.md) |
| SQLite бази данни | Таблици, колони, индекси, изгледи, тригери и избрани редове от обикновени таблици | Локална моментна снимка на базата/WAL; Node.js 24.x >=24.15 или 26+ с нативни ограничения на SQLite |
| Записани сривове в Linux | Сурови бележки, регистри/сигнали на всяка записана нишка и по желание кандидати за съпоставяне с файлове в паметта | Предоставен от вас pwntools на Linux x64; по желание GDB/pwndbg; [записани сривове](../guides/native/recorded-crashes.md) |
| JavaScript / Electron | Модули, импорти, source maps, маршрути, IPC и връзки с нативни добавки | Node.js и npm; Linux: съвместима с procps команда `ps`; [анализ на приложения](../guides/javascript/javascript-application-workflows.md) |
| Уебсайтове | Структура на страниците, скриптове, мрежови наблюдения и заявени екранни снимки | Браузър от семейството на Chrome; [анализ в браузъра](../guides/web/browser-observation.md) |
| Запазени мрежови записи | Заявки, отговори, открити полезни данни (payloads) и местоположения в изходния код | HAR или Fiddler Everywhere SAZ; mitmdump на Linux за нативен mitmproxy; [ръководство за мрежови записи](../guides/web/web-network-captures.md) |
| .NET асемблита | Метаданни, CIL инструкции, декларирани нативни зависимости и сравнения между компилации | Няма (само статичен анализ); [ръководство за управляван код](../guides/managed/managed-code-analysis.md) |
| Android APK файлове | Декларации в манифеста, класове, декомпилирани методи и препратки | JADX без графичен интерфейс и пълен JDK на Linux/macOS/Windows x64; [ръководство за Android](../guides/android/android-analysis.md) |
| Подписи на APK | Подписващи v1/v2/v3/v3.1, отпечатъци на сертификати, ротация на ключове и вътрешна съгласуваност на хешовете | Няма (само статичен анализ); `inspect_apk_signature` |
| Android устройства | Устройства, пакети, процеси, логове, дъмпове, екранни снимки и прехвърляне на APK/файлове | Предоставен от вас adb (емулатор или физическо устройство); [ръководство за ADB](../guides/android/adb-device-analysis.md) |
| JEB проекти | Единици на проекта от двигателя на JEB, хешове на артефакти и псевдокод на типове/методи | Стартиран от вас JEB клиент, който обслужва MCP и е избран чрез REA_JEB_MCP_URL; [ръководство за JEB](../providers/jeb-analysis.md) |
| Android ресурси | Декодиран манифест, таблици с низове, локали и данни за версията | Предоставен от вас стартер за Apktool; [ръководство за ресурси](../guides/android/apktool-resource-analysis.md) |
| Flutter приложения | Хеш на Dart snapshot, хешове на библиотеките за всяко ABI и произход на компилацията на двигателя | Няма (статичен анализ на APK); [ръководство за Flutter](../guides/android/flutter-analysis.md) |
| Фърмуер | Региони, резултати от извличането и предаване към нативен анализ | Binwalk / Unblob на Linux; [ръководство за фърмуер](../guides/firmware/firmware-analysis.md) |
| Записани пакети | Избрани полета, повтарящи се стойности, филтри и правила decode-as | Linux: TShark 4.x + prlimit; [ръководство за записи](../guides/data/packet-captures.md) |
| Обобщения на пакети | Крайни точки, DNS, TLS SNI, разпределение по протоколи и HTTP заявки | Предоставени от вас tshark и capinfos (проверено на Linux); [ръководство за pcap](../guides/data/pcap-analysis.md) |
| Записани логически сигнали | Анотации от декодерите, диапазони от семпли и диагностика | Linux: sigrok-cli 0.7.2 + prlimit; [записи на сигнали](../guides/signals/signal-recordings.md) |
| Пакети и ресурси | Описи на файлове, хешове, plist файлове, устройство на Apple пакети (bundles) и извлечени ресурси | [Ръководство за артефакти и JavaScript](../guides/javascript/javascript-artifact-reconstruction.md), [Apple приложения](../guides/apple/apple-application-analysis.md) |
| Поведение на процеси | Изход в терминала, взаимодействия, наблюдения на изхода от процеса и на файловата система и сравнения между изпълнения | Linux/macOS с нативен PTY; [запис на процеси](../guides/runtime/process-capture.md) |
| PyInstaller изпълними файлове | Членове на CArchive, версия на Python, входни скриптове и извлечен байткод | Няма (само статичен анализ); [пакетирани Python приложения](../python-packaged-applications.md) |
| Изпълними файлове на Deno | Виртуални файлове, входна точка, опции и размер на npm снимката | Няма (само статичен анализ); [изпълними файлове на Deno](../deno-standalone.md) |
Статичната проверка на JavaScript и .NET чете предоставените файлове, без да
стартира приложението. Записът по време на изпълнение стартира избраната цел или
взаимодейства с нея с правата на вашия потребител; всяко ръководство за анализ по
време на изпълнение описва какво точно прави.
За офлайн проверка на нативни бинарни файлове REA поддържа и предоставени от вас
GNU objdump и Rizin. Вижте
[ръководството за инструменти за обратно инженерство](../reverse-engineering-tools.md)
за настройка на доставчиците, CLI командите и ограниченията на Evidence. REA не
инсталира и не обновява нито един от двата доставчика.
<a id="choosing-a-deep-analysis-provider"></a>
Поддържаните нативни формати и операционни системи зависят от доставчика. Вижте
[настройката на Hopper и Ghidra](../getting-started/installation.md#hopper),
[ръководството за IDA](../providers/ida-provider.md) (включително незадължителен
нативен MCP мост), [ръководството за декомпилатора Kuna](../kuna-provider.md) и
[експерименталната поддръжка на Ghidra за Windows](../providers/windows-ghidra-p0.md).
Ghidra поддържа и [анализ на 16-битов DOS код](../providers/ghidra-dos.md). За
големи бинарни файлове увеличете времето за стартиране на доставчика с
`REA_GHIDRA_STARTUP_TIMEOUT_MS` или `REA_HOPPER_STARTUP_TIMEOUT_MS`. За избора
на доставчик вижте [ръководството за CLI](../getting-started/cli.md#choose-a-provider).
Проверете [наличността в изданията](../getting-started/installation.md#released-package-and-main)
за функции, добавени след последното издание в npm.
## Примери
<a href="https://rea.tools/showcase/">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="../assets/rea-showcases-dark.svg" />
<img alt="Илюстрации на примерите DX-Ball (звукова панорама), Notion (мост за клипборда) и TH04 (пръстен от куршуми)" src="../assets/rea-showcases.svg" />
</picture>
</a>
### DX-Ball: реконструиране на изчислението на звуковата панорама
Проследете извикване на звук до помощната функция, която превръща позицията в
панорама, изследвайте инструкциите и превърнете непълния псевдокод в C.
Реконструкцията минава 3 205 тестови случая спрямо оригиналния x86 код и
възпроизвежда всичките 63 байта на компилираната функция.
[Прочетете казуса](https://rea.tools/showcase/dx-ball/) ·
[Хранилище с реконструкцията](https://github.com/N0zoM1z0/dx-ball)
### Notion: проследяване на моста за клипборда в Electron
Открийте API-то за клипборда в renderer процеса, проследете го през preload
скрипта и IPC до главния процес и изследвайте формата за форматирано съдържание
в клипборда.
[Прочетете казуса](https://rea.tools/showcase/notion/)
### TH04: възстановяване на изчислението на пръстена от куршуми в DOS
Изследвайте 16-битовите инструкции на оригиналната игра за PC-98, възстановете
изчисленията на фиксираните и насочените ъгли и сравнете реконструирания C++ код
с изхода на историческия компилатор.
[Прочетете казуса](https://rea.tools/showcase/th04/) ·
[Хранилище с реконструкцията](https://github.com/N0zoM1z0/th04)
### Създавайте RL среди с REA
Запишете сесия в уеб приложение, превърнете неговото API в инструменти и експортирайте среда, която AI агент може да използва. Стартирайте я с AgentEnv, след което добавете задачи и проверки за награда за RL обучение или оценка.
[Прочетете ръководството](https://rea.tools/guides/rl-environments/) ·
[Гледайте видеото](https://x.com/reatools/status/2112574822584918075?s=20)
Ако сте използвали REA за нещо интересно, ще се радваме да го видим. Споделете
случая си в [issue](https://github.com/morluto/rea/issues) или
[pull request](https://github.com/morluto/rea/pulls), като включите целта,
въпроса си, как ви помогна REA и какво открихте.
<a id="build-rl-environments"></a>
## Създаване на RL среди
Дайте на AI агент локална среда, в която да упражнява задачи като намиране на issue или създаване на папка, без да стартира оригиналното приложение. Използвайте я за обучение с подсилване (reinforcement learning, RL) или за да проверите колко добре агентът изпълнява задачи.
REA превръща записаните API заявки и отговори в инструменти, които агентът може да извиква. Средата използва записаните данни и поддържа промени само когато записът потвърждава ефекта им.
След като REA е настроен в агента ви, заменете примерния URL адрес и задачите с папки по-долу със свои:
```text
Използвай REA, за да изградиш RL среда от тестовото ми уеб приложение на
http://127.0.0.1:3000.
Обхвани извеждането на списък, създаването, преименуването и изтриването на
папки. Можеш да създаваш и премахваш тестови папки. Не променяй съществуващите
данни.
Запази я в папка с име my-env. Провери кои операции работят и ми кажи как да я
стартирам.
```
<details>
<summary>Използвайте командния ред вместо това</summary>
Използвайте тези команди, ако вече имате файл със записаните от браузъра заявки и отговори на приложението. За да стартирате резултата, са нужни и AgentEnv, и Docker.
```sh
rea environment-build ./session.har ./my-env --name my-env --json
agent-env run ./my-env
```
</details>
REA експортира готова за стартиране среда с базов тест, който проверява дали тя стартира и отговаря. Използвайте я с вашата RL рамка, за да зададете целите на задачите, да добавите проверки за награда и да стартирате обучението.
[Изградете среда](https://rea.tools/guides/rl-environments/) ·
[Справочник за средите](../agent-environments.md) ·
[Гледайте демонстрацията в X](https://x.com/reatools/status/2112574822584918075?s=20)
### Среди за настолни приложения
REA може да създаде среда за Linux настолно приложение: агентът го управлява чрез снимки на екрана, мишка и клавиатура. От кратка заявка агентът инсталира приложението, създава задача, експортира средата и я проверява на нов компютър. За изграждането са необходими Linux на amd64 или arm64, Docker и версията на agentenv, посочена в ръководството.
[Настройка на среди за настолни приложения](../desktop-build-computer.md)
## Често задавани въпроси
<details>
<summary><strong>Кои агенти могат да използват REA?</strong></summary>
Всеки агент, който поддържа локални MCP сървъри. Настройката конфигурира
[поддържаните агенти](../getting-started/installation.md#supported-agents);
другите клиенти могат да използват
[ръчна MCP регистрация](../getting-started/installation.md#mcp-registry).
</details>
<details>
<summary><strong>Нужен ли ми е двигател за нативен анализ?</strong></summary>
Задълбоченият нативен анализ използва Hopper, Ghidra, IDA или Kuna в зависимост
от целта и операцията. Статичната проверка на JavaScript и .NET работи без
двигател за нативен анализ. Настройката може да инсталира Hopper след ваше
одобрение; Ghidra, IDA и Kuna се използват от вече съществуващите ви инсталации.
Вижте [настройката на доставчиците](../getting-started/installation.md#hopper)
за възможностите и поддържаните от тях цели.
</details>
<details>
<summary><strong>Трябва ли първо да стартирам Hopper?</strong></summary>
REA стартира Hopper, когато дадена операция се нуждае от него. В macOS при първо
стартиране може да се появи диалогов прозорец, който ви пита дали да изберете
демо режим, или да активирате лиценза си. Завършете този диалог в същата
потребителска сесия преди първата си CLI/MCP операция или задача, която ще се
изпълнява без надзор. При нужда отворете Hopper ръчно. Вижте
[стартиране и отстраняване на проблеми с Hopper](../getting-started/installation.md#launcher-paths-and-troubleshooting).
</details>
<details>
<summary><strong>Какво прави инсталирането на умението (skill) от skills.sh?</strong></summary>
Умението дава на агента ви инструкции как да провежда изследвания. Използвайте
`npx rea-agents setup`, за да регистрирате MCP сървъра на REA и да инсталирате
съответните инструкции, след което рестартирайте агента. Вижте
[инсталиране само на умението](../getting-started/installation.md#skill-only-installation).
</details>
<details>
<summary><strong>Какъв код връща REA?</strong></summary>
Нативният анализ връща псевдокод и асемблер. Анализът на JavaScript/Electron
възстановява модулите и връзките между тях. Агентът ви използва тези
констатации, за да напише и тества реализация; [примерите](#примери) показват
цялостни разработени случаи.
</details>
<details>
<summary><strong>Качва ли REA приложението ми някъде?</strong></summary>
REA анализира целите локално. Агентът ви получава резултатите от инструментите,
а доставчикът на модела, който агентът използва, има собствена политика за
данните.
</details>
<details>
<summary><strong>Какво да направя, ако попадна на грешка?</strong></summary>
Първо обновете; възможно е скорошно издание вече да я е поправило.
За CLI, инсталиран с `npm install --global` или `bun add --global`:
```bash
rea update
```
За настройка на агента чрез `npx`:
```bash
npx rea-agents@latest setup
```
Ако използвате агент, извършете
[опресняването на настройката](#обновяване-на-rea) и го рестартирайте. Опитайте
отново същата задача. Ако проблемът продължава,
[отворете issue](https://github.com/morluto/rea/issues), като посочите версията
на REA, типа на целта, стъпките за възпроизвеждане и изхода с грешката.
</details>
## Документация
Започнете с [практическите ръководства](https://rea.tools/guides/) на уебсайта.
За точните опции, предварителните изисквания и договорите за резултатите:
- [Инсталиране и настройка](../getting-started/installation.md): регистриране на агенти, конфигуриране на доставчици, обновяване и деинсталиране.
- [Готовност и отстраняване на проблеми](../getting-started/installation.md#check-readiness-for-your-task): диагностика на конкретен агент или двигател за анализ.
- [CLI и Evidence](../getting-started/cli.md): команди, избор на доставчик, моментни снимки, импорт/експорт и изходни статуси.
- [MCP договори](../reference/mcp-contracts.md) и [подсказки за агенти](../getting-started/mcp-prompts.md): резултати от инструментите, сесии и насочвани изследвания.
- [Каталог с инструменти](../reference/mcp-contracts.md#generated-catalog): генериран списък с инструменти, доставчици и CLI команди.
- [Пътна карта](../development/roadmap.md): планирана работа и проследяване на възможностите.
Съобщавайте за уязвимости чрез [SECURITY.md](../../SECURITY.md).
## История на звездите
🎉 **400 000 звезди в GitHub — благодарим ви!**
Благодарим на всички, които използват REA, съобщават за грешки, предлагат нови функции, тестват версии и допринасят с поправки.
<a href="https://www.star-history.com/?repos=morluto%2Frea&amp;type=date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=morluto/rea&amp;type=date&amp;theme=dark&amp;legend=top-left" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=morluto/rea&amp;type=date" />
<img alt="История на звездите на REA в GitHub" src="https://api.star-history.com/chart?repos=morluto/rea&amp;type=date" />
</picture>
</a>
## Отказ от отговорност
Вижте [DISCLAIMER.md](../../DISCLAIMER.md) за насоки за отговорна употреба.
Позицията на проекта относно незаконната или неразрешената употреба обхваща
всички версии, канали за разпространение и платформи на REA; всяко копие запазва
приложимите за него лицензи.
REA е предназначен за законни изследвания, обучение, оперативна съвместимост,
съхраняване на софтуер и анализ на софтуер, който притежавате или имате
разрешение да изследвате.
## Принос към проекта
Ще се радваме на помощта ви с REA! [Отворете issue](https://github.com/morluto/rea/issues),
за да съобщите за грешка или да предложите функция, или
[изпратете pull request](https://github.com/morluto/rea/pulls), за да подобрите
кода или документацията.
Вижте [CONTRIBUTING.md](../../CONTRIBUTING.md) за настройка на средата за
разработка и проверките, [тестване](../development/testing.md) за видовете
проверки и [картата на архитектурата](../architecture/architecture.mermaid) за
избрани слоеве и пътища на зависимостите.
## Лиценз
[MIT](../../LICENSE)
Кодът, написан за проекта REA, е лицензиран под MIT. Материалите от трети страни
запазват собствените си лицензи и бележки за авторски права; вижте
[бележките за трети страни](../../THIRD_PARTY_NOTICES.md) за списъка със
зависимости, запазените текстове на лицензите и условията на външните
инструменти.
**Трябва да сте придобили законно търговските инструменти и да имате право да ги
използвате**, включително IDA Pro / декомпилаторите на Hex-Rays, Hopper и JEB,
съгласно приложимите им лицензи. REA не предоставя лиценз, ключ или право на
активиране за нито един инструмент. Пробните и демо версиите остават обект на
условията на производителя, включително ограниченията за брой потребители,
функции, автоматизация и споделяне на резултатите. Кракнати копия, откраднати
ключове, неразрешено споделяне на ключове и заобикаляне на лицензионни
ограничения не са разрешени. Тези насоки не изменят лиценза MIT или лицензите на
трети страни.