Xposed框架开发入门(一)
最近在学习Android逆向的时候涉及到了Hook方面的知识,所以研究了下Xposed和Cydiasubstrate框架,虽然最后还是成功搞起了,但是一路下来感觉还是有很多不顺的,所以在学习的时候就把学习笔记顺手写下来了。
关于这篇Xposed开发入门,准备分三章来写。第一章主要是关于Xposed框架的介绍和原理,第二章是Xposed框架的基础应用,第三章准备结合最近在做的一个某狗输入法的用户词库的提取来介绍下Xposed框架在具体应用时的用法(关于某狗输入法用户个人词库的提取会在以后的章节中介绍)。
OK,话不多说,搞起!
一、什么是Hook技术
Hook英文翻译是“钩子”的意思,“钩子”顾名思义就是可以勾起东西的工具,那么程序中这个“钩子”又是怎么用的呢?在Android操作系统中系统维护着自己的一套事件分发机制。应用程序,包括应用触发事件和后台逻辑处理,也是根据事件流程一步步地向下执行。而“钩子”的意思,就是在事件传送到终点前截获并监控事件的传输,像个钩子钩上事件一样,并且能够在钩上事件时,处理一些自己特定的事件。较为形象的流程如图所示。
Hook的这个本领,使它能够将自身的代码“融入”被勾住(Hook)的程序的进程中,成为目标进程的一个部分。我们也知道,在Android系统中使用了沙箱机制,普通用户程序的进程空间都是独立的,程序的运行彼此间都不受干扰。这就使我们希望通过一个程序改变其他程序的某些行为的想法不能直接实现,但是Hook的出现给我们开拓了解决此类问题的道路。当然,根据Hook对象与Hook后处理的事件方式不同,Hook还分为不同的种类,如消息Hook、API Hook等。
(引用自动态注入技术 ,关于Hook更详细的介绍也可以参考这篇文章,写的非常详细)
二、Xposed框架介绍
在日常工作学习中,我们希望使用Hook技术来完成某功能其实是相当烦琐的,我们很难手动地自己编写一个Hook工具,大多数情况下都是使用第三方提供的框架来做演示。常用的Hook框架有Xposed、CydiaSubstrate和ADBI/DDI,它们各自都有自己的特点,这里我们专门选择Xposed框架来进行介绍。
1、Xposed框架原理
Xposed框架是由rovo89开发的一款针对Android平台的动态劫持项目,是一款可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,通过替换/system/bin/app_process 程序控制 zygote 进程,从而使 app_process 在启动过程中加载XposedBridge.jar 这个jar包,从而完成对Zygote进程及其创建的Dalvik虚拟机的劫持。
Zygote进程在启动过程中,除了创建一个Dalvik虚拟机实例之外,还会将Java运行时库加载到进程中来,同时还会注册一些Android核心类的JNI方法到前面创建的Dalvik虚拟机实例中去。
一个应用程序被孵化出来的时候,其不仅会获得Zygote进程中的Dalvik虚拟机实例,还会与Zygote一起共享Java运行时库,这也是可以将XposedBridge.jar这个jar包加载到每一个Android应用中的原因。
XposedBridge有一个私有的Native方法:hookMethodNative,这个方法也在app_process中使用。该函数提供一个方法对象利用Java的反射机制来对内置的方法覆写。
2、Xposed框架的使用步骤
Xposed框架是基于一个Android的本地服务应用XposedInstaller与一个提供API的jar文件来完成的。所以,安装使用Xposed框架我们需要完成以下几个步骤。
1)安装Xposed的本地服务
在这里要安装Xposed的XposedInstall.apk本地应用,这个apk文件在各大应用市场都可以找到,推荐使用豌豆荚来安装,因为在豌豆荚中可以下到他的历史版本,许多手机由于适配或Android版本等一系列问题导致最新的apk安装后无法使用,会出现一堆蛋疼的问题,所以要么换手机要么可以试试虚拟机。
这里我使用的是红米1s+Android4.4.2+XposedInstall.apk(v2.7)+XposedBridge.jar-54来测试。
安装成功后画面如下:
点击框架,进入后点击“安装/更新”来安装Xposed框架(如图所示) ,重启后Xposed本地服务便安装完成了。
由于我这里已经安装好了,所以激活那里显示的是我当前XposedBridge.jar的版本54
2)从下载现有的Xposed模块使用或者自己编写Xposed模块
下载Xposed模块可以自己在网上找也可以在aok的下载界面里面下载。
在网上下载Xposed模块推荐在Xposed中文站 中下载
在apk的下载界面中下载如图所示:
寻找自己想要的模块,下载下来,安装后重启手机便可以愉快的使用了。
自己编写Xposed框架在下一篇文章中会具体介绍
Xposed框架开发入门(一)相关推荐
- Xposed框架开发入门
最近在学习Android逆向的时候涉及到了Hook方面的知识,所以研究了下Xposed和Cydiasubstrate框架,虽然最后还是成功搞起了,但是一路下来感觉还是有很多不顺的,所以在学习的时候就把 ...
- Xposed 模块开发入门
Xposed模块开发入门 阅读本文之前,你应该准备好以下事项: 安装 Android Studio,并完成配置 掌握 Xposed 的安装和使用方法 拥有阅读 Java 代码的能力 阅读本文之后你将掌 ...
- AndriodStudio 开发环境下实现Xposed模块开发入门。Xposed框架模块编写教程
前言: Xposed框架是一款开源框架,其功能是可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作.Xposed 就好比是 ...
- Xposed模块开发入门教程
前言:在高手如云的XDA论坛上Xposed框架都被许多开发者誉为"安卓第一神器".究竟是什么神奇的能力让它在众多APP中脱引而出呢?本文将指引大家完成一个Xposed上最简单的De ...
- Xposed模块开发入门,实现修改微信钱包显示的余额
一.什么是Xposed框架 Xposed框架是一款可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作. 二.为你的安卓设备 ...
- Xposed模块开发入门-最基本的项目创建
本人结合网络上的种种教程以及自己实践,记录下一个完整的基本Xposed模块项目的创建过程. 开发环境: Mac系统 AndroidStudio 3.2.1 gradle 3.2.1 VirtualXp ...
- webservice框架 java_Java CXF WebService框架 开发入门案例
使用CXF框架发布一个WebService服务,CXF版本:cxf-2.7.15. 服务器端代码案例: package com.what21.cxf.simple; import javax.jws. ...
- Xposed模块开发教程整理
Xposed模块开发教程 Xposed官网 Xposed官方文档 Xposed框架介绍 了解和使用Android神器Xposed框架 Xposed模块开发 Xposed模块开发入门 在手机状态栏增加显 ...
- Android Xposed 框架
一.Xposed框架简介 ● Xposed是Android平台上的一个常用的HOOK框架,可以在不改变程序源代码的前提下,影响程序的运行.一个支持Xposed的Android应用程序被称为一个Xpos ...
最新文章
- 便利vector_C++面试题之list和vector的区别
- 记一次 HTTP信息头管理器使用 的重要性
- HashSet中的add()方法( 三 )(详尽版)
- RAC8——scan ip的理解
- linux内核中等待队列
- c#求三角形面积周长公式_C#源代码—三角形面积、圆的面积
- Python装饰器总结,带你几步跨越此坑!
- 【服务治理】服务治理漫谈
- 2021-11-13 变电站综合自动化 二次系统安全
- 计算机共享输入命令是什么意思,笔记本电脑共享WiFi命令怎么使用
- 结构化数据与非结构化数据的区别
- 未来IT人才市场最热门的12项技能
- ShuZu数组中插入一个数
- 大学计算机课要怎么学,大学计算机课学结
- 罗切斯特大学读计算机博士,2020年罗切斯特大学博士申请条件
- 【ELT.ZIP】《CCF开源高校行第一期》观后感
- Java基础知识总结1(数据类型)
- 自动摘要生成(二):由PageRank转变而来的TextRank算法
- 基于React的富文本编辑器——Braft Editor使用
- Logback 配置文件这么写,TPS提高 10 倍
热门文章
- qt学习笔记 来自B站【最新QT从入门到实战完整版|传智教育】
- 说说百度快照不更新的原因及解决办法
- 台式计算机显示屏分辨率,终于认识电脑屏幕分辨率不正常怎么办
- SpringBoot 自定义Starter(阿里云短信、消息推送)
- 三体读后感+“全文剧透“
- Python操作阿里云OSS
- iThoughtsX Mac版思维导图软件快捷键分享
- 工业互联网---工业数据智慧化助力企业数字化转型升级,驱动生产决策,智能决策成工业互联网核心价值
- php decode
- 美团二面:为什么 Redis 会有哨兵?