在线客服
扫描二维码
下载博学谷APP
扫描二维码
关注博学谷微信公众号
Hook 技术又叫做钩子函数,简单来说,就是把系统的程序拉出来变成我们自己执行代码片段。今天小编用三分钟简述Hook,让大家了解Hook技术。

1、 Hook的定义
Hook,钩子。勾住系统的程序逻辑。在某段SDK源码逻辑执行的过程中,通过代码手段拦截执行该逻辑,加入自己的代码逻辑。
Hook 简单类似网络传输中的中间人拦截,我拦截APP中的原始方法,自己定义一个方法,替换原始的东西,实现我不可描述的目的,大白话就是这样,但是实际过程和应用还是比较复杂的。
常见的使用场景,举几个栗子:
App登录劫持,一般用户手动点击“登录”按钮才会将用户名和密码信息发送至服务器端去验证账号与密码是否正确。这样就很简单了,居心叵测的人只需要找到开发者在使用EditText控件的getText方法后进行网络验证的方法,Hook该方法,就能劫持到用户的账户与密码了。
App注入广告,app 启动的时候加载 HomeActivity 肯定要执行onCreate 方法, 劫持首页的onCreate方法,在里面注入弹窗广告,获得广告收入。App数据篡改,比如玩一款游戏App ,修改里面额金币数,可以反编译App ,找到具体的类和方法,插入自己的方法就可以实现。听起来很牛b,但是要实现,需要掌握很多的逆向技术和其它需要技术,可是非常不易的。
2、实用价值
Hook是中级开发通往高级开发的必经之路。如果把谷歌比喻成安卓的造物主,那么安卓SDK源码里面就包含了万事万物的本源。中级开发者,只在利用万事万物,浮于表层,而高级开发者能从本源上去改变万事万物,深入核心。
最有用的实用价值: hook是安卓面向切面(AOP)编程的基础,可以让我们在不变更原有业务的前提下,插入额外的逻辑。这样,既保护了原有业务的完整性,又能让额外的代码逻辑不与原有业务产生耦合。
3、前置技能
Java反射
熟练掌握类Class,方法Method,成员Field的使用方法源码内部,很多类和方法都是@hide的,外部直接无法访问,所以只能通过反射,去创建源码中的类,方法,或者成员.
阅读安卓源码的能力
Hook的切入点都在源码内部,不能阅读源码,不能理清源码逻辑,则不用谈hook. 其实使用AndroidStudio来阅读源码有个坑,有时候会看到源码里面 “一片飘红”,看似是有什么东西没有引用进来,其实是因为有部分源码没有对开发者开放,解决起来很麻烦, 所以,推荐从安卓官网下载整套源码,然后使用 SourceInsight 查看源码。 如果不需要跳来跳去的话,直接用安卓源码网站一步到位。
4、hook通用思路
无论多么复杂的源码,我们想要干涉其中的一些执行流程,最终的杀招只有一个: “偷梁换柱”。而 “偷梁换柱”的思路,通常都是一个套路:根据需求确定要hook的对象寻找要Hook的对象的持有者,拿到要hook的对象(持有:B类 的成员变量里有 一个是A类的对象,那么B就是A的持有者)定义“要Hook的对象”的代理类,并且创建该类的对象使用上一步创建出来的对象,替换掉要Hook的对象。
以上就是Hook技术的简述,想要更加深入了解的小伙伴可以继续关注博学谷的资讯。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
C语言编程入门怎么学习?C语言和C++的区别
C语言编程入门怎么学习?C语言和C++的区别,C语言是面向过程,而C++是面向对象。很多人学习c语言直接背语法,连各种高深的算法都死记硬背,大学考计算机二级C语言证书,但并不能真正用c语言编写程序处理问题。想入门C语言编程不能死记硬背,要理论结合实际,学以致用。
9610
2019-08-02 16:08:31
好用的MySQL管理工具推荐盘点
众所周知,MySQL作为小型关系型数据库管理系统,目前备受喜爱和青睐,因此在世界范围内的中小型网站中被广泛地应用。它的优点有体积不大、快速且安全,开放源码,更重要的是成本不高,因此从降低网站成本的角度考虑,许多中小型企业会使用MySQL存储数据。因此今天本文讲盘点几款好用的MySQL管理工具,比如PhpMyadmin、Navicat、SQLyog等等,下面一一推荐给大家。
7206
2020-02-06 10:06:46
想要学习软件编程入门难吗?
对于刚学习软件编程的新手来说,最想要的就是快速掌握一门编程语言,但是学习编程是一件非常复杂的事情。许多人以为自己会拆装计算机,或者改装系统之类的简单操作,就觉得自己达到了编程入门的水准,其实这些只算使用计算机熟练而已。那么到底如何怎么学习编程呢?难不难呢?
7015
2020-05-27 09:48:01
零基础怎么自学编程?
零基础怎么自学编程?对于初学者来说可以采用视频和书籍的方式进行学习。编程教学视频让你迅速掌握编程,如果找到的视频不完整,基础讲解知识点浅显不成系统。书本比较系统,深入,但是枯燥,所以最好的方法是书和视频想结合。过了入门期之后,看书、看视频、看博客都可以,作重要的还是多练习。
6347
2020-06-12 11:52:28
计算机编程中多任务的处理方式
今天,我们要来分享的是计算机编程中多任务的处理方式。我们都知道,计算机中的任务执行是由CPU进行的,它以强大的计算能力极其任务处理能力,进行着大量的多任务的处理。简单来讲,计算机中的多任务处理有两种执行方式:并行和并发。下面我们来深入理解一下这个两大多任务的处理方式。
7888
2020-08-18 17:58:30
