Repository navigation
Releases
v0.2.5
主要变化
- 增加显式类型操作数查询、字面子串匹配,以及字符串/类型完整引用集复用。
- 增加可选的分组引用和稳定游标,保留每条原始证据;旧平铺结果及匹配默认值不变。
- 增加
DROIDASC_MCP_TOOL_PROFILE=artifact:统一不可变句柄、惰性 DEX 准备及职责明确的查询工具。默认仍为legacy。 - 支持显式多模块或全部模块 AAB DEX 分析,保留模块来源,拒绝重复类,并按模块读取 Manifest/资源。
- 原生读取 DEX 041 物理容器、逻辑头和共享数据;核心查询不需要 Java/JADX。显式 Java 源码及旧 Smali 兼容路径仍保留各自的可选依赖。
- 复用已验证的私有归档哈希,减少一次准备阶段重复读取;私有副本和展开 DEX 的存储成本仍存在。
安装与验收
发布提交:87b3630769480b85349ae44c4021c8641b0c155b。
CI 40784077867 的 25 个任务全部通过:Linux/Windows、Python 3.10–3.13 的源码、同一 canonical sdist 和对应原生 wheel 每套均为 1967 项测试、零跳过;另含独立签名对照、Rust 和稳定性检查。
四个 wheel 和 Ubuntu Python 3.11 产生的 canonical sdist 均直接取自该 CI,未重打包。下载后可用 SHA256SUMS 校验。CPython 3.10 使用 cp310-cp310;3.11–3.13 使用 cp311-abi3。Linux x86-64 需要 glibc 2.34 或更新版本,Windows 为 x86-64。macOS 未验收。
本次范围另经真实 stdio/HTTP 工作流和原始 DEX 字节独立对照验证。AAB protobuf XML 解码、嵌套 split 重建仍不支持;反射/动态加载不代表完整运行时解析。高温机器上的保留性测量不作为普遍提速或全面追平竞品的声明。
从曾撤回的同号历史包升级时,使用 --force-reinstall --no-cache-dir,并校验本次资产哈希。
v0.2.4
Highlights
- Reuse complete selected method, field, outgoing-call and fuzzy-reference sets across
pages, with bounded storage, checked publication, invalidation and cleanup. Oversized
sets or unavailable cache space retain the normal scan path. - Return byte-bounded reference prefixes with exact
next_offsetcontinuations instead
of requiring an oversized-page retry.limitremains the maximum row count. - Reduce nullable output-schema validation overhead without changing accepted value types.
- Add optional compact manifest/native summaries, standalone DEX entry browsing and
exact class/name selectors in method-tracing prompts.
This is the workflow increment after consolidated v0.2.3, not the withdrawn historical
v0.2.4. Existing releases and tags are retained.
Acceptance
- Release commit:
5eddd07d5bbe362c2273938501cdda363c4f1d73. - Candidate CI:
all 25 jobs passed. - Linux and native Windows, Python 3.10/3.11/3.12/3.13:
1,490 passed per source job, zero failures, errors or skips. - All eight clean-install jobs passed 1,490 tests for each artifact: the same
canonical sdist and the matching native wheel. Packaged source identity and installed
wheel bytes were checked. Each source cell also passed seven signing-fixture variants;
both platforms passed Rust integration and stability checks. - Local source: 1,490 passed, zero skips. Fresh source and exact Linux CI-wheel
checks each verified 98,581 selected reference sites over 148 complete pages,
884,805 class/owner identities, and snapshot DEX bytes across Taobao, WeChat and
Douyin against independent original-input checks. - The initial schema assertion failure, Windows SQLite-fixture handle leak, coarse-clock
unit-test failure and separate JVM-oracle timeout/retry are preserved. The final frozen
candidate passed fresh gates; no production runtime or real benchmark timing code was
changed to accommodate those test failures.
The four native wheels and canonical sdist attached here are the exact artifacts built
and tested by this CI run, not a later local rebuild. SHA256SUMS covers all five packages.
Local acceptance receipts are under artifacts/release-024-20261027/candidate3/.
Install
CPython 3.11+ on x86-64 Linux:
python3.11 -m venv .venv
.venv/bin/python -m pip install --force-reinstall --no-cache-dir https://github.com/cnlnn/droidasc-mcp/releases/download/v0.2.4/droidasc_mcp-0.2.4-cp311-abi3-manylinux_2_34_x86_64.whlCPython 3.11+ on Windows x64 (PowerShell):
py -3.11 -m venv .venv
.\.venv\Scripts\python.exe -m pip install --force-reinstall --no-cache-dir https://github.com/cnlnn/droidasc-mcp/releases/download/v0.2.4/droidasc_mcp-0.2.4-cp311-abi3-win_amd64.whlFor Python 3.10, use python3.10 or py -3.10 and replace cp311-abi3 in the URL
with cp310-cp310. Linux wheels require glibc 2.34 or newer. The reinstall flags replace
any previously installed withdrawn same-version package. See the
README for MCP configuration.
Limits
Timing improvements are workload-specific. This release does not claim universal startup,
repeated-query or total-memory improvements, full-graph completeness, all-query accuracy or
overall competitor-workflow completion. Bounded graph checks are not full-graph proofs.
Native references describe declared DEX operands, not resolved reflection, virtual dispatch
or JNI targets. Certificate inventory does not verify cryptographic signature validity.
macOS remains unverified. Commercial APKs were read-only local inputs and are not
redistributed. This release is published on GitHub, not PyPI.
v0.2.3 - Reverse-engineering workflows and native query improvements
Highlights
- Add native DEX references, declaration and string discovery, class outlines, hierarchy,
instruction search, disassembly and bounded incoming/outgoing call graphs. - Accept exact class and method names across source, disassembly, references and call graphs.
Return full identities, reject ambiguous overloads and support exact prototype filters. - Add literal string-reference navigation, fuzzy member filters, field read/write selection,
original instruction offsets, cross-DEX provenance and global pagination. - Add immutable sessions, bounded concurrent queries, optional durable indexes,
preparation progress, compact class-owner metadata and shared read-only input mappings. - Add archive/resource browsing, structured manifests, certificate inventories, revision
comparison, redacted secret candidates, resource templates and investigation prompts. - Ship native Linux/Windows wheels for Python 3.10 and stable-ABI wheels for Python 3.11+,
with an independent Python decoder fallback and optional Rust ASC integration.
Acceptance
- Release commit:
12a4fc51ba36a64a54bc3623dc348a499f466ac9. - Candidate CI:
all 25 jobs passed. - Native Windows and Linux, Python 3.10/3.11/3.12/3.13:
1,184 passed per source job, zero failures, errors or skips. - All eight clean-install jobs passed 1,184 tests for each artifact:
the same canonical sdist and the matching native wheel. Packaged source identity
and installed wheel bytes were checked. - Both platforms passed Rust integration, stability and resource-cleanup checks.
Each source matrix cell also passed seven independent signing-fixture variants. - Local source: 1,184 passed. Fresh source and Linux CI-wheel checks each verified
all 884,805 class/owner identities and snapshot DEX bytes across Taobao, WeChat
and Douyin, plus selected real-MCP method/overload workflows against original DEX
and the pinned comparison implementation. Nine wheel call-graph cases matched the full index.
The four native wheels and canonical sdist attached here are the exact artifacts built
and tested by this CI run, not a later local rebuild. SHA256SUMS covers all five packages.
Install
CPython 3.11+ on x86-64 Linux:
python3.11 -m venv .venv
.venv/bin/python -m pip install --force-reinstall --no-cache-dir https://github.com/cnlnn/droidasc-mcp/releases/download/v0.2.3/droidasc_mcp-0.2.3-cp311-abi3-manylinux_2_34_x86_64.whlCPython 3.11+ on Windows x64 (PowerShell):
py -3.11 -m venv .venv
.\.venv\Scripts\python.exe -m pip install --force-reinstall --no-cache-dir https://github.com/cnlnn/droidasc-mcp/releases/download/v0.2.3/droidasc_mcp-0.2.3-cp311-abi3-win_amd64.whlFor Python 3.10, use python3.10 or py -3.10 and replace cp311-abi3 in the URL
with cp310-cp310. Linux wheels require glibc 2.34 or newer.
The reinstall flags replace any previously installed withdrawn 0.2.3-0.2.9 package.
See the README
for MCP configuration.
Limits
Native references describe declared DEX operands, not resolved reflection, virtual dispatch
or JNI targets. Certificate inventory does not verify cryptographic signature validity.
Archive inventory does not imply full split-package reconstruction or JVM decompilation.
macOS remains unverified. Commercial APKs were used locally as read-only inputs and are
not redistributed. This release is published on GitHub, not PyPI.
v0.2.2 - CLI query boundary fixes
Fixes
- Treat option-shaped reference queries as query data, not CLI flags. Bind class/prefix
option values and terminate option parsing before reference values, preventing output/help
flags from changing CLI behavior or overwriting an unrelated file. - Normalize exact method/field class names consistently, including default-package names
such asLoginand their Dalvik formLLogin;. Fuzzy class patterns remain unchanged. - Lock development and CI to Droid ASC
0.1.2.post2. The declared minimum engine remains
0.1.1.post1and was also rechecked in a clean Linux wheel environment. - Add permanent boundary and invalid-regex regressions, an original
LoginAPK fixture,
and stdio/HTTP checks for sentinel preservation, query equivalence, and session recovery. - Start cancellation timing after MCP initialization; worker cleanup deadlines are unchanged.
Acceptance
- Release commit:
0d5561059bd26c6d67b2253cae7f544605658a81. - Release-tag CI
and main CI: all 14 jobs passed. - Native Windows and Linux, Python 3.10/3.11/3.12/3.13: 98 passed per job, zero skips.
- Clean sdist and wheel installation: 98 passed for each artifact on each OS.
Both OSes also passed two-worker stability and process/resource cleanup checks. - Local current-engine source and minimum-engine wheel: 98 passed each, zero skips.
- Original defect probes, negative cases, and large-APK comparisons: 18 passed,
including 24 reference-query comparisons across WeChat, Taobao, and Douyin over stdio/HTTP. - Three-APK stability, 300 seconds and two workers: 1,020 uncached metadata/class-list
operations, zero errors, zero remaining child processes, file descriptors 5 to 5,
and final host RSS growth of 745,472 bytes. This is not a transport throughput benchmark.
The attached wheel and sdist are the exact artifacts built and tested by release-tag CI,
not a subsequent local rebuild. SHA256SUMS covers both files.
Install
python -m pip install https://github.com/cnlnn/droidasc-mcp/releases/download/v0.2.2/droidasc_mcp-0.2.2-py3-none-any.whlBoundaries
ASC's matching semantics are unchanged: string/type queries accept regular expressions,
and invalid patterns return tool errors. The exact query value --gui remains explicitly
rejected because the upstream CLI reserves it before argument parsing. Reference totals
count physical CLI output lines, not independently verified semantic references.
Windows/Linux and local single APKs are covered. macOS, complete split-APK composition,
AAB/XAPK, hostile-sample isolation, and multi-day unattended reliability are not claimed.
Commercial APKs were used locally as read-only base.apk inputs and are not redistributed.
This release is published on GitHub, not PyPI.
v0.2.1 - Large-APK validation and aggregate memory enforcement
Why this patch exists
The first broad corpus used varied frameworks but did not meaningfully exercise Droid ASC's
large-APK path. This patch adds validation against device-installed WeChat, Taobao, and Douyin
base APKs and fixes the aggregate-memory gap that the larger workload exposed.
Changes
- Raise the default worker-tree budget from 1 GiB to 2 GiB.
- Keep the inherited POSIX per-process
RLIMIT_ASand add a 50 ms aggregate process-tree RSS
watchdog. The complete process group is terminated if it crosses the configured budget. - Keep Windows' kernel-enforced aggregate Job Object memory limit.
- Make
psutil>=7,<8a direct runtime dependency for cross-platform tree accounting. - Update corpus/stability tooling and documentation with the large-device results.
Large-APK acceptance
The APKs were pulled read-only from an Android 16 device. No application/account data or split
APK was accessed, and none of the APKs is included in this release.
| APK | Size | DEX | Native libraries | Classes | Six operations |
|---|---|---|---|---|---|
| Douyin 39.1.0 | 364,994,058 bytes | 53 | 276 | 551,538 | Passed |
| WeChat 8.0.74 | 261,152,116 bytes | 16 | 204 | 233,555 | Passed |
| Taobao 10.62.0 | 91,402,818 bytes | 12 | 138 | 99,712 | Passed |
- Peak sequential worker-tree RSS: 1,257,508,864 bytes.
- Peak individual worker RSS: 367,116,288 bytes.
- Peak MCP host RSS: 128,929,792 bytes.
- A deliberate Douyin run under a 1 GiB aggregate budget was rejected with the expected explicit
memory-limit error; the 2 GiB default completed. - A 300-second, two-worker run over the three APKs completed 1,400 uncached operations with zero
failures, no file-descriptor growth, and no remaining child process.
Cross-platform acceptance
- Commit:
609969b9c7d5aa227822059d8dd3ab35182fb2f2. - Release-tag CI.
- Linux and native Windows, Python 3.10/3.11/3.12/3.13: 63 passed per job, zero skips.
- Source and wheel installation suites pass on both operating systems. Native stability jobs run
two concurrent workers and reject errors, resource growth, or remaining child processes.
Install
python -m pip install https://github.com/cnlnn/droidasc-mcp/releases/download/v0.2.1/droidasc_mcp-0.2.1-py3-none-any.whlLimits
macOS remains unverified. The POSIX aggregate RSS control is a sampled watchdog and can briefly
overshoot between samples; the inherited per-process address-space limit remains kernel-enforced.
The commercial validation used base.apk only and does not redistribute the tested files. This
release is published on GitHub, not PyPI.
v0.2.0 - Cancellation, worker limits, and stability validation
Highlights
- MCP request cancellation now reaches queue waits, shared-snapshot waits, and active Droid ASC
workers. The supervised process tree is cleaned up and the same MCP session remains usable. - Workers have a configurable 1 GiB memory ceiling through
DROIDASC_MCP_MAX_WORKER_MEMORY_BYTES. Windows enforces aggregate Job Object memory; POSIX
applies an inherited per-processRLIMIT_ASbefore importing Droid ASC. - New repeatable corpus and concurrent stability commands are included. GitHub Actions runs the
stability gate on native Linux and Windows in addition to the Python 3.10-3.13 matrix.
Acceptance
- Commit:
b8815631900a9c5178326f61a35139aed54574b3. - Release-tag CI.
- Linux and native Windows, Python 3.10/3.11/3.12/3.13: 62 passed per job, zero skips.
- Both platforms pass the suite after source-package installation and again after wheel
installation on Python 3.13. The same attached distributions are used on both platforms. - Native memory-limit tests exceed a 96 MiB worker ceiling and then prove recovery. Real MCP
cancellation stops an in-flight worker and successfully reuses the session. - Native Linux and Windows stability jobs run two concurrent workers for 20 seconds, require
bounded host-resource growth, and reject any remaining child process. - A separate 300-second Linux run over four ADB-pulled open-source APKs completed 9,204 worker
operations with zero errors, no descriptor growth, and no remaining child process. - The four-APK corpus covers a 113 MB APK, five DEX files, Kotlin, Flutter/obfuscated names, and
native libraries. All six MCP operations succeeded on every base APK.
Install
Requires Python 3.10 or newer. Inside a virtual environment:
python -m pip install https://github.com/cnlnn/droidasc-mcp/releases/download/v0.2.0/droidasc_mcp-0.2.0-py3-none-any.whlSee English setup or
Chinese setup for platform-specific
commands and MCP configuration.
Limits
macOS remains unverified. POSIX memory enforcement is per process rather than an aggregate
process-tree RSS cap. Split-delivered apps were validated through base.apk; ABI/resource splits
were not part of the corpus. Pagination snapshots are not immutable content-addressed evidence,
and reference parsing remains best-effort for CLI text containing embedded newlines. This release
is published on GitHub, not PyPI.
v0.1.2 - Native Windows supervision and cross-platform acceptance
Highlights
- Native Windows worker-tree supervision with kill-on-close Job Objects. A startup handshake
prevents the target CLI from running before assignment; failed setup stops the waiting worker. - Regression coverage for orphaned children, grandchildren, successful-operation cleanup,
reader failures, output limits, startup failures, and repeated-operation resource release. - An original source-built Android fixture exercises all six MCP tools over stdio and loopback
HTTP, including manifest decoding and references across two DEX files. - Version-pinned Linux and PowerShell installation instructions in both READMEs.
Acceptance
- Commit:
335d2631efa0ce217540b3f0e35f50e2eb4d2a4a. - Release-tag CI.
- Linux and native Windows, Python 3.10/3.11/3.12/3.13: 57 passed per job, zero skips.
- Both platforms also pass all 57 tests after source-package installation and again after wheel
installation on Python 3.13. Strict CI rejects any skipped tests. - The attached wheel and source archive are the exact
python-distributionsartifacts from
that tag run, validated on both operating systems without a post-test rebuild. SHA256SUMScovers both Python distribution files. The acceptance APK contains no private data
and is not included in either distribution.
Install
Requires Python 3.10 or newer. Inside a virtual environment:
python -m pip install https://github.com/cnlnn/droidasc-mcp/releases/download/v0.1.2/droidasc_mcp-0.1.2-py3-none-any.whlSee English setup or
Chinese setup for platform-specific
commands and MCP configuration. Windows automatically installs pywin32==312.
Limits
macOS is unverified. Client cancellation does not immediately terminate an active worker, and
there is no hard worker-memory limit. The small Java fixture does not establish compatibility
with every obfuscated, large, Kotlin, or native-code APK. This release is published on GitHub,
not PyPI. Existing v0.1.1 assets are unchanged.
v0.1.1 - Supervision and pagination hardening
Fix late stream-overflow and reader-error handling, POSIX process-group cleanup, and class-name normalization. Cache decoded snapshots with memory accounting, coalesce identical queries, allow independent queries to run concurrently, and return next_offset. Include complete source-distribution fixtures and documentation. Local real-APK stdio/HTTP acceptance: 41 passed. CI: Python 3.10-3.13 and isolated sdist/wheel checks passed (39 passed, 2 optional APK checks skipped per package run). Linux is the validated platform. Immediate cancellation, Windows cleanup, and hard whole-process memory limits remain unsupported or unverified. See CHANGELOG.md and docs/VALIDATION.md for details. APK samples and local evidence logs are not included.