Hook技术【移动端&&PC端详解】

本文详细介绍了Hook技术,从微软的定义到实际应用。在移动端,通过hook可以实现免注册式跳转,文章详细解析了hook点的寻找和动态代理的使用。在Windows端,Hook作为消息拦截机制,可用于屏幕取词等功能,文中阐述了线程钩子、系统钩子的工作原理及分类。
摘要由CSDN通过智能技术生成

Hook简介

微软的MSDN中,对Hook的解释为:A hook is a point in the system message-handling mechanism where an application can install a subroutine to monitor the message traffic in the system and process certain types of messages before they reach the target window procedure.

微软只是简单的将Hook解释为一种过滤(或叫挂钩)消息的技术。

我们这里讲解的Hook,简单解释为:挂钩,挂钩一切事物。包含微软的解释。

挂钩的事物通常指的是函数。
Hook 目的:

过滤一些关键函数调用,在函数执行前,先执行自己的挂钩函数。达到监控函数调用,改变函数功能的目的。

移动端的hook技术应用

可能前面讲的不是很透彻,通过后面的实例应该会更清晰。

1. what is Hook 技术(移动端)
Hook技术又叫做钩子函数,在系统没有调用该函数之前,钩子程序就先捕获该消息,钩子函数先得到控制权,这时钩子函数既可以加工处理(改变)该函数的执行行为,还可以强制结束消息的传递。简单的来说,就是把系统的程序拉出来变成我们自己执行代码片段。
要实现钩子函数,有两个步骤:
利用系统内部提供的接口,通过实现该接口,然后注入进系统(特定场景下使用)
动态代理(使用所有场景)。
2.Hook技术实现的步骤
Hook 技术实现的步骤分两步:

找到hook点(Java层),该hook点必须满足以下的条件:需要hook的方法,所属的对象必须是静态的,因为我们要通过反射来获取对象,我们获取的是系统的对象,不能够new一个对象,必须用系统创建的那个对象,所以只有静态的才能保证和系统的对象一致。
将hook方法放到系统之外执行(放入我们自己的逻辑)
3.在移动开发中的应用:
3.1 使用 hook 技术实现免注册式跳转

上面的图,有一个MainActivity,四个按钮,前三个是打开不同的Activity,最后一个是退出登录,这三个Activity其中界面2是不需要登陆的,界面3和界面4都是需要登录才能看到。
既然要在打开Activity之前就判断是否登录,要使用hook技术,接下看分析一下源码,hook就是startActivity的方法。
找Hook点

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值