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

标签: android Hook 动态代理 java反射
14人阅读 评论(0) 收藏 举报
分类:

最近在学习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程序员需要突破的技术要点

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

微信公众号:终端研发部

技术

查看评论

Python趣味百题-进阶篇

精选的30个实例都从趣味编程的角度出发,并兼顾实用性。实例涵盖了Python程序设计的基础知识和常用算法,很多实例来自编程大赛和企业面试题,具有很强的实用价值,实例遵循先提出问题,再分析问题,最后代码实现。
  • 2016年05月12日 10:01

插件源码插件源码插件源码插件源码插件源码

  • 2016年05月15日 12:28
  • 1000KB
  • 下载

Android插件化开发之Hook StartActivity方法

第一步、先爆项目demo照片,代码不多,不要怕 第二步、应该知道Java反射相关知识 如果不知道或者忘记的小伙伴请猛搓这里,Android插件化开发基础之Java反射机制研究  http://...
  • u011068702
  • u011068702
  • 2016-11-18 00:22:53
  • 11637

Android 插件化原理解析——Hook机制之AMS&PMS

在前面的文章中我们介绍了DroidPlugin的Hook机制,也就是代理方式和Binder Hook;插件框架通过AOP实现了插件使用和开发的透明性。在讲述DroidPlugin如何实现四大组件的插件...
  • parallelyk
  • parallelyk
  • 2016-06-29 17:23:34
  • 1470

插件化知识详细分解及原理 之代理,hook,反射

上一篇我们说了Binder机制,通过aidl的demo和系统源码的对比进行了运行过程的分析,这一篇我们说代理模式及反射,之前说过了,只是为了梳理插件化需要了解的知识点,所以不会特别深的去讲解。代理模式...
  • yulong0809
  • yulong0809
  • 2017-02-24 15:14:48
  • 5371

Android插件化系列第(一)篇---Hook技术之Activity的启动过程的拦截

这篇文章主要讲解如何利用动态代理技术Hook掉系统的AMS服务,来实现拦截Activity的启动流程。代码量不是很多,为了更容易的理解,需要掌握JAVA的反射,动态代理技术,以及Activity的启动...
  • u013263323
  • u013263323
  • 2017-02-09 14:07:23
  • 2671

插件化开发---Hook之动态代理方式

上篇博客笔记了解了 插件化开发—静态、动态代理 今天自己来了解下Hook原理,以及在安卓开发中占有的意义,我们先来理解下什么是hook呢? hook就是对安卓源码、其他apk源码,在相应位置找h...
  • u013210620
  • u013210620
  • 2017-01-22 14:26:47
  • 558

插件化之插件Service 新的Hook方法

本文同步自wing的地方酒馆给大家分享一个新的Hook插件Service的方法,与Activity替换类似,可以先在AndroidManifest.xml预留一个service,然后通过intent启...
  • wingichoy
  • wingichoy
  • 2017-02-28 10:07:42
  • 2406

Android插件化开发-hook动态代理

首先,我们阐述为什么android需要插件化: 1:由于业务的增长,app的方法数逐渐达到65535(有人说用于检索方法数的列表大小使用short存储的,其实我看了源码之后并没有发现相关信息,并对此...
  • u013022222
  • u013022222
  • 2016-04-10 11:19:59
  • 6668

Android 插件化原理 完胜360插件框架 技术实战

性能优化 Android 性能优化 (一)APK高效瘦身 http://blog.csdn.net/whb20081815/article/details/701400...
  • WHB20081815
  • WHB20081815
  • 2017-08-04 16:21:19
  • 2421
    个人资料
    持之以恒
    等级:
    访问量: 42万+
    积分: 5800
    排名: 5572
    最新评论