首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >android hook介绍

android hook介绍

作者头像
李小白是一只喵
发布于 2021-02-04 10:32:31
发布于 2021-02-04 10:32:31
1.1K0
举报
文章被收录于专栏:算法微时光算法微时光

​

image.png

目录

第一章:android hook介绍

第二章:hook之替换View.OnClickListener

hook技术

Hook 又叫“钩子”,它可以在事件传送的过程中截获并监控事件的传输,将自身的代码与系统方法进行融入。

这样当这些方法被调用时,也就可以执行我们自己的代码,这也是面向切面编程的思想(AOP)。

常见Hook框架

  • Xposed 通过替换 /system/bin/app_process 程序控制 Zygote 进程,使得 app_process 在启动过程中会加载 XposedBridge.jar 这个 Jar 包,从而完成对 Zygote 进程及其创建的 Dalvik 虚拟机的劫持。 Xposed 在开机的时候完成对所有的 Hook Function 的劫持,在原 Function 执行的前后加上自定义代码。
  • Cydia Substrate Cydia Substrate 框架为苹果用户提供了越狱相关的服务框架,当然也推出了 Android 版 。 Cydia Substrate 是一个代码修改平台,它可以修改任何进程的代码。不管是用 Java 还是 C/C++(native代码)编写的,而 Xposed 只支持 Hook app_process 中的 Java 函数。
  • Legend Legend 是 Android 免 Root 环境下的一个 Apk Hook 框架,该框架代码设计简洁,通用性高,适合逆向工程时一些 Hook 场景。 大部分的功能都放到了 Java 层,这样的兼容性就非常好。

Hook需要的技术

Hook实施

尽量静态变量和单例,因为一旦创建对象,它们不容易变化,非常容易定位。

实现流程:

  1. 寻找 Hook 点,原则是尽量静态变量或者单例对象,尽量 Hook public 的对象和静态方法。
  2. 选择合适的代理方式,如果是接口可以用动态代理。
  3. 偷梁换柱——用代理对象替换原始对象。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 目录
  • hook技术
  • 常见Hook框架
  • Hook需要的技术
  • Hook实施
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档