鸿蒙APP Hook尝试与成功demo

最近打算研究一下纯血鸿蒙(Harmony OS Next)的安全
选择了从Hook这个地方切入,因为只有Hook了才能改变程序的行为。
但是鸿蒙这系统是官方完全不给Root,连模拟器都不给。找半天才在网上找到一个Root了的模拟器,这才满足了Hook的先决条件...

然后就是鞭策AI探索和写Hook代码,原本很繁琐的汇编代码编写都由AI代劳了,所以开发速度很快。
经过四天四夜AI猛干,终于是完成了位置API的ArkTS,NAPI,Native三个层的Hook

技术方案大概是这样:

Native层:

调用链: libentry.so → PLT stub (被修改) → hook trampoline → 调用原函数 → 覆写 lat/lon → ret

NAPI层:

调用链: JS 引擎调用 NativeGetCurrentLocation → 入口被覆写 → fake_getLocation (纯汇编) → 构造伪造坐标 → 返回 Promisefake_getLocation是纯汇编调用一堆NAPI来做出一个假的获取位置函数

ArkTS层:

注入链: ptrace → StartDebugForSocketpair → WebSocket → CDP Debugger.pause → callFunctionOn(.abc) 调用注入的JS函数(编译为.abc注入)→ monkey-patch requireNapi这里启动CDP Debugger里面有很多细节,不过总的来说就是PLT劫持启动

代码&详细方法见

https://github.com/revalue-o/HarmonyOS-Next-Hook-demo

免责声明

本项目仅供安全研究和学习用途。Hook 技术的使用应遵守相关法律法规,不得用于非法目的。

posted @ 2026-04-16 17:02  revalue  阅读(88)  评论(0)    收藏  举报