Hook实现插件化的三个选项题,你Hook住了吗

本文介绍了Hook技术的基本概念及其在Android插件化中的应用。通过Hook,可以使代码融入目标进程中,实现API函数执行的重定向。文章详细阐述了使用Hook启动插件化apk的核心思想及具体实现步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在学习Hook技术,如果你对Hook之前有所了解,不妨做一下Hook的3个相关题目!不怎么了解也没关系,这里也给你普及一下!

什么叫Hook?

Android 操作系统中系统维护着自己的一套事件分发机制。应用程序,包括应用触发事件和后台逻辑处理,也是根据事件流程一步步地向下执行。Hook是「钩子」的意思,就是在事件传送到终点前截获并监控事件的传输,像个钩子钩上事件一样,并且能够在钩上事件时,处理一些自己特定的事件。

通过Hook, 使它能够将自身的代码「融入」被勾住(Hook)的程序的进程中,成为目标进程的一个部分。API Hook 技术是一种用于改变 API 执行结果的技术,能够将系统的 API 函数执行重定向。在 Android 系统中使用了沙箱机制,普通用户程序的进程空间都是独立的,程序的运行互不干扰。

1.Hook技术与插桩技术实现插件化下面描述的有哪些是对的[多选题]

A.插桩是通过that语法来实现加载的

B.hook是通过将插件的dex合并到宿主中的dex数组中去

C.hook 将两个apk合成一个apk文件进行加载

D. 插桩是通过ProxyActivity重写了两个方法gerResourse和getClassloader实现插件加载

2.插件中的到的Application是宿主中的Application吗?

A.是的

B 不是的

3.LoadApk中的ClassLoader对象是什么时候被赋值的

A App启动时,在Application初始化时赋值的

B Activity启动时,在Activity初始化时赋值

C Activity调用声明周期onResume方法时,被赋值

D 以上都不是

关于问题的答案,在后台回复Hook即可。

关于Hook的初步理解

关于Hook技术,一般是通过反射来创建动态代理,替换系统的API,实现自己的逻辑。

Hook

比如通过Hook,来启动插件化的apk,其核心思想,是通过反射,将系统对象替换成我们创建的代理类对象,获得这个IActivityManager对象,也是通过反射。

具体实现步骤如下:
  • 通过反射,拿到IActivityManager对象;
  • 自定义一个代理类的调度类,它要实现InvocationHandler的invoke方法;
  • 以IActivityManager为参数,创建调度类实例;
  • 以IActivityManager和调度类实例为参数,生成一个代理类的实例;
  • 用代理类的实例,替换第一步拿到的IActivityManager对象。
最近研究Hook技术的实现规划
  • Hook的原则
  • 如何去找Hook点
  • Java 动态代理机制分析
  • App的启动流程
  • 常用的 Hook 框架
  • 使用 Java 反射实现 API Hook
  • 动态代理技术Hook掉系统的AMS服务

关于Hook技术实现起来刚开始还是比较难的,需要一定的技术功底,尤其对源码比较熟悉。如果想继续深造Android学习Hook技术,欢迎关注我终端研发部可以和我一块学习!

总结

对于我们APP开发者来讲,建议大家不要以市场行情的变化而受影响,坚持自己喜欢人认定的路线走下去,沉淀和进步!

如果对小程序和快应用感兴趣的可以参考下面的文章

微信小程序开发<一>

微信小程序开发<二>

这个时代,作为程序员,我什么要学习小程序

来开发一个wanandroid快应用吧

“大话架构”阿里架构师分享的Java程序员需要突破的技术要点

相信自己,没有做不到的,只有想不到的

微信公众号:终端研发部

技术

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

androidstarjack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值