Android面试之Hook技术

学习Hook之前请先多了解framework层的相关知识,反射技术,代理模式。这里不会详解!

一、Hook技术

Hook与其说是钩子,说它是劫持器更贴切,它的作用就是“欺上瞒下”。主要分两类:Hook Java,也即应用程序进程Hook,通过反射和代理实现;Hook Native,为全局Hook,通过第三方框架完成,如Xposed。通过图更能形象表述。

二、Hook技术举例

插件化技术之一启动没有注册的Activity,那么就要使用Hook技术了。Activity的启动流程这里不细讲,局部大概流程图如下

这个过程中AMS会验证Activity信息,通过之后才能允许应用程序启动该Activity。所以我们想要启动一个没在Manifest.xml中注册的activity就只能对AMS“偷梁换柱”了,将一个“完好的”activity(在Manifest.xml中注册的)给AMS做验证,验证通过之后我们再把目标Activity换回来,启动它。framework层源码我们无法直接调用,故只能Hook。“劫持”ActivityManager相应的方法把“完好的”Activity换上,然后又在应用程序的ActivityThread中Hook把目标Activity换回去启动。为方便记忆面试之用这里只讲理论流程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值