Hook概念

Hook是伴随操作系统的产生而出现的概念,原来是系统开发者提供给系统应用开发者方便管理系统而产生的概念。目的是在系统调用过程中,其他代码可以选择性的干预系统函数的处理逻辑,已达到更灵活的程度。

其实不管是windows还是Linux,底层进行事件分发处理使用的都是消息机制,为什么要使用消息机制,这个和操作系统的演化有关。操作系统最开始出现的时候功能很单一,仅仅是用于计算,而且还不是并行计算(并行计算发生在中断概念提出之后)。就是一个单一的流程,大家可以类比一下流水线,从流水线的一端到另一端,操作系统需要定制好所有的内容,这个时候应用厂商没办法在上面做更多的扩展,这样很不方便。

后来Windows就在他们的操作系统执行流程中加入了一些节点,我们可以理解为一个口子。软件开发商可以根据自己业务需要在节点上添加自己想要的代码,然后执行完后调用这个节点的继续执行相关的代码,那么就相当于对操作系统的功能做了扩充,丰富了操作系统的能力。听起来这个Hook技术很正当,和我们现在理解的Hook用处差异很大,我们来看下Windows他们是怎么定义这个Hook技术的。

在 Windows中,钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。
钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子

Android安全专题(一)Hook初探以及技术前世今生相关推荐

  1. 【Android 插件化】Hook 插件化框架 ( Hook 技术 | 代理模式 | 静态代理 | 动态代理 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  2. 【转载】Android 5.1 Art Hook 技术分享

    转载一篇关于Android5.1的ART HOOK方案. 首先简单介绍一下hook.所谓hook就是通过一些手段改变一个函数的执行逻辑,比如在函数调用前更改一下参数或者在调用后修改返回值,甚至直接返回 ...

  3. 【Android 插件化】Hook 插件化框架总结 ( 插件包管理 | Hook Activity 启动流程 | Hook 插件包资源加载 ) ★★★

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  4. 【Android 插件化】Hook 插件化框架 ( 使用 Hook 方式替换插件 Activity 的 mResources 成员变量 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  5. 【Android 插件化】Hook 插件化框架 ( 从源码角度分析加载资源流程 | Hook 点选择 | 资源冲突解决方案 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  6. 【Android 插件化】Hook 插件化框架 ( 加载插件包资源 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  7. 【Android 插件化】Hook 插件化框架 ( 反射工具类 | 反射常用操作整理 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  8. 【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | 主线程创建 Activity 实例之前使用插件 Activity 类替换占位的组件 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  9. 【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | AMS 启动前使用动态代理替换掉插件 Activity 类 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

最新文章

  1. 从零开始一个http服务器(五)-模拟cgi
  2. 【Android开发】Android 删除指定文件和文件夹
  3. VS C++调用python进行画图matplotlib
  4. sgolayfilt函数_Matlab中Savitzky-Golay filtering(最小二乘平滑滤波)函数sgolayfilt的使用方法...
  5. 面试题——20190717
  6. python3:面向对象(多态和继承、方法重载及模块)
  7. VC2010如何给ActiveX添加事件
  8. 驱动对象-设备对象-设备栈
  9. 如何隐藏所有的导航栏
  10. C++ 动态命名和修改变量名 动态生成变量名 define
  11. hibernate 状态间转换及update,saveOrUpdte
  12. Veritas Backup Exec 21.4 Multilingual (Windows) 下载
  13. c语言 abs 不好用,c语言中 abs 和 fabs 不同吗?
  14. dfuse Search 是所有 EOSIO 开发者的必备工具
  15. 用户留存sql完整版
  16. 【社招和校招】格灵深瞳合肥研发中心计算机视觉算法岗招聘
  17. 杰理芯片移植涂鸦OTA步骤
  18. 2019下半年,快手准备赚多少钱?
  19. 软件开发中的需求分析
  20. 保偏 偏振不相关和偏振不敏感

热门文章

  1. IP地址的格式与分类
  2. 也谈如何举办一场成功的技术讲座?
  3. contOS6 部署 lnmp、FTP、composer、ThinkPHP5、docker详细步骤
  4. 速卖通从0开始怎么运营?这份创业实录笔记请查收
  5. sentinel (史上最全)
  6. 浅谈fieldset标签的使用
  7. TLE9879的BLDC无刷电机原理
  8. EasyPlayer开源流媒体移动端播放器推出RTSP-RTMP-HTTP-HLS全功能Pro版
  9. java+mysql基于SSM的大学生兼职信息系统#毕业设计
  10. Redis高级项目实战,华为java开发工资