Tool

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.

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. No files were parsed or decompiled here, and the reviewed sources establish no REA connection.

About this entry

Type
Tool
Category
Android tools
Relationship
Foundation tool
Targets
App

Sources reviewed

The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.

Report an outdated entry Suggest a translation fix

Primary sources

  1. README.md GitHub · Yricky/abcde · Revision 62f7fc6
  2. docs/libabcde.md GitHub · Yricky/abcde · Revision 62f7fc6
  3. .github/workflows/universal-jar.yml GitHub · Yricky/abcde · Revision 62f7fc6
  4. abcdecoder/build.gradle.kts GitHub · Yricky/abcde · Revision 62f7fc6
  5. modules/abcde/build.gradle.kts GitHub · Yricky/abcde · Revision 62f7fc6
  6. modules/abcde/src/commonMain/kotlin/me/yricky/oh/abcd/decompiler GitHub · Yricky/abcde · Revision 62f7fc6
  7. modules/abcde/src/jvmTest/java/me/yricky/oh GitHub · Yricky/abcde · Revision 62f7fc6
  8. abcdecoder/src/jvmMain/kotlin/me/yricky/abcde/cli/CliFunc.kt GitHub · Yricky/abcde · Revision 62f7fc6
  9. LICENSE GitHub · Yricky/abcde · Revision 62f7fc6
  10. README.md GitHub · ohos-decompiler/abc-decompiler · Revision 427c4cd

More in Apps

All 113 entries in Apps