官方反编译工具Disassembler
官网地址:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/tool-disassembler-V5
Disassembler工具位置为:
Windows:[DevEco Studio安装目录]sdk[SDK版本]HarmonyOStoolchainsark_disasm.exe。
MAC:/Users/{USER_NAME}/HarmonyOS/M1SDK/HarmonyOS-NEXT-DP0/base/toolchains/ark_disasm
使用方法:
./ark_disasm [options] input_file output_file
./ark_disasm abc-samples-main/aes.abc test.c
反汇编后的方舟字节码文件
# source binary: test.abc // 反汇编的方舟字节码文件
.language ECMAScript
# ====================
# LITERALS // 字面量数据
00x203{0[
MODULE_REQUEST_ARRAY:{
};
]}
# ====================
# RECORDS // 模块定义数据
.record _ESConcurrentModuleRequestsAnnotation{// _开头这些都是固定的模块数据
}
.record test {// 一个js文件对应一个模块数据,包含了模块的相关信息(在方舟字节码文件中的位置,是否是commonjs ...)
u8 isCommonjs =0x0
u32 moduleRecordIdx =0x203
......
}
# ====================
# METHODS // 方法定义数据
L_ESSlotNumberAnnotation:
u32 slotNumberIdx {0x0}
.function any test.#*#show(any a0, any a1, any a2) <static> { // 此方法源码中的show方法,同时这里也说明了,它属于test模块
ldlexvar 0x0,0x0
......
}
L_ESSlotNumberAnnotation:
u32 slotNumberIdx {0x3}
.function any test.func_main_0(any a0, any a1, any a2)<static>{// 此方法是自动生成的,可以理解成整个js文件就是一个方法,方法名为func_main_0
newlexenv 0x1
......
}
# ====================
# STRING // 符号表信息
[offset:0x88, name_value:i]
使用参数--verbose,可打印偏移量等更多详细信息。
部分示例
.record _ESSlotNumberAnnotation{# offset: 0x00cd, size: 0x0026 (38) // 这里打印了模块在方舟字节码文件中具体的位置和大小
}
.record test {# offset: 0x00f3, size: 0x0098 (152) // 这里打印了模块在方舟字节码文件中具体的位置
u32 moduleRecordIdx =0x203# offset: 0x0144 // 这里打印了模块信息的位置
}
......
.function any test.#*#show(any a0, any a1, any a2) <static> { # offset: 0x0153, code offset: 0x0245 // 这里打印了方法信息具体的位置和方法中指令的具体位置
# CODE:
ldlexvar 0x0,0x0# offset: 0x0249, [IMM4_IMM4].........[0x3c 0x00] // 这里打印了每条指令的具体位置
......
}
基础反编译工具ABCDE
https://github.com/ohos-decompiler/abcde?tab=readme-ov-file jar包下载:https://github.com/Yricky/abcde/actions
在线反编译工具(反编译成js)
鸿蒙abc文件翻译为js代码:https://panda.jmp0.top/
apikey:
A2Rcq5lbQxpouRmQ
mTlVqfZvud1YH5A4
FbGSE9iUgfrRcGdi
基于jadx和ABCDE的反编译工具abc-decompiler
鸿蒙反编译工具:https://github.com/ohos-decompiler/abc-decompiler/releases/tag/helloworldx
历史文章
ARM用户福音,Android与Linux融合桌面环境OpenFDE
原文始发于微信公众号(移动安全星球):鸿蒙(HarmonyOS、OpenHarmony)逆向基础—反编译工具
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论