Skip to content

Releases

v0.2.5

Choose a tag to compare

@cnlnn cnlnn released this 28 Oct 23:26

主要变化

  • 增加显式类型操作数查询、字面子串匹配,以及字符串/类型完整引用集复用。
  • 增加可选的分组引用和稳定游标,保留每条原始证据;旧平铺结果及匹配默认值不变。
  • 增加 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

Choose a tag to compare

@cnlnn cnlnn released this 27 Oct 01:48

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_offset continuations instead
    of requiring an oversized-page retry. limit remains 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.whl

CPython 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.whl

For 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

Choose a tag to compare

@cnlnn cnlnn released this 23 Oct 11:50

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.whl

CPython 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.whl

For 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

Choose a tag to compare

@cnlnn cnlnn released this 21 Oct 06:38

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 as Login and their Dalvik form LLogin;. Fuzzy class patterns remain unchanged.
  • Lock development and CI to Droid ASC 0.1.2.post2. The declared minimum engine remains
    0.1.1.post1 and was also rechecked in a clean Linux wheel environment.
  • Add permanent boundary and invalid-regex regressions, an original Login APK 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.whl

Boundaries

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

Choose a tag to compare

@cnlnn cnlnn released this 21 Sep 01:58

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_AS and 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,<8 a 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.whl

Limits

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

Choose a tag to compare

@cnlnn cnlnn released this 21 Sep 01:33

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-process RLIMIT_AS before 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.whl

See 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

Choose a tag to compare

@cnlnn cnlnn released this 20 Sep 20:13

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-distributions artifacts from
    that tag run, validated on both operating systems without a post-test rebuild.
  • SHA256SUMS covers 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.whl

See 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

Choose a tag to compare

@cnlnn cnlnn released this 20 Sep 13:22

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.