2024年6月,DARKNAVY在《「AVSS研报」原生Android及鸿蒙黑灰产对抗能力初评-应用篇》里预告了自研的HarmonyOS NEXT原生应用反编译器发布,经过近一年的优化与实战验证,今天反编译器 .abcD (方舟字节码文件 .abc Decompiler)发布试用。
随着HarmonyOS NEXT纯血鸿蒙操作系统的快速演进,鸿蒙生态对原生应用分析能力的需求也不断增加。由于鸿蒙开发语言ArkTS采用全新的编译器、指令集、文件格式和运行时,过往的程序分析工具全面失效。
因此,2024年我们开始构建HarmonyOS NEXT原生应用反编译器,以辅助鸿蒙生态安全研究人员快速高效地进行风险评估。
欢迎在线试用https://abcd.darknavy.org
目前 .abcD 反编译器已具备较完善的处理能力,能够为应用的逆向分析提供坚实可靠的支持,且已在大量实际分析场景中得到了充分验证。下图即是DARKNAVY利用自研的应用解密技术和 .abcD 反编译器,对鸿蒙应用市场内最新版本“小艺”(发布日期 2025-04-21)的反编译结果:
“小艺”的AbilityStage反编译结果示例
在实战验证 .abcD 反编译器的过程中,我们也发现了许多有趣的问题,下面以HwMapKit 华为地图服务为例说明。
HwMapKit应用中的MapService.hap包含 OfflineDataServiceAbility,负责管理离线地图数据。在系统版本5.0.0.150 SP8中,该ServiceAbility的RPC接口没有对调用者做任何权限校验,普通三方应用都可未授权访问。
其中的一个RPC功能是COMMAND_JS_BRIDGE
,如下图所示,该功能会接收调用者可控的字符串参数作为JSON解析,并将调用者可控的moduleName字段拼接到import函数的参数中:
![HarmonyOS NEXT鸿蒙应用反编译器 .abcD 发布试用 HarmonyOS NEXT鸿蒙应用反编译器 .abcD 发布试用]()
COMMAND_JS_BRIDGE
,如下图所示,该功能会接收调用者可控的字符串参数作为JSON解析,并将调用者可控的moduleName字段拼接到import函数的参数中:
之后根据同样为调用者可控的className、methodName、params字段在导入的模块中创建任意类实例、调用其任意方法,且参数可控。
![HarmonyOS NEXT鸿蒙应用反编译器 .abcD 发布试用 HarmonyOS NEXT鸿蒙应用反编译器 .abcD 发布试用]()
用代码来描述这一强大的漏洞原语就是:
new (await import('../../jsbrige/module/' + moduleName))[className]()[methodName](...params)
经测试,moduleName可以路径穿越从而导入其它路径下的模块。目前,最新版本的HwMapKit应用已对RPC接口添加了权限校验:
![HarmonyOS NEXT鸿蒙应用反编译器 .abcD 发布试用 HarmonyOS NEXT鸿蒙应用反编译器 .abcD 发布试用]()
生态安全需要开发者的共同参与。DARKNAVY发布 .abcD ,期望能够为鸿蒙开发者提供一台「代码显微镜」,通过精准的反编译支持,让应用在逆向工程视角下也能经得起检验——这或许微小,但终将推动鸿蒙生态安全基线的持续进化与提升。
![HarmonyOS NEXT鸿蒙应用反编译器 .abcD 发布试用 HarmonyOS NEXT鸿蒙应用反编译器 .abcD 发布试用]()
new (await import('../../jsbrige/module/' + moduleName))[className]()[methodName](...params)
点击阅读原文,立即试用
⬇️
原文始发于微信公众号(DARKNAVY):HarmonyOS NEXT鸿蒙应用反编译器 .abcD 发布试用
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论