鸿蒙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 技术的使用应遵守相关法律法规,不得用于非法目的。

浙公网安备 33010602011771号