
droidsaw/droidsaw
Developer toolsЭта страница переведена автоматически. Технические детали смотрите в оригинале. Открыть оригинал
Декомпилятор Android Pure-Rust и пакет аудита безопасности. DEX → Java, Hermes → JavaScript. Кросс-слойный оттенок через мост React Native. CycloneDX SBOM + OpenVEX. CLI и MCP.
Обзор
Исполнитель: pmjv prahou. Подарок последнему магу Открытого клана. Droidsaw разбирает DEX-файл или пакет Hermes и собирает его обратно вместе байт за байтом — 5767 DEX-файлов из F-Droid, восстановленных бит-идентически в режиме сохранения, байт-код Hermes, проверенный на v84, v96, v98 и v99. Этот тест громко проваливается, когда у модели формата есть отверстие: неправильное смещение строкового стола на единицу, пропущенное требование выравнивания, забытый байт прокладки — повторно излучаемые байты расходятся, и тест говорит, где. Большинство инструментов Android RE работают на одном уровне; дроид-пила отслеживает значение JS через мост React Native в Java в качестве одного запятнанного пути. Передайте ему APK и он распаковывает контейнер, декомпилирует каждый слой и может пропускать выход через Semgrep и TruffleHog в одном проходе (аудит-режим = полный). Серверы CLI и MCP имеют общую командную поверхность. Чистая ржавчина, BSD-3-Clause. Груз извлекает ящики библиотеки droidsaw-* из crates.io и собирает все на месте.
Обзор (машинный перевод)
Исполнитель: pmjv prahou. Подарок последнему магу Открытого клана.
Droidsaw разбирает DEX-файл или пакет Hermes и собирает его обратно вместе байт за байтом — 5767 DEX-файлов из F-Droid, восстановленных бит-идентически в режиме сохранения, байт-код Hermes, проверенный на v84, v96, v98 и v99. Этот тест громко проваливается, когда у модели формата есть отверстие: неправильное смещение строкового стола на единицу, пропущенное требование выравнивания, забытый байт прокладки — повторно излучаемые байты расходятся, и тест говорит, где. Большинство инструментов Android RE работают на одном уровне; дроид-пила отслеживает значение JS через мост React Native в Java в качестве одного запятнанного пути. Передайте ему APK и он распаковывает контейнер, декомпилирует каждый слой и может пропускать выход через Semgrep и TruffleHog в одном проходе. Серверы CLI и MCP имеют общую командную поверхность. Чистая ржавчина, BSD-3-Clause.
##Установка
cargo извлекает ящики библиотеки droidsaw-* из crates.io и собирает все локально. The
Только предпосылками являются Rust toolchain (rustup) и компилятор C ([T3]/[T4]).
[Т5] и [Т6] являются факультативными [для [Т7], [Т8] или [Т9]]. Нет
Эта страница переведена автоматически. Технические детали смотрите в оригинале.
README
Показан фрагмент оригинального README. Открыть оригинал.
droidsaw
Art by pmjv_prahou. A gift to the last mage of the Open clan.
droidsaw takes a DEX file or Hermes bundle apart and puts it back together byte-for-byte — 5,767 DEX files from F-Droid recovered bit-identically under preservation mode, Hermes bytecode round-trip verified on v84, v96, v98, and v99. That test fails loudly when the format model has a hole: a string-table offset wrong by one, an alignment requirement missed, a padding byte forgotten — the re-emitted bytes diverge and the test says where. Most Android RE tooling works per-layer; droidsaw traces a JS value through the React Native bridge into Java as a single taint path. Hand it an APK and it unpacks the container, decompiles every layer, and can pipe the output through Semgrep and TruffleHog in the same pass (audit --mode=full). CLI and MCP server share one command surface. Pure Rust, BSD-3-Clause.
Install
cargo install droidsaw # the CLI
cargo install droidsaw --features mcp # also installs the droidsaw-mcp server
cargo fetches the droidsaw-* library crates from crates.io and compiles everything locally. The
only prerequisites are a Rust toolchain (rustup) and a C compiler (cc/clang).
semgrep and trufflehog are optional (for audit --mode=full, --mode=semgrep, or --mode=trufflehog); YARA is built in. No
Java/Android SDK is needed.
Installing from automation or CI? Use cargo install --locked droidsaw — it builds against the
dependency versions pinned in the publish-time lockfile, so the same release installs reproducibly.
For fleet or CI installs, prefer the cargo auditable
variant — it embeds the full crate dependency list inside the binary itself (a compressed JSON
record in a dedicated linker section), so the artifact stays auditable long after the build
environment is gone:
cargo install cargo-auditable cargo-audit # one-time tooling
cargo auditable install --locked droidsaw # binary carries its own dependency inventory
cargo audit bin $(which droidsaw) # audit the installed artifact, no manifest needed
cargo audit bin reads the embedded inventory and checks it against the RustSec advisory
database — the binary answers “what exactly is in you?” years later, with nothing but the file.
Working on droidsaw itself? Check out the
droidsawrepo and the fivedroidsaw-*library repos as siblings, then builddroidsaw/— its dev-loop[patch.crates-io]wires in the local../droidsaw-*crates instead of crates.io.
Quickstart
droidsaw info app.apk # layer summary: bytecode + manifest + signing
Установка
This server does not publish a one-line install command.
Open the repository installation guide Новичок в MCP? Начните с руководства на mcpskill.org →Конфигурация
{
"mcpServers": {
"droidsaw": {
"type": "stdio",
"command": "droidsaw-mcp",
"args": ["--allowed-tool-classes=all", "--tool-tier=full"],
"env": { "DROIDSAW_MCP_ROOT": "/path/to/your/analysis/root" }
}
}
}