Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
disrobe — Rust CLI-набор, который статически декомпилирует, деобфусцирует и распаковывает нативный код, байт-код, скрипты, прошивки и пакеты приложений в более чем 15 экосистемах через единый автоматический конвейер. | Kitploit
Инструменты/GitHubGitHub/1-3-7/disrobe
Безопасность AndroidСтатический анализОбратная инженерияАнализ вредоносных программМобильная безопасностьАнализ Бинарных ФайловАнализ Прошивок
GitHub1-3-7/disrobe

disrobe

Rust CLI-набор, который статически декомпилирует, деобфусцирует и распаковывает нативный код, байт-код, скрипты, прошивки и пакеты приложений в более чем 15 экосистемах через единый автоматический конвейер.

Репозиторий
1136125 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт
disrobe: восстановление исходного кода, структуры и байтов из скомпилированного ПО

Начало работы · Поддерживаемые входные данные · Автоматическое восстановление · Сравнение инструментов · Доказательства · Документация

Увидеть ПО изнутри

Disrobe — это набор консольных утилит на Rust для декомпиляции, деобфускации и распаковки программного обеспечения. Используйте его для быстрой оценки неизвестного файла, восстановления кода для обратной разработки, извлечения индикаторов для расследования или подготовки артефактов для дизассемблера.

Восстанавливайте Python из байт-кода и замороженных приложений, Java из class-файлов и DEX, C# из CIL, JavaScript из бандлов, Lua из пользовательских виртуальных машин, а также C или Rust из нативного кода. Извлекайте файлы из установщиков, прошивок, мобильных пакетов и приложений Electron, Tauri или Wails. Сохраняйте восстановленный исходный код, символы, строки, типы и сведения о происхождении вместе для дальнейшего анализа.

Полная сборка каталогизирует 170 семейств в 15 экосистемах и обнаруживает 103 формата контейнеров. disrobe auto определяет каждый слой, запускает соответствующий проход и следует за восстановленными дочерними элементами по их собственным путям восстановления. Специализированные команды предоставляют более тонкий контроль, отчёты об анализе и опциональные бэкенды. Восстановление по умолчанию выполняется статически; исходный код, структура, частичный вывод и границы отсутствующих ключей остаются различимыми в результате.

Если Disrobe вам полезен, рассмотрите возможность поставить звезду репозиторию.

Посмотрите в действии

Disrobe CLI: распаковка, восстановление и анализ ПО

Смотреть полное видео · Читать расшифровку

Двадцать команд CLI за 2 минуты 12 секунд: распаковка нативного исполняемого файла, восстановление Python и Lua, разделение модулей JavaScript, восстановление source map, анализ WebAssembly и ресурсов Android, извлечение индикаторов и сохранение отчётов и хешей артефактов. Финальная глава показывает конфигурацию проекта, настройку IDE, аннотации аналитика и автодополнение для оболочки. Расшифровка включает полный перечень команд записанной сборки; карта возможностей объясняет её пределы поддержки.

Начало работы

Скачайте архив для вашей платформы со страницы GitHub Releases, сверьте его с SHA256SUMS из релиза и поместите disrobe в ваш PATH. Архивы релизов включают наборы подписей; руководство по проверке объясняет, как их проверить.

ПлатформаЦели релиза
Windowsx86-64, ARM64
macOSx86-64, ARM64
Linuxx86-64 и ARM64 с glibc; x86-64 с musl

Проверьте установленный бинарный файл:```sh disrobe --version disrobe --help

root@kitploit:~
Чтобы собрать CLI из клона, установите Rust-инструментарий репозитория и [нативные предварительные требования для сборки](https://github.com/1-3-7/disrobe/blob/main/docs/src/installation.md), затем выполните:```sh
cargo build --locked --release -p disrobe-cli --bin disrobe

Исполняемый файл — target/release/disrobe или target/release/disrobe.exe в Windows. См. руководство по установке для флагов функций и slim-сборок.

Восстановление приложения

Начните с приложения, библиотеки или пакета. Идентифицируйте его, восстановите его распознанные слои, затем просмотрите сводку восстановления:```sh disrobe identify path/to/application disrobe auto path/to/application --out recovered/ --capture-stages disrobe context --out recovered/

root@kitploit:~
`identify` сообщает формат и доступные сигналы. `auto` извлекает и восстанавливает распознанные слои. `context` суммирует полученные проходы, уверенность и происхождение. С `--capture-stages` проверяйте каждый этап в `recovered/01-*/`, `recovered/02-*/` и `recovered/final/`; `chain.json` записывает топологию и хеши, а `recovery.json` записывает результаты и тайминги.

Используйте специальную команду, когда вы знаете нужный вам вывод:```sh
disrobe py decompile module.pyc --out python-source/
disrobe js deob bundle.js --full --out readable.js
disrobe native decompile application.exe --out native-source/
disrobe native export packed.exe --format ghidra --out ghidra-input/
disrobe webview desktop.exe --out frontend/

Нативный декомпилятор по умолчанию генерирует C для x86-64; --format rust выбирает Rust. AArch64, ARM32 и MIPS32 генерируют псевдо-C. native export пересобирает поддерживаемые упакованные PE-образы для внешнего инструмента анализа; webview записывает восстановленное дерево ресурсов фронтенда без запуска приложения.

Попробуйте небольшой, удобный для изучения артефакт

Репозиторий включает крошечный модуль WebAssembly для браузерной площадки. Из клона, с полным CLI в вашем PATH:```sh disrobe wasm decompile playground/public/samples/add.wasm --target json --out add.summary.json disrobe wasm decompile playground/public/samples/add.wasm --target wat --out add.lifted.wat disrobe auto playground/public/samples/add.wasm --out recovered/ --capture-stages

root@kitploit:~
Первая команда записывает `add.summary.json`; вторая записывает текст WebAssembly в `add.lifted.wat`. Автоматическое восстановление
выбирает доступную цепочку и записывает её артефакты в `recovered/`; `--capture-stages` сохраняет
промежуточные результаты. Эти операции исследуют модуль, не запуская его экспортируемую функцию.

Изучайте восстановленные файлы вместе с отчётом: одна лишь идентификация не устанавливает факт восстановления. Неподдерживаемые конструкции, отсутствующий ключевой материал и недоступные цепочки отражаются в результате. [Руководство по результатам](https://github.com/1-3-7/disrobe/blob/main/docs/src/reading-a-result.md) объясняет артефакты, диагностику, частичные исходы и происхождение.

[Открыть браузерную площадку](https://1-3-7.github.io/disrobe/playground/) · [Следовать быстрому старту](https://github.com/1-3-7/disrobe/blob/main/docs/src/quickstart.md)

## Найдите свой вход

**Recover** означает, что достижимый путь выдаёт исходный код, байты или структуру. **Partial** означает, что восстанавливается лишь часть этой информации. **Detect-only** означает, что семейство идентифицируется без восстановления его защищённого тела. Эти уровни описывают операции над поддерживаемыми входами; одно лишь имя семейства не гарантирует, что каждая версия или конфигурация восстанавливается. Приведённые ниже списки включают полный каталог семейств и дополнительные форматы, доступные через специализированные команды и экстракторы.

| Вход | Восстановление и вывод | Команды и руководство |
|---|---|---|
| Python | Байткод CPython 1.0–3.15 и marshal в исходный код; дизассемблирование PyPy, MicroPython `.mpy` v0–v6, Jython, IronPython и Brython; извлечение замороженных полезных нагрузок; имена, сигнатуры и структурный фолбэк Cython `.pyd`/`.so` | `py`, `pyinstaller`, `pyarmor`, `pyfreeze`, `nuitka` · [Python](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/python.md) |
| JavaScript / TypeScript | Деобфускация исходного кода, обращение минификации, разделение модулей, source maps, инспекция кэшированных данных V8 и упакованных сред выполнения | `js` · [JavaScript](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/javascript.md) |
| WebAssembly | `.wasm` в WAT, Rust, TypeScript, псевдоисходный код C или JSON; инспекция Component Model и графа типов GC; обращение поддерживаемой обфускации | `wasm` · [WebAssembly](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/wasm.md) |
| JVM / Android | `.class`, JAR, DEX, APK, AAB; исходный код Java, идиомы Kotlin/Scala, информация о манифесте и подписях, отчёты протекторов и sidecar-файлы маппинга | `jvm`, `apk` · [JVM и Android](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/jvm-android.md) |
| .NET | Метаданные PE/CLR и CIL в псевдоисходный код C#, F# или VB; инспекция ReadyToRun и Native AOT; извлечение single-file bundle | `dotnet` · [.NET](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/dotnet.md) |
| Native | Идентификация или анализ PE32/PE64, EFI PE, ELF32/ELF64, модулей ядра, thin/fat Mach-O, COFF, MZ, NE, LE, LX и raw-кода; генерация исходного кода на архитектурно-специфичных путях выше | `native`, `macho`, `semdiff` · [Native](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/native.md), [декомпиляция](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/native-decompile.md) |
| Go | Метаданные среды выполнения PE/ELF/Mach-O, имена stripped-функций и типов, файлы `embed.FS`, отчёты garble и восстановимые литералы | `go` · [Go](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/go.md) |
| Swift / Objective-C | Классы, протоколы, поля, селекторы, демутированные символы Mach-O; универсальные срезы; dylib из dyld shared cache | `swift`, `macho` · [Swift](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/swift.md) |
| Lua | Байткод Lua 5.1–5.4, LuaJIT 2.0/2.1, Luau, Garry's Mod Lua (GLua); исходный код и отчёты о точности по каждому входу; поддерживаемое восстановление VM и строк | `lua` · [Lua](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/lua.md) |
| PHP | Снятие слоёв source/eval-цепочек, циклы декодирования с литеральными ключами и слои AES, извлечение Phar, восстановление сериализованного `op_array`; коммерческие обёртки энкодеров остаются ограниченными ключом | `php` · [PHP](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/php.md) |
| Ruby | Бинарники MRI/YARV 2.6–3.4 InstructionSequence и байткод mruby RITE в Ruby; классификация freezer и AOT | `ruby` · [Ruby](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/ruby.md) |
| Erlang / Elixir | Модули BEAM и архивы EZ; сохранившийся абстрактный код или `Dbgi` в исходный код, фолбэк на Core Erlang, листинг инструкций | `beam` · [BEAM](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/beam.md) |
| ActionScript 3 | Блоки SWF FWS/CWS/ZWS `DoABC` и сырой байткод ABC в дизассемблирование и псевдокод AS3 | `as3` · [ActionScript](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/as3.md) |
| Мобильные среды выполнения | Разбор заголовков Hermes v60–v96, псевдо-JavaScript-лифтинг v62/v71/v74/v76/v83/v84/v89/v96; тела исходного кода Flutter Dart kernel; объявления, строки и дизассемблирование ARM64 AOT | `hermes`, `flutter`, `mobile` · [Mobile](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/mobile.md) |
| Shell / документы | PowerShell, Bash, Batch, VBScript, WSH; p-код и stomping VBA3/5/6/7; исходный код макросов Office, формулы XLM BIFF8/BIFF12, встроенные скрипты/действия PDF | `shell` · [Shell и документы](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/shell.md) |
| Прочие языковые артефакты | Op-деревья/байткод Perl, метаданные R RDS и Rcpp, Tcl starkits, выходные данные Haxe JS/SWF/HashLink/Neko; отпечатки, символы и частичная структура Nim, Zig, Crystal и D | `auto`, библиотечные API · [Скриптовые языки](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/shell.md), [native](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/native.md) |
| Python pickle | Дизассемблирование протокола, символьная трассировка, реконструкция и классификация без вызова pickle-редьюсеров | `pickle` · [Pickle](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/pickle.md) |
| Архивы / прошивки / фронтенды | Полный список контейнеров ниже; Electron ASAR, встроенные карты Tauri v1/v2, деревья `embed.FS` Wails v2 | `extract`, `webview`, `auto` · [Контейнеры](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/containers.md), [webview](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/webview.md) |

<details>
<summary><strong>Python: каждый именованный freezer, протектор и обфускатор исходного кода</strong></summary>

| Семейство или формат | Поддержка и предварительное условие |
|---|---|
| PyInstaller 2.x–6.20+ | Восстановление встроенных архивов и байткода, включая поддерживаемые слои AES-CTR/CFB |
| Nuitka onefile, standalone, module, wheel | Извлечение полезных нагрузок onefile; восстановление символов и видимой для Python структуры из скомпилированных форм |
| cx_Freeze, py2exe, shiv, pex, Briefcase | Извлечение упаковщика через `pyfreeze`; команда остаётся экспериментальной |
| PyOxidizer | Экспериментальное, непроверенное извлечение |
| SourceDefender `.pye` | Статическая расшифровка через `py sourcedefender` и `sourcedefender.decrypt` |
| PyArmor v3 (legacy DES), PyArmor v4 (legacy mixed), PyArmor v5 (legacy AES) | Detect-only: граница ключа, обёрнутого в RSA |
| PyArmor v6, PyArmor v7 | Частичное статическое восстановление; super mode и недоступные ключи ограничивают вывод |
| PyArmor v8, PyArmor v9 / 9-Pro | Статическое восстановление обёртки там, где доступен ключевой материал. Опубликованный <!-- m:pyarmor_frac -->72 / 72<!-- /m --> результат учитывает полное декодирование корневого `CodeObject` только для именованных обёрток v8/v9 default-trial; он не устанавливает эквивалентность исходного кода и не охватывает registered-license/pro, BCC или super mode |
| Kramer / Specter, Berserker, BlankOBF, PlusOBF, Wodx, pyobfuscate.com, pyobfuscate.com (2026 XOR/lambda), PyObfuscator (mauricelambert), Manglify, Oxyry, pyminifier, семейство online obfuscator, Xindex, Patchwork, pyc-zipper | Статическое восстановление исходного кода/загрузчика через вычислитель AST; отдельные слои и остатки отражаются в отчёте |
| Jawbreaker, ObfuXtreme | Восстановление тела, присутствующего в артефакте; полезные нагрузки, получаемые во время выполнения, остаются недоступными |
| python-obfuscator (PyPI), pyobfus, Pypacker | Частичное снятие обёртки и классификация |

PyArmor может нуждаться в соответствующем файле среды выполнения рядом с обёрткой. Его специализированный путь BCC требует `--allow-bcc` и выдаёт статические нативные лифты плюс скелеты Python для смоделированных тел; автоматическое восстановление с учётом пути может публиковать те же артефакты BCC. Только динамический хук PyArmor v6/v7 выполняет пример кода, за `--allow-dynamic` с watchdog. `--allow-bcc` разрешает только статический анализ внутри дерева и не выполняет пример и не вызывает внешние инструменты. [Сведения о версиях и режимах](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/python.md#pyarmor).

</details>

<details>
<summary><strong>JavaScript, WebAssembly и упакованные веб-приложения</strong></summary>

| Семейство или формат | Поддержка и маршрут |
|---|---|
| obfuscator.io / javascript-obfuscator, JS-Confuser | Восстановление поддерживаемых строковых массивов, преобразований диспетчера/потока управления, непрозрачных предикатов и слоёв загрузчика; прямые команды и `js.deob` |
| Jscrambler, js-obfuscator (jsobfu) | Частичное восстановление шаблонов и статических преобразований |
| JSFuck, aaencode, jjencode, JSFiretruck, Dean Edwards Packer | Статическое декодирование через специализированные операции и распознанные маршруты цепочек |
| JSDefender, Arxan / Digital.ai | Обнаружение и частичное снятие статических преобразований; защищённые операции коммерческого JS требуют опции авторизации команды |
| PACE | Detect-only |
| webpack 4, webpack 5, Vite, Rollup, Rolldown, esbuild, Turbopack, Bun, Parcel, Browserify, SystemJS; модули AMD | Прямое разбиение/восстановление модулей. Цепочка диспетчеризует webpack и Vite; маркеры каталога для других бандлеров сами по себе не делают эти маршруты автоматическими |
| bytenode `.jsc`, Node SEA, nexe, nw.js | Инспекция/карвинг упакованных данных V8; Node SEA и bytenode имеют явные ветви цепочки |
| Electron ASAR, Tauri v1/v2, Wails v2 | Восстановление встроенных деревьев фронтенда; Electron/Tauri используют `webview.carve`, Wails использует `go.classify`; прямой `webview` обрабатывает все три |
| Bun standalone, Deno eszip v2–v2.3 / `deno compile` | Восстановление встроенных графов модулей через соответствующие читатели контейнеров; eszip также предоставляет прямой читатель на Rust |
| Wobfuscator, Jscrambler WASM, wasm-mixer / Wasmixer | Частичное обращение поддерживаемых преобразований через `wasm.deob`; фикстуры в форме инструментов оценивают преобразования, без зафиксированного вывода от самих этих обфускаторов |
| Tigress → Emscripten, wasm-name-obfuscator | Обнаружение и классификация; помощник Tigress находится вне пути запуска `wasm deob`, а уничтоженные исходные имена остаются недоступными |

[Маршруты JavaScript](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/javascript.md) · [Ограничения Wasm](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/wasm.md) · [Макеты встроенного фронтенда](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/webview.md).

</details>

<details>
<summary><strong>Нативные упаковщики, протекторы и семейства обфускации</strong></summary>

| Семейство | Поддержка и маршрут |
|---|---|
| Donut, sRDI | Восстановление встроенного модуля из поддерживаемых макетов shellcode-загрузчика |
| UPX, ASPack, Petite, MPRESS, FSG, PECompact, Yoda's Crypter, NSPack, MEW, kkrunchy | Реализованные процедуры распаковки, доступные через `native unpack` и цепочку упаковщиков; точность варьируется по семейству и образцу |
| ASProtect, Morphine, nPack, NeoLite, PolyCryptor, Warzone Crypter | `StubEvalPending`: поведение эмулятора имеет подтверждение заглушки, построенной по спецификации; реальное восстановление упакованного вендором кода не проверено, и диспетчеризация распаковки не заявлена |
| Yoda's Protector, VMProtect, Themida / WinLicense | CLI и auto detect-only. Отдельные помощники на Rust предоставляют карвинг с помощью оригинала или восстановление защищённой секции; они не устанавливают девиртуализацию всей программы |
| PE-Protector, PELock, Enigma Protector, Armadillo, Obsidium, WinLicense | Detect-only |
| DotNetPatcher, NetCryptor | Делегируют управляемый слой проходу .NET |
| OLLVM flattening, bogus control flow, instruction substitution; Tigress CFF | Поддерживаемые статические преобразования деобфускации и отчёты через нативные API Rust; применимый анализ появляется в отчётах нативного восстановления |
| Alcatraz, Emotet CFF, Mirai, Dridex, Trickbot, obfus.h, Cryptify (rust-obfuscator), guardian-rs, obfusheader.h, obfuscxx, Amice | Именованные сигнатуры нативной обфускации; отдельные помощники для строк/потока управления имеют более узкое восстановление, чем полное обнаруженное семейство |

Нативный анализ также восстанавливает символы Rust/C++, RTTI и vtables C++, объектные модели Delphi/C++Builder и ресурсы DFM, информацию DWARF/PDB/STABS, импорты, графы вызовов, криптосигнатуры и совпадения FLIRT. Анализ инструкций охватывает x86, ARM, RISC-V, MIPS, PowerPC, SPARC, eBPF и AVR; генерация исходного кода — это меньший набор архитектур, перечисленный выше. [Нативный анализ](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/native.md) · [Доказательства распаковки и восстановления байтов](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/native-unpack.md) · [Деобфускация](https://github.com/1-3-7/disrobe/blob/main/docs/src/anti-analysis.md).

</details>

<details>
<summary><strong>Семейства пакетов JVM, Android, .NET и мобильных</strong></summary>

| Семейство | Поддержка и предварительное условие |
|---|---|
| Zelix KlassMaster, Allatori, Stringer, DashO | Восстановление строк для поддерживаемых шаблонов с последующей декомпиляцией classfile |
| DexGuard | Обнаружение, структурное снятие слоёв и эмуляция расшифровки строк внутри класса для поддерживаемых ключевых констант |
| BlackObfuscator | Распознавание диспетчера DEX и аннотирование порядка блоков |
| ProGuard / R8 | Воспроизведение маппинга в sidecar-файл восстановления имён; исходные имена требуют `mapping.txt` |
| yGuard, SkidSuite2, JBCO | Detect-only |
| Promon SHIELD, Guardsquare DexGuard RASP, Guardsquare ThreatCast, Appdome, OneSpan, Arxan / Digital.ai, Zimperium zShield, Licel DexProtector | Идентификация Android RASP и структурные отчёты |
| ConfuserEx2 | Восстановление констант на реальных образцах и выравнивание потока управления; зашифрованные ресурсы могут сохранять границу ключа времени выполнения |
| Eazfuscator.NET | Расшифровка строк и лифтинг VM, оцениваемые по модели; фикстура VM происходит из виртуализатора внутри репозитория, а не из поставляемого продукта |
| KoiVM (ConfuserEx VM) | Виртуализированные тела, поднятые в CIL на зафиксированном выводе реального инструмента |
| ConfuserEx, Dotfuscator, Dotfuscator CE, SmartAssembly, Babel, DeepSea, Spices.Net, Goliath, Skater, .NET Reactor, CryptoObfuscator, ArmDot, Agile.NET, Obfuscar, DotNetPatcher, NetCryptor, BitMono | Обнаружение и частичное восстановление, специфичное для семейства: имена, строки, ресурсы или структуры методов. BitMono входит в детектор протекторов за пределами каталога цепочек .NET из 22 записей |
| Themida (.NET wrapper), ILProtector, MaxToCode | Detect-only для тел, защищённых нативным загрузчиком |
| React Native APK, React Native IPA; байткод React Native Hermes | Извлечение полезных нагрузок JS/Hermes и направление поддерживаемого байткода в лифтинг Hermes |
| Flutter Dart kernel; снимок Flutter AOT (`libapp.so`) | Восстановление таблицы исходников kernel; объявления AOT, метаданные и дизассемблирование ARM64. Версия снимка и доступные имена ограничивают восстановление |
| Xamarin / .NET MAUI APK, Apache Cordova APK, Capacitor APK, NativeScript APK | Идентификация среды выполнения и поддерживаемое извлечение пакетов/членов |
| Android APK (`classes.dex`), Android app bundle (AAB / APKM / XAPK), IPA | Инспекция пакета и извлечение дочерних элементов; последующее восстановление зависит от встроенной среды выполнения |

Декодеры строк .NET для SmartAssembly, Spices.Net, Skater, .NET Reactor, Eazfuscator.NET и CryptoObfuscator оцениваются на смоделированных алгоритмах, а не на зафиксированных сборках, созданных вендором. ConfuserEx2, Obfuscar и BitMono имеют доказательства на реальных защищённых сборках. [JVM/Android](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/jvm-android.md) · [.NET](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/dotnet.md) · [Mobile](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/mobile.md).

</details>

<details>
<summary><strong>Семейства Lua, PHP, shell, Ruby, BEAM, Swift, Go и ActionScript</strong></summary>

| Семейство | Поддержка и предварительное условие |
|---|---|
| IronBrew2 | Восстановление VM, проверенное дифференциально по исполнению на реальном выводе 2.7.0 standard и MAX |
| Prometheus | Частичное восстановление, включая поддерживаемые стекированные деревья диспетчеризации `Vmify` |
| MoonSec V1, MoonSec V2, MoonSec V3, AztupBrew, DarkSec, Boronide, PSU, WeAreDevs LuaU, luaobfuscator.com, SLua (Unity Lua 5.3), Hercules | Частичное восстановление Lua; доказательство VM формы MoonSec использует синтетический bootstrap |
| Luraph | Detect-only |
| Байткод Luau, Garry's Mod Lua (GLua) | Распознавание диалекта; лифтинг Luau и частичное восстановление GLua |
| ionCube, SourceGuardian, Zend Guard | Обнаружение коммерческих обёрток PHP; ключи, находящиеся в загрузчике, остаются границей. Устаревшие случаи со статическим ключом могут дать частичную структуру `op_array` |
| FOPO, Better PHP Obfuscator | Статическое снятие eval-цепочек PHP, с требованиями литеральных ключей для зашифрованных слоёв |
| Invoke-Obfuscation (token), Invoke-Obfuscation (AST), Invoke-Obfuscation (string), Invoke-Obfuscation (encoding), Invoke-Obfuscation (compress); Invoke-Stealth, PowerHell, Chameleon, psobf | Статическое восстановление PowerShell |
| Invoke-Obfuscation (launcher), ISESteroids | Частичное восстановление PowerShell |
| Bashfuscator (token), Bashfuscator (string), Bashfuscator (obfuscate), Bashfuscator (compress); Bash indirection (IFS/eval); node-bash-obfuscate (chunk-table eval) | Статическое восстановление Bash |
| Обфускация Batch (`%random%`), обфускация Batch (set indirection); макрос VBA (декомпиляция p-кода + stomping) | Снятие слоёв Batch и восстановление исходного кода/p-кода VBA |
| YARV InstructionSequence (скомпилированный `.rb`), байткод mruby RITE | Восстановление исходного кода Ruby |
| Самораспаковывающийся исполняемый файл OCRA, пакет RubyScript2Exe | Частичная классификация/восстановление freezer |
| Скомпилированный класс JRuby, нативный образ TruffleRuby | Detect-only через каталог Ruby |
| Файл BEAM (скомпилированный модуль Erlang / Elixir), архив EZ (модули `.beam`, обёрнутые в ZIP) | Извлечение модулей, восстановление исходного кода/debug-чанков или фолбэк на Core Erlang |
| garble | Метаданные Go и поддерживаемые литералы; хеширование исходных имён необратимо без отсутствующего seed |
| Метаданные Mach-O Swift / Objective-C, бинарник Mach-O fat (universal), dyld shared cache | Метаданные среды выполнения, восстановление срезов и dylib |
| SwiftShield | Парсер маппинга; для восстановления исходных имён необходимо предоставить маппинг |
| SWF (Flash, FWS/CWS/ZWS) DoABC, сырой байткод ABC | Дизассемблирование и псевдокод тел методов |
| secureSWF, DoSWF, Kindi, Irrfuscator, swfLock | Detect-only |

[Каталог семейств](https://github.com/1-3-7/disrobe/blob/main/docs/src/catalog.md) · [Lua](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/lua.md) · [PHP](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/php.md) · [Shell](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/shell.md) · [Ruby](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/ruby.md) · [BEAM](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/beam.md) · [Go](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/go.md) · [Swift](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/swift.md) · [AS3](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/as3.md).

</details>

<details>
<summary><strong>Все 103 зарегистрированных формата контейнеров</strong></summary>

| Категория | Форматы |
|---|---|
| Общие архивы | ZIP, TAR, tar.gz, tar.bz2, tar.xz, tar.zst, 7z, RAR, CAB, CPIO, ar, ARJ, ARC, LZH, LZO/lzop, uzip, Xamarin xalz, PAR2, StuffIt |
| Архивы приложений и языков | JAR, WAR, APK, XPI, WHL, EGG, CRX, NUPKG, VSIX, PYZ, Electron ASAR |
| Установщики и образы приложений | PKG, DMG, DEB, RPM, AppImage, Snap, Flatpak, MSIX/APPX, MSI, NSIS, Squirrel, Inno Setup, InstallShield, Enigma Virtual Box |
| Файловые системы и потоки файловых систем | SquashFS, cramfs, ext4, romfs, MinixFS, Android sparse, btrfs-send, EROFS, JFFS2, NTFS, UBI/UBIFS, YAFFS2, QNX, partclone |
| Образы дисков и развёртывания | ISO, OCI, Docker image, VHD, VHDX, WIM, GPT, MBR, FAT12/16/32 |
| Потоки сжатия | XZ, gzip, bzip2, zstd, LZMA, lzip, LZ4, zlib, Unix compress (`.Z`) |
| Встроенные данные приложений | Bun standalone, UnityFS, .NET single-file bundle |
| Прошивки | D-Link SHRS, ENCRPTED_IMG, alpha v1, alpha v2, DEAFBEAD, FPKG; EnGenius; Autel ECC; QNAP; Netgear CHK, TRX v1, TRX v2; Xiaomi HDR1, HDR2; Tesla SBFH; HP BDL, IPKG; Moxa FRM; INSTAR BNEG, HD; Airoha; том прошивки UEFI |
| Память и зашифрованные тома | Windows minidump, LUKS1 |

Реестр заявляет обнаружение для каждой записи. Из этих маршрутов 102 используют универсальный экстрактор; <!-- roster-breadth:containers-exercised -->42<!-- /roster-breadth --> имеют зафиксированные входы, достигающие байтов членов, DMG имеет зафиксированное доказательство только обнаружения, а 59 не имеют зафиксированного входа. LUKS1 оценивается отдельно относительно открытого текста и требует raw-ключа тома `aes-cbc-plain` для расшифровки; без него он сообщает границу ключа. Отдельные методы сжатия, зашифрованные члены, разделённые тома и возможности файловых систем имеют более узкие ограничения. StuffIt 5 в настоящее время возвращает блоб архива через извлечение, хотя его декодеры fork существуют. Содержимое Airoha OTP-AES карвится дословно.

Дополнительные читатели на Rust предоставляют доступ к структурам Deno eszip, Apple APFS/HFS+, добавленным оверлеям ELF и Blazor WebCIL; они не являются дополнительными записями в счёте из 103 форматов. [Маршруты извлечения, версии методов и ограничения](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/containers.md) · [Реестр контейнеров](https://github.com/1-3-7/disrobe/blob/main/crates/disrobe-binfmt/src/container.rs).

</details>

## Автоматическое восстановление`auto` выбирает проход из скомпилированного реестра, запускает его, затем повторно идентифицирует его вывод и извлечённые дочерние элементы. Он останавливается при достижении порога уверенности, повторяющегося хеша содержимого или ограничения глубины (по умолчанию восемь). Отчёты и исходные файлы, помеченные как терминальные, остаются выводами, а не возвращаются обратно в обнаружение. Следующая таблица учитывает каждый проход, зарегистрированный при полной сборке; slim-сборка может опускать строки, зависящие от функций.

| Входной слой | Зарегистрированные ID проходов | Автоматический вывод | Специализированные элементы управления или предварительное условие |
|---|---|---|---|
| Архивы, установщики, прошивки, тома | `binfmt.container` | Извлечённые дочерние элементы, рекурсивно передаваемые в языковые/нативные проходы | `extract` для отчётов об элементах и явная опция raw-key для LUKS1 |
| PyInstaller | `pyinstaller.extract` | Встроенные элементы и дочерние `.pyc` | `pyinstaller extract` для опций, специфичных для архива |
| Python-фризеры | `pyfreeze.extract`, `nuitka.extract` | Извлечённые полезные нагрузки или поддерживаемая структура скомпилированного пакета | Экспериментальный `pyfreeze`; вариант Nuitka определяет, что сохраняется |
| Защищённый Python | `pyarmor.unpack`, `sourcedefender.decrypt` | Доступный открытый текст/байткод, метаданные или отчёты о границах ключей | Соответствующие runtime/ключевые материалы; выделенный режим PyArmor и опции строгости |
| Исходный код и байткод Python | `py.deob`, `py.decompile`, `py.disasm` | Очищенный исходный код, декомпилированный исходный код или трассировка инструкций | `py decompile --emit source,disasm,ast`; для проверок рекомпиляции требуется соответствующий интерпретатор |
| Pickle | `pickle.classify` | Символический анализ и классификация | `pickle` для отдельных операций инспекции/реконструкции |
| JavaScript | `js.deob` | Поддерживаемая деобфускация, восстановление модулей webpack/Vite, обработка Node SEA/bytenode | `js unbundle` предоставляет более широкий набор бандлеров; source maps и опции переименования являются прямыми элементами управления |
| WebAssembly | `wasm.deob` | Восстановленный или поднятый WAT плюс sidecar-файлы обнаружения, сводки и восстановления | `wasm decompile --target` выбирает Rust, TypeScript, C, WAT или JSON |
| Electron / Tauri | `webview.carve` | Встроенные элементы фронтенда | `webview` также поддерживает Wails; автоматическое восстановление Wails использует `go.classify` |
| PHP / Phar | `php.peel` | Очищенный исходный код, вывод `op_array`, дочерние элементы архива, отчёты об остатках/ключах | Ключи и IV должны быть статически доступны для зашифрованных слоёв |
| JVM / DEX | `jvm.classify` | Исходный код Java, манифесты протектора и восстановления, дочерние элементы классов/архивов | `jvm`/`apk` для маппинга, сигнатур и опциональных внешних бэкендов |
| .NET | `dotnet.classify` | C# и анализ, восстановленные константы/ресурсы/CIL или метаданные Native AOT | `dotnet` для других форматов исходного кода и установленных бэкендов рендеринга |
| Мобильные пакеты / байткод | `mobile.classify` | Извлечение runtime/элементов, подъём Hermes, исходный код Dart kernel или отчёты AOT | `hermes`, `flutter`, `mobile` для элементов управления, специфичных для формата |
| Lua | `lua.deob` | Восстановленный Lua и sidecar-файлы диалекта/точности | `lua` для явных элементов управления семейством и выводом |
| Shell / Office / PDF | `shell.deob` | Очищенные скрипты, исходный код макросов/p-код, отчёты XLM и документов | `shell` для операций, специфичных для документов |
| Ruby | `ruby.classify` | Анализ плюс восстановленный исходный код YARV/mruby, где доступно | `ruby` для отчётов, специфичных для варианта; классификация JRuby/TruffleRuby не является восстановлением исходного кода Ruby |
| BEAM / EZ | `beam.classify` | Erlang/Elixir/Core Erlang, дизассемблирование, дочерние элементы архива | Сохранившиеся отладочные чанки определяют точность исходного кода |
| SWF / ABC | `as3.classify` | Структура ABC, листинги инструкций, псевдокод AS3 | Именованные коммерческие обфускаторы остаются только для обнаружения |
| Go | `go.classify` | Символы, типы, анализ garble и элементы встроенной файловой системы | `go` для DWARF, BuildInfo и других специализированных отчётов |
| Swift / Objective-C | `swift-objc.classify` | Метаданные, универсальные срезы и dylib из общего кеша | Могут потребоваться соседние файлы подкеша/символов; прямые элементы управления `swift`/`macho` |
| Нативные упаковщики | `native.packer-unpack` | Доступный распакованный образ или встроенный модуль, символы, сигнатуры, отчёты восстановления | Распаковку выполняет только реализованный диспетчер упаковщиков; коммерческие VM-уровни могут остановиться на обнаружении |
| Нативные образы | `native.image-classify` | Идентификация, символы, сигнатуры, находки и ограниченный отчёт псевдо-исходного кода x86-64/AArch64 | `native decompile` выбирает полную команду вывода исходного кода; пути исходного кода ARM32/MIPS32 являются прямыми |
| Windows / OS/2 NE | `native.ne-structure` | Сегменты, точки входа, импорты и ресурсы | Структурное восстановление, а не декомпиляция исходного кода |
| Perl / R / Tcl / Haxe / WSH | `scriptlang.classify` | Отчёты по языку, восстановленные структуры и поддерживаемые дочерние артефакты | Библиотечные API для каждого формата предоставляют более тонкие операции |
| Nim / Zig / Crystal / D | `nativelang.classify` | Языковые отпечатки, символы и частичная нативная структура | Для классификации требуется достаточное количество сохранившихся языковых маркеров |

Например, распознанное приложение PyInstaller может пройти через `pyinstaller.extract` → `pyarmor.unpack` → `py.decompile`; APK — через извлечение элементов → DEX → Java; а упакованный нативный образ — через распаковку → анализ языка или образа. Каждая стрелка зависит от того, что фактически даёт этот конкретный слой.```sh
disrobe passes
disrobe catalog python --json
disrobe auto input-directory/ --out recovered/ --batch-max-depth 6 --capture-stages
disrobe chain module.pyc --chain py.decompile --out python-source/

scan, frisk, taint, vulnmatch, явный выбор источника-цели, воспроизведение маппинга и опциональный вызов внешнего бэкенда остаются отдельными операциями. Реестр проходов · Выбор цепочки и компоновка вывода.

Анализ и экспорт результата

Карта возможностей охватывает группы команд и интеграции. Её машиночитаемая инвентаризация связывает исходный код, тесты, документацию, статус поддержки и демонстрации. Справочник CLI охватывает вложенные команды; глобальные флаги описывают общие опции. Используйте disrobe <command> --help для интерфейса вашей установленной сборки.

Команды проекта и сервиса также проиндексированы там: serve, plugin, init, config, catalog, passes, doctor, install, install-deps, self-update, completions, man, explain и bug-report. Используйте doctor для проверки от 46 до 51 внешних инструментов в зависимости от платформы и выявления отсутствующих опциональных бэкендов.

Используйте то же восстановление в своём рабочем процессе

Сравнение инструментов

Таблица сопоставляет каждую задачу восстановления с командами Disrobe и связанными инструментами. Установленные декомпиляторы и экспортированные артефакты обеспечивают точки интеграции, показанные ниже.

Инвентаризация сравнений перечисляет оставшиеся сравнения на общих входах. Опции бэкендов описаны в установке и связанных языковых руководствах выше.

Измеренные сравнения инструментов

Измерения используют закреплённые входы, версии инструментов и правила оценки, указанные ниже. Подсчёты DEX и JAR измеряют компиляцию регионов, выдаваемых каждым инструментом. Эти популяции различаются, поэтому их подсчёты не ранжируют качество восстановления. Полнота секретов APK использует одну и ту же эталонную истину из восьми токенов.

Входы, сырые результаты инструментов и команды воспроизведения.

Передайте Ghidra восстановленный исполняемый файл

Тот же анализ Ghidra 12.1.2 видит другой код после того, как Disrobe экспортирует упакованный исполняемый файл как пересобранный PE. Эти локальные снимки используют реальные безвредные упакованные фикстуры и фиксируют как увеличения, так и уменьшения. Столбцы функций/инструкций/строк взяты из снимка анализа на девяти входах; завершённые рендеринги C взяты из отдельного снимка декомпилятора на шести входах. Завершённый рендеринг — это непустой вывод, а не оценка корректности исходного кода.

Подсчёты kkrunchy уменьшаются. Больше обнаруженных функций не обязательно означает больше корректных функций, и эти подсчёты анализа не заменяют побайтовое сравнение. Прочитайте снимок анализа, снимок декомпилятора и отдельные измерения нативного побайтового восстановления.

Изучите доказательства

Индекс доказательств связывает измерения восстановления с их фикстурами, методами сравнения, командами и результатами.

Результаты различают побайтовое восстановление, принятие компилятором и поведенческие проверки. Принятие компилятором и подсчёты покрытия не являются оценками эквивалентности.

Детали оценки JADX/CFR и команды воспроизведения

Восстановление, проверенное по независимым эталонам

Эти проверки измеряют Disrobe относительно оригинального артефакта, компилятора, интерпретатора или размеченного корпуса. Они отличаются от сравнения двух декомпиляторов. Каждый связанный результат фиксирует входную популяцию, предварительные условия и команду воспроизведения.

Подсчёты покрытия и их меньшие популяции корректности| Поверхность | Количество | Что это устанавливает | |---|---|---| | PyArmor | 72 / 72 именованных обёрток v8/v9 default-trial | Статическая расшифровка и полный разбор корневого `CodeObject`, без внешнего сравнения корректности | | Android, три реальных APK | 83662 / 83943 методов понижено, локально | Самостоятельно заявленное покрытие тел. Отдельная популяция верификатора — 2988 из 2998 тел, представленных в изолированных носителях | | Инвентарь инструкций Wasm | 1034 из 1034 инструкций | Внешний знаменатель `wasm-tools` и повторно собираемый WAT; числитель понижения подсчитан самостоятельно | | Таблица инструкций Luau | 86 из 88 записей поднято | Объявленная таблица Disrobe; `BREAK` и `NEWCLASSMEMBER` остаются декодированными, но неразрешёнными | | Символы Swift | Зафиксированная популяция символов отображается в закреплённые строки | Согласованность регрессии, без обязательного внешнего сравнения демаглера | | Уплощение OLLVM | 9 достигнутых состояний из 9 выведенных состояний | Покрытие состояний диспетчера по двум зафиксированным функциям; оба счётчика выведены в процессе | | Смешанная булева арифметика | 316 записей; эталонный прогон ответил на 247 и отказался от 69; внешний решатель доказал 236 ответов и не опроверг ни одного | Восстановление в рамках бюджета и отложенные оригиналы; записи без ответа или недоказанные не становятся результатами, доказанными решателем | | Контейнеры | 42 обобщённых маршрута записывают байты элементов | Проработанная широта в пределах 103 обнаруженных форматов; LUKS1 имеет собственное сравнение открытого текста |

Полные записи доказательств описывают каждую популяцию и правило оценки.

Метки на графиках используют strong для независимого эталона корректности, recompile-only для принятия компилятором и coverage-self-reported для собственных счётчиков покрытия Disrobe. Метод сравнения и популяция определяют область применения каждого результата.

Просмотрите результаты, сравнения инструментов и предварительные условия воспроизведения для отдельных измерений.

Знайте ограничения

  • Скомпилированный вывод теряет информацию. Исходные комментарии, форматирование, имена и часть информации о типах могут отсутствовать.
  • Распознавание семейства шире, чем восстановление. Совпадение с каталогом или успешный парсер может сосуществовать с частичной эмиссией исходного кода. Читайте уровень семейства и фактический результат.
  • Нативное восстановление зависит от архитектуры и выходного языка. Руководство по нативному коду перечисляет поддерживаемые пути и их тесты.
  • Обнаружение коммерческих VM-протекторов не является общим обещанием восстановления исходного кода. Внутренние помощники и артефакты защищённых секций не устанавливают полный путь восстановления CLI. См. нативную распаковку.
  • Отсутствующие ключи остаются отсутствующими. Ключи, полученные во время выполнения, и отсутствующие seed-значения хеширования имён не могут быть выведены из неподдерживаемого артефакта. Руководства по Python, PHP и контейнерам указывают границы, специфичные для формата.
  • Внешние бэкенды имеют собственные требования. Некоторые команды могут выбирать установленные инструменты через --backend auto. Проверьте справку команды и руководство по установке перед выбором бэкенда.
  • Анализ по умолчанию использует статическое восстановление. Это не делает недоверенный ввод безвредным. Ограничения ресурсов, явно выбранные динамические операции и границы внешних процессов описаны в безопасности форензики.

Понимание конвейера

Промежуточные представления Disrobe, от байтов через структуру программы к исходному коду

Chain runner соединяет проходы с единственной целью через общие артефакты и промежуточные представления. Проход вносит тот вывод, который он может обосновать; нижестоящие потребители сохраняют происхождение и сообщают о неподдерживаемых границах. Изучите архитектуру, модель проходов, лестницу IR и chain runner.

Документация и вклад

Начните с документации, быстрого старта и руководства по результатам. Используйте disrobe explain <code> для поиска диагностики. Для изменений в проекте прочитайте руководство по внесению вклада и тесты и доказательства соответствующей функции.

Модель угроз описывает границы доверия и обработку ввода. Сообщайте о проблемах безопасности через SECURITY.md. LEGAL.md описывает юридические соображения проекта; разрешение на анализ артефакта зависит от ваших обстоятельств.

Лицензия

License: Disrobe Source-Available

Каждая версия Disrobe является проприетарной и доступной в исходном виде в соответствии с Disrobe Source-Available License, Version 1.1, которая заменяет Elastic License 2.0 и Version 1.0 для всех версий и отзывает все более ранние разрешения, как указано в уведомлении о перелицензировании.

Личные хобби-проекты, личное обучение и неоплачиваемые независимые исследования безопасности отдельными лицами, некоммерческое образование и исследования, а также добросовестная журналистика бесплатны, как определено в лицензии.

Любое использование компанией или для компании требует платной лицензии. См. коммерческое лицензирование.

Обязательное указание авторства: В этой работе использовался Disrobe, созданный 1-3-7: https://github.com/1-3-7/disrobe

Форки, кроме форков для внесения вклада, повторная публикация, ребрендинг, перепродажа, хостинг и конкурирующая разработка запрещены. Программное обеспечение предоставляется как есть, на риск пользователя.

См. атрибуцию, условия для участников, сводку и уведомления третьих сторон.

Copyright (c) 2025-2026 1-3-7. Все права защищены.

Более ранние коммиты разработки были объединены в единую базовую версию в рамках обновления документации и визуального оформления.

Скачать инструмент
ЗадачаКомандыВывод или следующий шаг
Поиск индикаторов, секретов и статических находокscan, frisk, strings, ioc, indicators, behaviorНаходки и смещения
Изучение функций, потоков и поведенияquery, capabilities, taint, vulnmatchЗапрашиваемый IR, маппинги ATT&CK/MBC и отчёты source-to-sink
Сохранение аннотаций и структурированных артефактовannot, rename, envelope, verify, yaraКонверты артефактов и состояние аналитика
Отслеживание происхождения и сравнение запусковchain, context, status, report, diff, guard, semdiffОтчёты, хеши и различия восстановления
Сбор публичных сетевых данныхprowlЯвный сетевой сбор, отдельно от офлайн-восстановления
ИнтерфейсТочка входаРуководство
RustОбщие типы ядра и отдельные крейты проходовAPI библиотеки
PythonТипизированные привязки через import disrobeПривязки Python
HTTP, gRPC и LSPdisrobe serveСервис
Model Context Protocoldisrobe-mcp или disrobe serve --mcpИнтеграция MCP
Редакторы и инструменты анализаVS Code, IDA Pro, Ghidra, Binary NinjaИнтеграции с редакторами
GitHub ActionsДействие репозитория и вывод SARIFGitHub Action
Локальные проверки коммитовID хука disrobepre-commit
БраузерКлиентский Wasm-воркерПесочница
Контекст проекта для инструментов кодированияdisrobe init --ideМетаданные sidecar
Задача восстановленияНазванные инструментыПуть DisrobeКак выбрать или объединить их
Python-байткод в исходный кодpycdc, PyLingual, uncompyle6, decompyle3Встроенный декомпилятор CPython 1.0–3.15, восстановление вложенных code-объектов, вывод исходного кода/дизассемблирования/ASTИзучайте восстановленный исходный код, дизассемблирование и AST из встроенного декомпилятора Python
Извлечение замороженного Pythonpyinstxtractor-ng, pydecipherИзвлечение PyInstaller, Nuitka и freezer с последующим восстановлением байткодаauto может продолжить от извлечённого члена через протектор и до декомпилятора Python
PyArmorPyarmor-Static-Unpack-1shotСтатическое восстановление обёртки/рантайма, отчёты о режимах, опциональный статический лифтинг BCCПредоставьте соответствующий рантайм для восстановления данных обёртки и изучения результатов, специфичных для режима
Инспекция Picklefickling, Python pickletoolsТрассировка инструкций, символьные редукторы, классификация и реконструкция значенийИнспектируйте без выполнения редукторов; pickletools оценивает инспекцию, а CPython проверяет реконструкцию на 470 сгенерированных фикстурах
Деобфускация JavaScriptwebcrack, synchrony, REstringerobfuscator.io, JS-Confuser, поддерживаемые паттерны Jscrambler, эзотерические декодеры, восстановление констант/потока управленияИспользуйте js deob для явных опций или auto, когда JS находится внутри пакета
Разбор бандлов JS и source mapswakaru, webcrack, sourcemapperИзвлечение модулей, обработка source-map, переименование с учётом областей видимости, инспекция упакованного V8js unbundle предоставляет больше маршрутов бандлеров, чем автоматическая диспетчеризация цепочки
WebAssemblyWABT wasm-decompile, BinaryenПсевдоисходный код WAT и C/Rust/TypeScript, JSON-сводки, поддержка обращения обфускацииИзучите выбранную цель исходного кода; выполнение в wasmtime независимо проверяет восстановленное поведение ниже
Исходный код JVMCFR, Vineflower, Procyon, FernflowerНативное восстановление classfile плюс обработка протектора/строкjvm decompile записывает артефакты Disrobe вместе с выводом установленного бэкенда; CFR имеет измеренный результат компиляции ниже
Пакеты Android и DEXJADX, apktool, androguard, dex2jarВстроенное восстановление Dalvik, метаданные/подписи APK, извлечение рантайма, вывод JavaДекомпиляция DEX/APK по умолчанию использует нативный путь; бэкенд Android выбирается явно. JADX имеет измеренный этап ниже
Сборки .NETILSpy, dnSpy, dnSpyEx, de4dotВосстановление CIL плюс специфичные для протектора константы, ресурсы, тела VM и метаданные Native AOTdotnet decompile записывает вывод CIL Disrobe вместе с установленным рендерером; --backend auto выбирает ILSpy, dnSpyEx, dnSpy или de4dot
Нативная декомпиляцияGhidra, IDA, Binary NinjaВстроенный псевдо-C для x86-64 C/Rust и AArch64/ARM32/MIPS32; отчёты о восстановленных символах/типахВыберите Ghidra в headless-режиме с --backend ghidra или используйте интеграции с редакторами и экспортированные символы в интерактивной сессии анализа
Упакованные нативные исполняемые файлыupx -d, unipacker, Detect It EasyРеализованные распаковщики и ограниченная эмуляция стабов, пересобранные образы PE, встроенные модули загрузчикаЭкспортируйте восстановленные образы PE в Ghidra/IDA. Измерения Ghidra ниже сравнивают упакованные и пересобранные входы
Нативная обфускацияGhidra, IDA, Binary Ninja и скрипты деобфускацииПреобразования OLLVM/Tigress, упрощение MBA, стековые строки, нативные метаданные и отчёты восстановленияВыберите соответствующую нативную операцию/API; одного отпечатка VM-протектора недостаточно для восстановления тела
Метаданные Go и garbleGoReSym, redress, gorepclntab, метаданные модулей/типов, встроенные файлы и восстановимые литералы garblego сообщает имена/типы; native decompile отдельно обрабатывает путь исходного кода машинного кода
Swift / Objective-Cswift-demangle, class-dump, jtool2Данные классов/протоколов/селекторов рантайма, рендеринг символов, fat-срезы, dylibs общего кешаПредоставьте сохранившиеся маппинги и файлы подкеша; оригинальные имена, стёртые переименованием, требуют внешней карты
Байткод и VM Luaunluac, luadec, LuaDec51Исходный код Lua/LuaJIT/Luau плюс поддержка обфускаторов и кастомных VMIronBrew2 имеет доказательства дифференциала выполнения с реальным инструментом; обычное восстановление .luac и восстановление VM — разные операции
Байткод RubyДизассемблирование MRIИсходный код YARV и mruby, листинги опкодов, классификация freezer/AOTПерекомпиляция MRI оценивает полноту имён опкодов; эта мера не устанавливает эквивалентность выполнения
Слои PHPphp-malware-finderСнятие eval-цепочек и циклов/шифров с литеральными ключами, извлечение Phar, отчёты о конвертах энкодеровИспользуйте статические слои и доступный ключевой материал; коммерческие полезные нагрузки с ключами нативного загрузчика остаются закрытыми
PowerShell, Bash, VBAPowerDecode, инструменты FLARE, olevbaДеобфускация shell, исходный код/p-код VBA и stomping, формулы XLM, действия PDFshell размещает восстановление скриптов и находки документов рядом с остальным анализом артефактов
BEAM / ActionScriptErlang beam_disasm, RABCDAsmВосстановление debug-source/Core Erlang для BEAM и псевдокод тел методов ABCСохраняйте debug-чанки, когда они доступны; у stripped BEAM есть отдельная проверка выполнения реальным Erlang
Hermes / React Nativehermes-dec, hbctool, DroidSawИзвлечение рантайма, структура HBC, поддерживаемый лифтинг псевдо-JavaScriptПарсинг HBC охватывает v60–v96; лифтинг исходного кода имеет более узкую измеренную границу. Мост taint Hermes-to-DEX не реализован
Flutter / Dart AOTreFlutter, Darter, blutterТаблицы исходного кода Kernel, граф объявлений AOT, тела ARM64, строки, парсинг rename-mapИсходный код Kernel и метаданные AOT — разные уровни восстановления; версии снапшотов ограничивают парсинг AOT
Контейнеры и прошивкиbinwalk, unblob, 7-ZipИзвлечение зарегистрированных форматов, рекурсивная маршрутизация дочерних элементов, декодирование/карвинг прошивок, отчёты об отказах по каждому членуПередавайте извлечённые члены напрямую в языковые проходы; сравнивайте байты членов, а не считайте распознанную магию успешным извлечением
Секреты и индикаторыAPKLeaks, TruffleHog, Gitleaks, LinkFinderНаходки в восстановленном дереве/APK, смещения токенов, статические строки, отчёты о секретах и IOCСканируйте APK или восстановленное дерево; сравните APKLeaks с теми же внедрёнными секретами ниже
Идентификация формата, упаковщика, компилятораDetect It Easy, TrID, PEiD, binwalkМультисигнальная идентификация, символы, подписи и подсказки маршрутизацииИспользуйте identify/detect для выбора пути восстановления, затем изучите его фактический вывод
Возможности и taintcapa, скрипты Ghidra, JoernНаходки ATT&CK/MBC со смещениями, запросы к нормализованному IR, отчёты о потоке source-to-sinkЗапускайте сопоставление возможностей и анализ source-to-sink на восстановленных артефактах; отчёт taint включает свою тестовую популяцию Juliet
Инструмент и входРезультат DisrobeРезультат названного инструментаЧто проверяет измерение
JADX 1.5.5 · Android DEX157 / 228 выданных регионов компилируются чисто281 / 303 выданных регионов компилируются чистоЗакоммиченный EdgeCases DEX; реальный javac, компиляция полного исходного кода с последующей ограниченной изоляцией регионов, блокирующих атрибуцию; разные выданные популяции
CFR 0.152 · JVM classfile181 / 181 выданных регионов компилируются чисто152 / 166 выданных регионов компилируются чистоЗакоммиченный EdgeCases JAR; та же процедура компилятора/оценщика; разные выданные популяции
APKLeaks 2.6.3 · APK с внедрёнными секретами8 / 8 внедрённых секретов5 / 8 внедрённых секретовТочное совпадение токенов на одном и том же APK; Disrobe также находит внедрённый ключ доступа AWS secret, Basic-учётные данные и JWT
Упакованный входФункции Ghidra, упакованный → пересобранныйИнструкции, упакованный → пересобранныйСтроки, упакованный → пересобранныйЗавершённые рендеринги C, упакованный → пересобранный
UPX · Rust hello4 → 287225 → 19 06023 → 1794 → 287
ASPack · Clockres5 → 24358 → 10 54448 → 1165 → 210
ASPack · AccessEnum5 → 10173 → 5 78162 → 1955 → 101
PECompact · Clockres2 → 306148 → 14 60327 → 271 → 267
PECompact · AccessEnum2 → 186155 → 9 27852 → 532 → 186
MEW · Clockres4 → 333125 → 20 9903 → 358Не измерено
MEW · AccessEnum4 → 152125 → 9 5923 → 802Не измерено
MEW · Autologon4 → 295125 → 19 5953 → 406Не измерено
kkrunchy classic · NASM hello4 → 1149 → 103 → 44 → 1
ВходВыданные регионы DisrobeВыданные регионы названного инструментаГраница популяцииВоспроизведение
Android DEX157 / 228 выданных регионов компилируются чистоJADX 1.5.5: 281 / 303 выданных регионов компилируются чистобез кросс-инструментального ранжирования: у каждого инструмента своя популяция выданных регионовcargo run --locked -p disrobe-bench-head-to-head -- --check --only apk-jadx-cfr
JVM classfile181 / 181 выданных регионов компилируются чистоCFR 0.152: 152 / 166 выданных регионов компилируются чистобез кросс-инструментального ранжирования: у каждого инструмента своя популяция выданных регионовcargo run --locked -p disrobe-bench-head-to-head -- --check --only apk-jadx-cfr
ВосстановлениеЗафиксированный результатЭталон и ограничение
Python 3.14.5, закреплённые модули6077 из 6286 code-объектовПерекомпиляция CPython с нормализованным сравнением структуры опкодов; цели переходов, большинство операндов и дополнительные восстановленные объекты не оцениваются. Результат
Python 3.14.5, фиксированная популяция ядра17396 из 18276 code-объектов, локальное измерениеТо же нормализованное сравнение по 574 модулям; это не результат семантической эквивалентности. Результат
Устаревший Python 1.0–3.7как минимум 150 из 191 фикстур (регрессионный порог)Перекомпиляция интерпретатором соответствующей эпохи или структурные токены против оригинального исходного кода. Результат
Классификация Pickle102 / 102 классификационных фикстурСемантика pickletools. Результат
Реконструкция Pickle470 / 470 восстановленных фикстур проходят проверки равенства при повторном выполненииПовторное выполнение в CPython. Результат
Компиляция исходного кода JVM131 из 131 методов компилируютсяРеальный javac. Результат
Поведение JVM117 / 131 методов совпадают с наблюдаемым выполнениемРеальная JVM; восемь методов расходятся и шесть не запускаются изолированно. Результат
Android DEX118 / 118 классов, представленных верификаторуJVM -Xverify:all; 37 из 155 классов пропущены на этапе линковки и не оценены. Результат
.NET C#18 / 35 полных типов EdgeCases перекомпилируются автономноРеальный Roslyn csc; легальный исходный код не устанавливает эквивалентное поведение. Результат
Тела .NET VMМодель Eazfuscator: 67 / 67 инструкций; реальный KoiVM: 6 / 6 тел поднятоОтдельные эталоны оригинальной/чистой сборки; EazVM использует виртуализатор из репозитория, KoiVM использует вывод реального инструмента. Доказательства
WebAssembly57 / 57 подходящих функцийwasmtime сравнивает возвраты, ловушки и первые 4 096 байт линейной памяти на тестовых входах. Результат
BEAM без debug-чанков19 / 19 модулейПерекомпиляция Erlang/OTP 27.3.4, сравнение экспорта и вывод/статус завершения test/0. Результат
Lua IronBrew2Реальный вывод 2.7.0 standard и MAX восстанавливается до совпадающего выполненияРеальный интерпретатор Lua против оригинальных программ; одно семейство VM. Результат
Ruby YARVGreeter 100%; megafile 98.67% полноты имён опкодовПерекомпиляция MRI; мультимножественная полнота игнорирует порядок, операнды, цели ветвлений и дополнительные инструкции. Результат
Имена типов Go после strip838 из 838 имёнРеальные метаданные go1.26.3 из сравнительной сборки. Результат
Hermes HBC v968 из 8 функций, ноль операций fallbackРеальный образец hermesc с оригинальным исходным кодом и именами функций. Результат
Нативные упакованные байтыUPX, FSG, NSPack, Petite, MPRESS .text побайтово идентичны на указанных закоммиченных парах; ресурсы Yoda's Crypter побайтово идентичныОригинальные байты с выравниванием по RVA; остатки по всему образу и ресурсам сообщаются отдельно. Таблица по каждому входу
Внедрённые индикаторы6 / 6 категорий IOC представленыЗакоммиченные конечные точки, находки в манифесте, URL, IPv4, email и эталонная истина .onion. Результат
Граф вызовов MCP5 / 5 прямых рёбер, все корректно идентифицированыStripped ELF сравнивается с его отдельным нестрипленным двойником из той же цепочки инструментов. Точность, полнота
Нативный taint93 / 190 размеченных потоков восстановлено; ноль ложных срабатываний, локальное измерениеСрез NIST Juliet CWE-78 char/system, gcc 16.2.0 -O2; семь объявленных категорий потоков не имеют случаев в этом срезе. Результат