工具
arkdecompiler 鸿蒙 NEXT 反编译器
面向 HarmonyOS NEXT(纯血鸿蒙)应用的反编译器,发布于 jd-opensource GitHub 组织下,可将 Panda 二进制文件(.abc 方舟字节码)还原为 ArkTS 源码。其 xabc 程序解析字节码,将其提升为方舟编译器的 Panda IR 以便分析,再通过循环、类、词法环境和模块变量的重建生成 ArkTS 语法树,最后输出为 ArkTS 代码。跨平台图形界面可基于 Electron 或 Tauri 构建,提供文件浏览、函数与符号列表、交叉引用、搜索和十六进制视图;README 链接了 2025 年和 2026 年的 Black Hat Arsenal 展示。
- 目标
- 应用
- 类别
- Android 工具
- 关联
- 基础工具
- 来源复核于
使用条件与局限
- 审阅对象为 2026-07-23 的 master 提交。README 标注已支持全部指令并完成基础图形界面,而充分覆盖官方编译器和 test262 中的边界情况仍在进行中。v0.1.0 版(2026-04-23)附带 Linux x86、macOS arm64 和 Windows x86 的 Electron 与 Tauri 图形界面构建;反编译仅支持 Linux,反汇编三个平台均可,使用图形界面前需先配置命令行工具的路径。
- xabc 的构建在 Ubuntu 22.04 上测试,需置于 OpenHarmony 方舟编译器独立构建环境中:scripts/prepare.sh 会安装 repo 工具、从 Gitee 同步 ark-standalone-build 清单、下载其预编译工具,并切换到 OpenHarmony v6.0.0.1-Release;之后须将 patches/ 中的补丁应用到 arkcompiler 的 runtime_core、ets_frontend 以及 third_party/protobuf,再用 gn 和 ninja 构建 xabc。Dockerfile 则使用 Ubuntu 20.04 和 OpenHarmony 5.1.0 版本。
- xabc 读取一个 .abc 文件,输出 ArkTS 代码和 AST 转储,默认分别为 demo.abc 和 arkdemo.ts。文档中的流程是用 OpenHarmony 的 es2abc 编译用户自己的 demo.ts,再对结果反编译;其他字节码须来自用户自己的应用包,仓库不附带任何应用或 .abc 样例。
- tests/ 收录 18 个 TypeScript 样例,涵盖类、循环、生成器、异步函数和模块等特性。autotests/scantstests.py 会编译 test262 和 OpenHarmony TypeScript 子模块中的用例,记录反编译是否正常退出、失败、崩溃或超时,并用黑名单跳过部分用例。仓库未报告通过率或语义等价结果,也没有 CI 工作流;本次审阅未构建或运行任何内容。
- 采用 Apache-2.0 许可;其构建所依赖的 OpenHarmony 组件保留各自许可证。所审来源未确立与 REA 的关联。
关于此条目
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · jd-opensource/arkdecompiler · 修订 8afb369
- xabc.cpp GitHub · jd-opensource/arkdecompiler · 修订 8afb369
- scripts/prepare.sh GitHub · jd-opensource/arkdecompiler · 修订 8afb369
- patches GitHub · jd-opensource/arkdecompiler · 修订 8afb369
- docker/Dockerfile GitHub · jd-opensource/arkdecompiler · 修订 8afb369
- build.sh GitHub · jd-opensource/arkdecompiler · 修订 8afb369
- tests GitHub · jd-opensource/arkdecompiler · 修订 8afb369
- autotests/scantstests.py GitHub · jd-opensource/arkdecompiler · 修订 8afb369
- ui GitHub · jd-opensource/arkdecompiler · 修订 8afb369
- LICENSE GitHub · jd-opensource/arkdecompiler · 修订 8afb369
- https://github.com/jd-opensource/arkdecompiler/releases/tag/v0.1.0