首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android 插件化之Hook机制

Android Hook简介 什么是Hook Hook 英文翻译过来就是「钩子」的意思,就是在程序执行的过程中去截取其中的信息。...Android 操作系统中系统维护着自己的一套事件分发机制,那么Hook就是在事件传送到终点前截获并监控事件的传输。...其原理示意图如下: 众所周知,Android 系统中使用了沙箱机制,普通用户程序的进程空间都是独立的,程序的运行互不干扰,而进程之间要实现通信需要借助Android的Binder机制。...在Hook技术中,根据 Hook 对象与 Hook 后处理的事件方式不同,Hook 可以分为消息 Hook、API Hook 等。...Hook 框架 在Android开发中,有以下常见的一些Hook框架: 1,Xposed 通过替换 /system/bin/app_process 程序控制 Zygote 进程,使得 app_process

32130
您找到你想要的搜索结果了吗?
是的
没有找到

Android插件化原理解析——Hook机制之Binder Hook

Android系统通过Binder机制给应用程序提供了一系列的系统服务,诸如ActivityManagerService,ClipboardManager, AudioManager等;这些广泛存在系统服务给应用程序提供了诸如任务管理...我们把这种Hook系统服务的机制称之为Binder Hook,因为本质上这些服务提供者都是存在于系统各个进程的Binder对象。...点 在插件框架原理解析——Hook机制之动态代理里面我们说过,Hook分为三步,最关键的一步就是寻找Hook点。...我们通过Binder机制的优先查找本地Binder对象的这个特性达到了Hook掉系统服务对象的目的。...Hook系统剪切版服务 伪造剪切版服务对象 首先我们用代理的方式伪造一个剪切版服务对象,关于如何使用代理的方式进行hook以及其中的原理,可以查看插件框架原理解析——Hook机制之动态代理。

1.6K10

Linux Hook技术实践

LInux Hook技术实践 什么是hook 简单的说就是别人本来是执行libA.so里面的函数的,结果现在被偷偷换成了执行你的libB.so里面的代码,是一种替换。...为什么hook 恶意代码注入 调用常用库函数时打log 改变常用库函数的行为,个性化 怎么hook 这个东西在win里面有现成的api,但是在linux里面却要主动修改ELF文件,或者修改动态库链接路径...所以这里提供一种简单的方法来hook 下面直接demo吧 /*myselect.c*/ #define _GNU_SOURCE #include #include <stdio.h...举个例子: 某些系统上select的实现可能与众不同,在没有fd就绪时,并不阻塞,而是忙等,这时便可以通过hook技术,在select中插入usleep,达到释放cpu的作用。

1.2K10

Android Hook 机制之简单实战

Hook 分类 1.根据Android开发模式,Native模式(C/C++)和Java模式(Java)区分,在Android平台上 Java层级的Hook; Native层级的Hook; 2.根...Hook 对象与 Hook 后处理事件方式不同,Hook还分为: 消息Hook; API Hook; 3.针对Hook的不同进程上来说,还可以分为: 全局Hook; 单个进程Hook; 常见...有兴趣的,可以看一下我的这一篇博客 Java 反射机制详解 java 的动态代理 动态代理是指在运行时动态生成代理类,不需要我们像静态代理那个去手动写一个个的代理类。...---- Hook 使用实例 Hook 选择的关键点 Hook 的选择点:尽量静态变量和单例,因为一旦创建对象,它们不容易变化,非常容易定位。...Hook 过程: 寻找 Hook 点,原则是尽量静态变量或者单例对象,尽量 Hook public 的对象和方法。 选择合适的代理方式,如果是接口可以用动态代理。

3K10

Pytorch_hook机制的理解及利用register_forward_hook(hook)中间层输出

种类分为两种 Tensor级别 register_hook(hook) ->为Tensor注册一个backward hook,用来获取变量的梯度;hook必须遵循如下的格式:hook(grad) ->...Tensor or None nn.Module对象 register_forward_hook(hook)和register_backward_hook(hook)两种方法,分别对应前向传播和反向传播的...hook函数。...(5)hook作用:获取某些变量的中间结果的。Pytorch会自动舍弃图计算的中间结果,所以想要获取这些数值就需要使用hook函数。hook函数在使用后应及时删除,以避免每次都运行钩子增加运行负载。...举例说明 Module级别 【1】register_forward_hook(hook) 在网络执行forward()之后,执行hook函数,需要具有如下的形式: hook(module, input

1.2K30

datax源码解析-datax的hook机制解析

datax的hook提供了一种机制,可以让开发者再任务执行完成后做一些定制化的事情,比如给任务的负责人发送一条短信提醒之类的。...", configuration, comm.getCounter()); invoker.invokeAll(); } HookInvoker是datax实现hook机制的一个管理类...对于每个子目录,必须符合ServiceLoader的标准目录格式 hook的目录结构看起来类似这个样子: 简单来讲,ServiceLoader实现了一种机制,可以动态加载指定目录的实现类并且实例化,它是...java SPI机制的重要组成部分。...我们来总结下: datax提供了一种Hook机制,可以在执行完核心逻辑后触发一个开发者自己定义的逻辑。实现的原理是利用了java SPI机制,datax定义了一个Hook接口,开发者实现这个接口。

1.4K11

深入理解Pytroch中的hook机制

【GiantPandaCV导语】Pytorch 中的 hook 机制可以很方便的让用户往计算图中注入控制代码,这样就可以通过自定义各种操作来修改计算图中的张量。...点击小程序观看视频(时长22分) 视频太长不看版: Pytorch 中的 hook 机制可以很方便的让用户往计算图中注入控制代码(注入的代码也可以删除),这样用户就可以通过自定义各种操作来修改计算图中的张量...Pytroch 中主要有两种hook,分别是注册在Tensor上的hook和注册在Module上的 hook。...注册在 Tensor 上的 hook,可以在反向回传过程中对梯度作修改,分为两种: 叶子节点上的hook 会在 AccumulateGrad 之前对梯度做一些操作 中间张量上的hook 在输出梯度传入...hook函数 对Module的输入和输出张量做一些操作 后向过程会调用的hook 可以打印module输入张量的梯度,但是目前还有bug,建议不要用。

64620

linux机制

Linux 2.4版本开始,操作系统底层提供了scatter/gather这种DMA的方式来从内核空间缓冲区中将数据直接读取到协议引擎中,而无需将内核空间缓冲区中的数据再拷贝一份到内核空间socket...参考: 浅谈 Linux下的零拷贝机制 TCP TCP的TIME_WAIT有两个作用: 防止前一个TCP连接的残留数据(在序列号恰好正确的情况下)进入后续的TCP连接中 防止TCP挥手过程发出去的最后一个...Linux实现了大量QDisc来满足各个QDisc对应的的报文队列和行为。该接口允许QDisc可以在没有IP栈和NIC驱动修改的前提下实现队列管理。...TCP rtt和rto TCP拥塞避免算法,目前主流Linux的默认拥塞避免算法为cubic,可以使用ss -i命令查看。...可以看到reno算法在发生拥塞避免时不会将cwnd变为1,这样提高了传输效率,快速重传和快速恢复机制也有利于更快探测到拥塞。 ?

2.6K40

【Pytorch 】笔记八:Tensorboard 可视化与 Hook 机制

4.1 hook 函数介绍 Hook 函数机制:不改变模型的主体,实现额外功能,像一个挂件和挂钩。 为什么需要个这样的东西呢?...好了,上面的hook函数的运行机制差不多清楚了吧,其实都是在__call__函数中完成的,这也是Pytorch代码高级的一个地方了,它实现了一些hook机制,提供了一些额外的实现别的功能的一些接口。...这个就是Pytorch中hook函数的一个运行机制了。...下面梳理一下子这几个hook函数的关系吧: hook机制,是在计算图上挂一些钩子,然后钩子上挂一些函数,在不改变模型或者计算图的主体下,实现了一些额外的功能,比如保存一些中间变量等。...第二块介绍了hook机制,这个是Pytorch中留给我们扩展功能的一些接口,在不改变网络的主体下额外增加功能。主要有四种hook函数, 并且学习了内部的运行机制

1.6K30

Linux内核跟踪:ftrace hook入门手册(下)

一、前情提要 在前一篇文章《Linux内核跟踪:ftrace hook入门手册(上)》中,我们对部分ftrace hook经典方案中的实现细节进行了优化。本文会深入说明这些优化的原理和目的。...二、内核版本的差异 目前的ftrace hook实现中,总是需要使用大量条件编译以解决Linux内核的版本差异问题。...其中较为关键的一个差异点,就是Linux内核从4.17版本开始修改了系统调用过程中的函数签名,这对ftrace hook的实现造成了较大的困扰。...hook子程可以直接定义与系统调用函数相同的形式参数来获取系统调用参数值,而返回时也会直接返回到系统调用函数的直接调用方(参考下图[3]): 图5:经典方案中的hook执行流程 然而,由于Linux...除此之外,由于优化方案中可以直接使用ftrace框架自带的防递归机制,经典方案中花费大量代码实现但仍然有所不足的防递归机制也就可以省略了。

1.7K20

React Hook 和 Vue Hook

而 「Hook」模式带来的好处: 暴露给模板的属性具有明确的来源,因为它们是从 Hook 函数返回的值。 Hook 函数返回的值可以任意命名,因此不会发生名称空间冲突。...二、React Hook 和 Vue Hook 对比 其实 React Hook 的限制非常多: 不要在循环,条件或嵌套函数中调用 Hook 确保总是在你的 React 函数的最顶层调用他们。...与 React Hook 不同,setup 函数仅被调用一次,这在性能上比较占优。 对调用顺序没什么要求,每次渲染中不会反复调用 Hook 函数,产生的的 GC 压力较小。...React Hook 里的「依赖」是需要你去手动声明的。...React Hook解决过时闭包问题的方法: 解决过时闭包的一个有效方法是正确设置 React Hook 的依赖项。 对于过时的状态,使用函数方式更新状态。

2K20

Android插件化原理解析——Hook机制之动态代理

使用代理机制进行API Hook进而达到方法增强是框架的常用手段,比如J2EE框架Spring通过动态代理优雅地实现了AOP编程,极大地提升了Web开发效率;同样,插件框架也广泛使用了代理机制来增强系统...本文将带你了解基于动态代理的Hook机制。 阅读本文之前,可以先clone一份 understand-plugin-framework,参考此项目的dynamic-proxy-hook模块。...首先我们得找到被Hook的对象,我称之为Hook点;什么样的对象比较好Hook呢?自然是容易找到的对象。什么样的对象容易找到?...可见,Hook确实成功了!这就是使用代理进行Hook的原理——偷梁换柱。...整个Hook过程简要总结如下: 寻找Hook点,原则是静态变量或者单例对象,尽量Hook pulic的对象和方法,非public不保证每个版本都一样,需要适配。

91220
领券