`
ruilin215
  • 浏览: 1164886 次
  • 性别: Icon_minigender_2
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

HOOK启思录---第三章 HOOK的应用模式

阅读更多
观察模式
在HOOK很多应用中,有一类应用最为常用,那就是观察模式。对于信息获取的要求,在很多时候都是非常的重要的功能。在很多时候,我们都需要根据一定量的信息去判断如何决策。正如打仗一样,没有一定量的有意义的数据,就是摸黑,只能死路一条。
像Windows提供的SetWindowHook就是典型地为这类应用准备的。而且这也是最普遍的用法。
这个模式的特点是,在事情发生的时候,发出一个通知信息。观察者只可以查看过程中的信息,根据自己关心的内容处理自己的业务,但是不可以更改原来的流程。
如全局钩子中,经常使用的鼠标消息、键盘消息的监视等应用。金山词霸屏幕取词的功能是一个典型的应用(具体技术可以参考此类文章)。
注入模式
这个模式和观察模式最大的不一样的地方在于,注入的代码是为了扩展原始代码的功能业务。插件模式是此类模式的典型案例。
不管瘦核心的插件系统(如Eclipse)还是胖核心的插件系统(如Delphi、Visual Studio等IDE环境),其对外提供的插件接口都是为了扩展本身系统的功能的。
这种扩展的应用方式的典型特点,就是新的扩展代码和原来的代码会协调处理同类业务。
还有一些好的例子。我们曾经有一个应用,就是替换ReadFile和WriteFile,用以做到对所有文件操作的加密工作。这种应用和插件的差异在于被注入方是主动还是被动的。但是都是在完成同一类业务。
替换模式
如果针对应用目的不同,可以叫修复模式或破解模式。前者是为了修改系统中的BUG,后者是为了破解原有系统的限制。
比如我在前言中提到的,Delphi的VCL中,TObject并没有提供从接口到对象的转换服务,如果我们使用了此类模式,就可以让我们获得这种非常好的服务。对于一个设计或实现上有缺陷的原有系统(一般不能直接修改代码)来说,HOOK机制往往是很好的选择。
这类称之为修复模式非常好。
很多黑客也使用此种模式,必然替换访问加密锁的DLL中的导出表,替换成自己的函数,这样跳过对软件的控制代码。我们这里不是重点讲述软件破解,所以不继续深究其破解原理。但是,可以强调的是,这类应用的难点是,找出函数的参数。
这类模式的特点是,原有的代码会被新的代码所替换。
前面三个是基本模式,还有很多和实际应用相关的模式。
集权模式
此类模式的出现,大都是为了在全部系统中,统一处理某类事情。它的特点不在于注入的方式,而在于处理的模式。
这个模式,大都应用到某类服务上,比如键盘服务,鼠标服务,打印机服务等等特定服务上。通过统一接管此类服务的访问,限制或者协调对服务的访问。
比如键盘锁功能的实现,就是暂时关闭键盘的所有应用。
这类模式的特点主要会和特点服务有关联。
修复模式
替换模式的一种,这里强调的是其应用的目的是为了修复或扩展原有系统的功能。
破解模式
替换模式的一种,这里强调的是其应用的目的是为了跳过原有系统的一部分代码。如加密检测代码,网络检测代码等等。
插件模式
注入模式的一种,在系统的内部直接依靠HOOK机制进行扩展业务功能。
共享模式
这类应用中,经常是为了获取对方的数据。必然我希望获取对方系统中,所有字符串的值。可以通过替换对方的内存管理器,导出所有字符串。
这个应用比较特殊。不过其特点在于,目的是达到系统之间的数据共享。
其实现,可能是观察模式,也可能是替换模式。
其他不能一一详述,欢迎大家一起补充。
分享到:
评论

相关推荐

    nvidia-container-runtime-hook-1.4.0-2.x86_64.rpm

    centos7.4+ nvidia-docker2 安装所需要的必备包之一 libnvidia-container-tools-1.0.2-1.x86_64.rpm ...nvidia-container-runtime-hook-1.4.0-2.x86_64.rpm nvidia-docker2-2.0.3-3.docker18.09.6.ce.noarch.rpm

    NVIDIA-DOCKER-18.06版本 nvidia-container-runtime-hook_1.4.0-1_amd64.deb

    NVIDIA-DOCKER-18.06版本 nvidia-container-runtime-hook_1.4.0-1_amd64.deb

    oci-systemd-hook-0.2.0-1.git05e6923.el7_6.x86_64.rpm

    离线安装包,亲测可用

    前端开源库-sails-hook-autoreload-fork

    【标题】"前端开源库-sails-hook-autoreload-fork" 涉及的主要知识点是前端开发中的自动化工具,特别是针对Sails.js框架的一个增强功能——自动重载(autoreload)。 Sails.js是一个基于Node.js的MVC(Model-View-...

    ast-hook用于js逆向根据参数值快速定位到生成加密参数位置

    本文将详细探讨`ast-hook`的工作原理、使用方法以及它在js逆向工程中的应用。 首先,我们了解什么是AST(抽象语法树,Abstract Syntax Tree)。在编程语言解析过程中,源代码会被转换成一个由节点构成的树形结构,...

    pc-vx-hook-http-api-36018.zip

    标题“pc-vx-hook-http-api-36018.zip”和描述“pc-vx-hook-http-api-36018”暗示了这是一个与计算机软件相关的压缩文件,可能包含一个或多个程序或库,用于在PC(个人电脑)上钩取(hook)HTTP API。在IT领域,...

    Hook学习笔记-----钩子的应用

    【Hook学习笔记-----钩子的应用】 Hook,全称为“钩子”,是Windows操作系统提供的一种机制,允许应用程序在系统层面上监控特定类型的消息或事件。它实际上是一个处理消息的程序段,通过系统调用挂入系统,形成钩子...

    vdsm-hook-ethtool-options-4.20.39.1-1.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    atlas hive hook 编译依赖 apache-atlas-1.2.0-hive-hook.tar.gz

    在实际使用中,你需要解压 "apache-atlas-hive-hook-1.2.0" 压缩包,然后按照官方文档的指引进行安装和配置。这可能包括编译源代码、添加依赖、修改 Hive 配置以及启动服务。通过正确配置和使用 Atlas Hive Hook,你...

    前端开源库-mongoose-hook-ensure-indexes

    前端开源库-mongoose-hook-ensure-indexesmongoose hook确保索引,一个mongoose插件,改进了'model.ensure indexes'方法,允许删除未使用的索引,并使用更改的选项重新索引。

    API-Hook-Open-Process.rar_HOOK openprocess_Process_hook api_hook

    这个"API-Hook-Open-Process.rar"压缩包文件显然与API Hook相关,特别是针对`OpenProcess`函数的Hook。`OpenProcess`是Windows API中一个重要的函数,允许一个进程获取对另一个进程的访问权限,从而可以读取、写入或...

    网易APM hook方案探索-郑文

    - **源码限制**:对于封闭的第三方服务,缺乏源码访问权限限制了埋点技术的应用范围。 #### Hook技术详解 为了解决上述挑战,网易APM项目采用了hook技术来实现对应用的监控。根据操作时机的不同,hook技术可以分为...

    所有种类的钩子,用户层的API HOOK,内核驱动层的SSDT-hook,IDT-hook,sysenter-hook.zip

    本压缩包包含的资源涉及了用户层API Hook、内核驱动层的SSDT(System Service Dispatch Table)Hook、IDT(Interrupt Descriptor Table)Hook以及sysenter Hook,这些都是Windows操作系统中实现系统级控制的关键技术...

    PyPI 官网下载 | backports.hook_compressed-1.0.0-py3-none-any.whl

    《PyPI官网下载:backports.hook_compressed-1.0.0-py3-none-any.whl》 在Python的世界中,PyPI(Python Package Index)是官方的第三方Python库分发平台,开发者们可以在这里发布自己的软件包,供其他用户下载使用...

    Python库 | taskwarrior_jrnl_hook-0.1.0-py3-none-any.whl

    "taskwarrior_jrnl_hook-0.1.0-py3-none-any.whl" 是一个针对Python开发者的特定库,主要用于与TaskWarrior任务管理工具集成,并利用jrnl日记应用进行日志记录。这个库的版本是0.1.0,适配Python 3解释器,且适用于...

    apache-atlas-2.1.0-kafka-hook.tar.gz

    这个压缩包"apache-atlas-2.1.0-kafka-hook.tar.gz"包含了Apache Atlas的2.1.0版本,特别针对CDH(Cloudera Data Hub)6.3.1版本进行了编译优化。CDH是一个流行的企业级大数据平台,它集成了多种开源大数据组件,...

    learn-hook-shop-a.jsx

    learn-hook-shop-a.jsx

    githook-maven-plugin:Maven插件安装本地git钩子

    githook-maven-plugin Maven插件来配置和安装本地git钩子 保护您的VCS 在提交更改之前先检查一下更改始终是一个好主意:运行单元测试,执行构建等。但是,这样的检查列表很容易被忽略,尤其是在大型项目中。 为了...

    perl-Hook-LexWrap-0.24-2.el7.x64-86.rpm.tar.gz

    1、文件内容:perl-Hook-LexWrap-0.24-2.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/perl-Hook-LexWrap-0.24-2.el7.tar.gz #Step2、进入解压后的目录,...

    apache-atlas-2.0.0-hbase-hook.tar.gz

    "apache-atlas-2.0.0-hbase-hook.tar.gz" 是一个特定于Apache Atlas 2.0.0版本的HBase Hook压缩包,这意味着它包含了使Apache Atlas与HBase数据库集成的组件。 Apache Atlas的HBase Hook是一个关键的特性,它允许...

Global site tag (gtag.js) - Google Analytics