1.hook模型有哪些

2.xposed框架会不会让手机变卡?

3.如何Android hook s

4.ixposedhookloadpackage 怎么加载窗口

5.小米5xposed框架有什么用

_xposed hook开发教程

1、Xposed:Ja层的HOOK框架,由于要修改Zgote进程,需要Root;

2、CydiaSubstrator:本地层的HOOK框架,本质上是一个inline Hook;

3、dexposed框架

4、AndFix框架;

5、Sophix 框架;

6、AndroidMethodHook框架;

7、Legend框架:在AndFix框架的基础上,在方法进行替换前进行了方法的备份;

8、YAHFA框架;

9、EPIC框架;

10、VirtualXposed:Virtual APP与Xposed的一个结合。

扩展资料

使用框架的原因

因为软件系统很复杂,特别是服务器端软件,涉及到的知识,内容,问题太多。在某些方面使用别人成熟的框架,就相当于让别人帮助完成一些基础工作,只需要集中精力完成系统的业务逻辑设计。

而且框架一般是成熟,稳健的,可以处理系统很多细节问题,比如,事务处理,安全性,数据流控制等问题。

还有框架一般都经过很多人使用,所以结构很好,所以扩展性也很好,而且它是不断升级的,可以直接享受别人升级代码带来的好处。框架一般处在低层应用平台(如J2EE)和高层业务逻辑之间的中间层。

框架开发

框架的最大好处就是重用。面向对象系统获得的最大的复用方式就是框架,一个大的应用系统往往可能由多层互相协作的框架组成。

由于框架能重用代码,因此从一已有构件库中建立应用变得非常容易,因为构件都用框架统一定义的接口,从而使构件间的通信简单。

框架能重用设计。它提供可重用的抽象算法及高层设计,并能将大系统分解成更小的构件,而且能描述构件间的内部接口。

这些标准接口使在已有的构件基础上通过组装建立各种各样的系统成为可能。只要符合接口定义,新的构件就能插入框架中,构件设计者就能重用构架的设计。

框架还能重用分析。所有的人员若按照框架的思想来分析事务,那么就能将它划分为同样的构件,用相似的解决方法,从而使用同一框架的分析人员之间能进行沟通。

百度百科-框架

hook模型有哪些

注入跟hook确实有密不可分的联系,我们通常都是把这两者放到一起来谈,导致很多人认为它们是一回事。

应用安全里面有一个概念叫完整性,指的是程序或数据不能被攻击者恶意篡改。根据篡改时刻的不同,我们有两类方式来破坏应用的完整性:静态和动态。

在安卓上,静态的篡改方式是反编译apk,修改或添加代码后重打包,用户只要安装了这个修改过的apk,运行时攻击者的代码就会被加载到进程空间。

动态的篡改方法就是hook。如果我要篡改代码,那么我要实现的就是在程序将要执行某段逻辑的时候控制它去执行我的代码,这个行为就叫hook。

一个运行时的程序表现形式是进程,代码跟数据都放在自己的进程里面。那么问题来了,操作系统隔离了进程,我的代码在我的进程里,别人的代码在别人的进程里,别人的进程是不能跳到我的进程来执行我的代码的,这怎么办呢,所以要先想办法把代码注入到别人的进程里。之前提到的重打包也算是一种静态的注入方法,动态的注入方法在安卓上与Linux的共享库注入是类似的,这种方法网上用的最多的应该是看雪的古河发布的libinject。另外还有Xposed,它取了一种特殊的注入方法,是动静结合的。

xposed框架会不会让手机变卡?

Xposed、Substrate和frida。根据查询hook模型消息得知,hook模型有Xposed、Substrate和frida。Hook上瘾模型(the Hook Model),简称Hook模型、上瘾模型 Hook上瘾模型由《上瘾》的作者尼尔·埃亚尔、瑞安·胡佛提出的。

如何Android hook s

xposed 会不会影响性能这个问题的答案是显而易见的:会。而且这个问题还需要分两种情况讨论。Android 5.0+ 和 Android 4.4-。我们先从 Android 4.4 及其以下版本的 xposed 框架说起。xposed 归根究底就是一个提供对 Android 运行虚拟机 hook 的一个工具。可以使得用户无需修改软件本身而做到对软件进行修改(通过在运行时进行修改)。其本身提供了一套抽象的 API 来帮助开发者开发 xposed 上面的插件。在运行时,通过在类加载过程中对类进行重写的方法实现修改。就这一点上来说,无疑是存在性能上的损耗的。但也如这个问题下其他答主所说,由于 xposed 的一些插件的本身的目的就是优化其他更占的应用再加上 xposed 插件开发者本身开发经验较为丰富,也比较良心,所以对性能的影响是有限的,相反,其优化性能的功能带来的效果通常是显著的。我比较想单独谈论一下 Android 5.0+ 的 xposed 框架,这是目前其他答主还没有提到的地方。显然的 Android 5.0+ 带来的问题有很多,比如更加严格的 SELinux 的限制以及对 64 位的支持等等对于 xposed 框架的实现难度提了更高的要求。当然最麻烦的东西还是 ART 虚拟机。所以在 Android 5.0+ 上的 xposed 框架有着很大的实现上的区别。首先,xposed 框架会将系统的 ART 虚拟机的库文件(libart.so 以及相关的文件)完全替换掉。但这一点,便没有 Dalvik 上实现得那么「干净」,并且这个替换掉的库会禁用掉了一些 ART 的代码优化的特性。这也会使得整个 hook 过程变得更可靠,更稳定。

ixposedhookloadpackage 怎么加载窗口

两种方式

1 静态织入,aspectJ算是比较成熟的aop方案了,原理是分析class,在要hook的方法前后加入你自己的执行函数。

2 动态注入,native hook。原理是在native中修改需要hook的ja方法的修饰符,变为native方法—在native操作—执行原函数。自己懒得搞得话,阿里有Dexposed框架可用

小米5xposed框架有什么用

要使用Xposed例如 插件模块Xposed插件模块,我们必须先启用Xposed,使Xposed步骤如下: 1打开Xposed插件模块 - >核心框架 - >安装/更新点击

dexspy是小米基于著名的xposed框架修改的新patchrom框架。这几天瞄了一下反编译的代码,做个笔记。与smali注入相比,新的机制借助xposed的hook机制可以使未来MIUI移植适配变得更简单。dexspy的ja部分代码在framework_ext中,核心类是miui/dexspy/*,代码和xposed旧机制的源码还是挺类似的,不过做了一个修改:arrayOfString[0]="android..Activity";arrayOfString[1]="android..ActivityManager";arrayOfString[2]="android..ApplicationPackageManager";arrayOfString[3]="android..Dialog";arrayOfString[4]="android..DownloadManager$CursorTranslator";arrayOfString[5]="android..LoadedApk";.sHookedClassNames=arrayOfString;这个数组定义了所有需要hook的类。在初始化时,会对每个类的特定方法挂上before和after钩子:privatestaticvoidinitDexspyZygote()throwsException{for(StringclassName:sHookedClassNames){hookMethodsThroughHandler(className,getHookClassName(className));}}publicstaticvoidhookMethodsThroughHandler(StringclassName,StringhandlerClassName){Classclazz=ReflectionUtils.findClass(className,0x0);ClasshandlerClazz=ReflectionUtils.findClass(handlerClassName,0x0);Method[]methods=handlerClazz.getMethods();for(Methodmethod:methods){if((!method.getName().startsWith("before_"))&&(!method.getName().startsWith("after_"))){}MemberhookedMethod=findHookedMethod(clazz,method);hookMethod(hookedMethod,MethodHookTemplate.sInstance);}}然而每个类都可能有n多方法,dexspy怎么知道要hook哪些呢?framework_ext反编译出来后,可以看到很多Injector.ja文件,比如android//Injector.ja放的就是前面那些android..*的钩子:staticclassActivityHook{privatestaticfinalStringT="Activity";publicstaticvoidafter_onCreate(MethodHook.MethodHookParamparamMethodHookParam,BundleparamBundle){ActivitylocalActivity=(Activity)paramMethodHookParam.thisObject;if((UiUtils.isV5Ui(localActivity))&&(UiUtils.resolveAttribute(localActivity,16842926)==101515270))localActivity.getWindow().setGrity(80);}publicstaticvoidafter_onOptionsItemSelected(MethodHook.MethodHookParamparamMethodHookParam,MenuItemparamMenuItem){ActivitylocalActivity=(Activity)paramMethodHookParam.thisObject;if((UiUtils.isV5Ui(localActivity))&&(paramMenuItem.getItemId()==16908332)){localActivity.finish();paramMethodHookParam.setResult(Boolean.valueOf(true));}}比如这个就是android..Activity类的钩子了,里面hook了onCreate(),onOptionsItemSelected()等方法。dexspy加载时会对扫描这些Injector,将相应方法的before和after钩子挂上。跟xposed主要的区别就在这里,好处就是以后这套框架如果开放了,模块编写自己的Injector类就能方便实现挂钩。当然现在的xposed也挺方便,但代码没这么直观清晰就是了。另外就是dexspy是基于旧xposed的,效率不如目前版本的xposed,尤其hook很多时效率会比较糟糕,估计未来会对dexspy做一次升级吧。网上找的。