{
  "added_at": "2026-11-02",
  "additional_evidence_urls": [
    "https://github.com/Yricky/abcde/blob/62f7fc6a0d455d478db1bf3bcb61f2b79d5a473a/docs/libabcde.md",
    "https://github.com/Yricky/abcde/blob/62f7fc6a0d455d478db1bf3bcb61f2b79d5a473a/.github/workflows/universal-jar.yml",
    "https://github.com/Yricky/abcde/blob/62f7fc6a0d455d478db1bf3bcb61f2b79d5a473a/abcdecoder/build.gradle.kts",
    "https://github.com/Yricky/abcde/blob/62f7fc6a0d455d478db1bf3bcb61f2b79d5a473a/modules/abcde/build.gradle.kts",
    "https://github.com/Yricky/abcde/tree/62f7fc6a0d455d478db1bf3bcb61f2b79d5a473a/modules/abcde/src/commonMain/kotlin/me/yricky/oh/abcd/decompiler",
    "https://github.com/Yricky/abcde/tree/62f7fc6a0d455d478db1bf3bcb61f2b79d5a473a/modules/abcde/src/jvmTest/java/me/yricky/oh",
    "https://github.com/Yricky/abcde/blob/62f7fc6a0d455d478db1bf3bcb61f2b79d5a473a/abcdecoder/src/jvmMain/kotlin/me/yricky/abcde/cli/CliFunc.kt",
    "https://github.com/Yricky/abcde/blob/62f7fc6a0d455d478db1bf3bcb61f2b79d5a473a/LICENSE",
    "https://github.com/ohos-decompiler/abc-decompiler/blob/427c4cd9f80496236a4a3548d29a6b8aaf74b8e0/README.md"
  ],
  "category": "android",
  "description_en": "Kotlin toolkit for OpenHarmony reverse engineering that parses Ark bytecode (.abc) files, the format HarmonyOS app packages carry in modules.abc, along with HAP packages and resource index (.index) files. Its Compose desktop viewer browses classes, methods, fields, literal arrays, imports and exports and disassembles methods, showing imported modules and resource references in readable form; an experimental mode translates some methods literally into JavaScript, and a CLI dumps class lists and resource indexes. The parsing core is also published as a JVM library, and the separate abc-decompiler builds on a patched fork of it.",
  "description_zh": "使用 Kotlin 编写的 OpenHarmony 逆向工具包，可解析方舟字节码（.abc）文件，即 HarmonyOS 应用包中 modules.abc 的格式，也能解析 HAP 包和资源索引（.index）文件。其基于 Compose 的桌面查看器可浏览类、方法、字段、字面量数组及导入导出信息，并反汇编方法，以可读形式显示导入模块和资源引用；实验性功能可把部分方法直译为 JavaScript，命令行则可导出类列表和资源索引。解析核心也作为 JVM 库发布，另一个项目 abc-decompiler 即基于它的补丁分支。",
  "entry_url": "https://awesomerea.org/resources/abcde/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/abcde/",
  "evidence_url": "https://github.com/Yricky/abcde/blob/62f7fc6a0d455d478db1bf3bcb61f2b79d5a473a/README.md",
  "group": "tools",
  "id": "abcde",
  "json_url": "https://awesomerea.org/resources/abcde/record.json",
  "kind": "tool",
  "markdown_url": "https://awesomerea.org/resources/abcde/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/abcde/index.md",
  "name": "ABCDE",
  "name_zh": "ABCDE OpenHarmony 逆向工具包",
  "record_type": "resource",
  "relationship": "foundation",
  "requirements": [
    "No releases or tags are published. The README points to GitHub Actions builds, but no workflow artifacts remained available at review, so the jar has to be built locally; the reviewed main commit of 2025-11-28 is also the latest push. Decompilation to JavaScript is labelled experimental: functions containing try/catch and some instructions, such as the async ones, are unsupported, and the output is a literal, unoptimized translation.",
    "Building needs JDK 17+. ./gradlew :abcdecoder:packageReleaseUberJarForCurrentOS produces a desktop uber-jar for the current OS, while CI's -Puniversal build bundles the Compose runtimes for Linux x64/arm64, Windows x64 and macOS x64/arm64; Gradle resolves dependencies through Aliyun Maven mirrors as well as Maven Central and Google. ./gradlew publishToMavenLocal publishes the core modules for use as io.github.yricky.oh:abcde-jvm, and the abclen size-report and findStr string-search examples show library use.",
    "Inputs are .abc, .hap and resources.index files from the user's own OpenHarmony or HarmonyOS app packages; the repository ships no sample apps. The committed isa.json instruction table is generated from OpenHarmony's arkcompiler_runtime_core isa.yaml, which the updateIsaDefine Gradle property fetches again from Gitee.",
    "CI only builds the universal jar. Most JUnit tests read sample .abc, .hap or resources.index files from the author's local paths or an abcPath environment variable, so only a few encoding and checksum tests run from the repository alone, and no disassembly or decompilation accuracy results are reported.",
    "Apache-2.0; the GUI bundles the JetBrains Mono font under the SIL OFL."
  ],
  "requirements_zh": [
    "项目未发布任何版本或标签。README 指向 GitHub Actions 构建产物，但审阅时已无可用的工作流产物，因此需自行在本地构建 jar；所审阅的 main 分支提交（2025-11-28）也是最近一次推送。反编译为 JavaScript 的功能标为实验性：不支持含 try/catch 的函数及部分指令（如 async 相关指令），输出为未经优化的直译代码。",
    "构建需要 JDK 17+。./gradlew :abcdecoder:packageReleaseUberJarForCurrentOS 生成适用于当前系统的桌面版 uber-jar，CI 使用 -Puniversal 构建时则打包 Linux x64/arm64、Windows x64 和 macOS x64/arm64 的 Compose 运行时；Gradle 除 Maven Central 和 Google 外，还通过阿里云 Maven 镜像解析依赖。./gradlew publishToMavenLocal 可将核心模块发布为 io.github.yricky.oh:abcde-jvm 供其他工程引用，abclen 包体积分析和 findStr 字符串查找两个示例演示了库的用法。",
    "输入为用户自有 OpenHarmony 或 HarmonyOS 应用包中的 .abc、.hap 和 resources.index 文件；仓库不附带示例应用。仓库中的 isa.json 指令表由 OpenHarmony arkcompiler_runtime_core 的 isa.yaml 生成，设置 Gradle 属性 updateIsaDefine 时会重新从 Gitee 获取。",
    "CI 只构建通用 jar。大多数 JUnit 测试从作者本机路径或 abcPath 环境变量读取示例 .abc、.hap 或 resources.index 文件，因此仅凭仓库只能运行少数编码与校验和测试，也未报告反汇编或反编译准确性结果。",
    "采用 Apache-2.0 许可；图形界面附带的 JetBrains Mono 字体采用 SIL OFL。"
  ],
  "targets": [
    "app"
  ],
  "url": "https://github.com/Yricky/abcde",
  "verification": "source-reviewed",
  "verified_at": "2026-10-20"
}
