# ABCDE

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

- Type: Tool
- Targets: App
- Category: Android tools
- Relationship: Foundation tool
- Sources reviewed: 2026-10-20
- Added to the catalog: 2026-11-02
- Original resource: <https://github.com/Yricky/abcde>
- Primary source: <https://github.com/Yricky/abcde/blob/62f7fc6a0d455d478db1bf3bcb61f2b79d5a473a/README.md>
- Catalog page: <https://awesomerea.org/resources/abcde/>
- Record JSON: <https://awesomerea.org/resources/abcde/record.json>
- Chinese version: [简体中文](https://awesomerea.org/zh/resources/abcde/index.md)

## Requirements & limits

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

## Primary sources

1. <https://github.com/Yricky/abcde/blob/62f7fc6a0d455d478db1bf3bcb61f2b79d5a473a/README.md>
2. <https://github.com/Yricky/abcde/blob/62f7fc6a0d455d478db1bf3bcb61f2b79d5a473a/docs/libabcde.md>
3. <https://github.com/Yricky/abcde/blob/62f7fc6a0d455d478db1bf3bcb61f2b79d5a473a/.github/workflows/universal-jar.yml>
4. <https://github.com/Yricky/abcde/blob/62f7fc6a0d455d478db1bf3bcb61f2b79d5a473a/abcdecoder/build.gradle.kts>
5. <https://github.com/Yricky/abcde/blob/62f7fc6a0d455d478db1bf3bcb61f2b79d5a473a/modules/abcde/build.gradle.kts>
6. <https://github.com/Yricky/abcde/tree/62f7fc6a0d455d478db1bf3bcb61f2b79d5a473a/modules/abcde/src/commonMain/kotlin/me/yricky/oh/abcd/decompiler>
7. <https://github.com/Yricky/abcde/tree/62f7fc6a0d455d478db1bf3bcb61f2b79d5a473a/modules/abcde/src/jvmTest/java/me/yricky/oh>
8. <https://github.com/Yricky/abcde/blob/62f7fc6a0d455d478db1bf3bcb61f2b79d5a473a/abcdecoder/src/jvmMain/kotlin/me/yricky/abcde/cli/CliFunc.kt>
9. <https://github.com/Yricky/abcde/blob/62f7fc6a0d455d478db1bf3bcb61f2b79d5a473a/LICENSE>
10. <https://github.com/ohos-decompiler/abc-decompiler/blob/427c4cd9f80496236a4a3548d29a6b8aaf74b8e0/README.md>

## More in Apps

- [de4js](https://awesomerea.org/resources/de4js/index.md) · Tool
- [DexKit](https://awesomerea.org/resources/dexkit/index.md) · Tool
- [bun-demincer](https://awesomerea.org/resources/bun-demincer/index.md) · Tool
- [dex-oracle](https://awesomerea.org/resources/dex-oracle/index.md) · Tool
- [arkdecompiler](https://awesomerea.org/resources/arkdecompiler/index.md) · Tool
- [JNIAnalyzer](https://awesomerea.org/resources/jnianalyzer/index.md) · Tool

## About this entry

The description was reviewed against primary sources.
Original editorial content: MIT. Linked projects, papers and assets retain their own rights and licenses.
