Android Xposed框架 -- 开发篇

2024-08-29 02:58
文章标签 android 开发 框架 xposed

本文主要是介绍Android Xposed框架 -- 开发篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Xposed模块


一、简介


【1】基于前面对Xposed框架的学习,下面将演示如何使用Android Studio创建并编写一个自定义的Xposed模块


【2】目标APP功能:点击按钮时,调用toastMessage()方法,弹出一个“我未被劫持”的Toast信息


【3】Xposed模块功能:实现对toastMessage()方法的Hook,并返回一个“你已被劫持”的字符串信息


Xposed框架API:http://api.xposed.info/reference/packages.html


二、模块开发流程


【1】目标APP:新建一个Activity,并添加一个按钮,实现目标APP的功能




【2】gradle配置:app/build.gradle文件中添加Xposed API对应的依赖




Note >>>  这一步也可以通过下载导入XposedBridge.jar的方式完成


1,下载链接:https://forum.xda-developers.com/xposed/xposed-api-changelog-developer-news-t2714067


2,安装参照教程:https://miketech.it/android-xposed-carrier-edit/


【3】AndroidManifest配置:application标签下添加3组meta-data配置




【4】Xposed模块:新建一个类HookToast,并实现IXposedHookLoadPackage接口


1,实现IXposedHookLoadPackage接口中的handleLoadPackage方法,并首先筛选到我们目标程序的包名


2, 调用XposedHelpers中的findAndHookMethod方法,对MainActivity中的toastMessage方法进行Hook


3,在Hook回调中的beforeHookedMethodafterHookedMethod方法里进行劫持操作




【5】assets目录下创建xposed_init文件:告诉Xposed框架模块的主入口类


1,添加assets文件夹:右键点击 app这个module  --> new --> Folder -->Assets Folder,然后确认即可




2,创建xposed_init文件:assets中new一个file,并在其中写上入口类的完整路径




【6】关闭Android Studio的Instant Run功能,否则直接run会报错




【7】运行项目:结果如下所示




Note >>>  因为Xposed框架是从根上Hook了Android Java虚拟机,所以需要Root权限,并且每次为它启用新插件APP时都需要重新启动才能生效!!!


【8】开启Xposed模块并软重启


1,选中模块




2,选择重启




3,运行结果




至此,一个简单的xposed模块就编写完成了,并且可以看到劫持篡改后的结果。


-------------------------------------------------------------------------------------------------------------------------------


【讨论】???直接手机重启,一直是未劫持,上面流程中是使用xposedInstaller进行软重启后的运行效果


两种重启方式对应的日志,如下所示:




三、参考资料


【1】http://blog.csdn.net/mrglaucusss/article/details/50963542?utm_source=itdadao&utm_medium=referral


【2】http://www.jianshu.com/p/2b8343c774df#


这篇关于Android Xposed框架 -- 开发篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1116648

相关文章

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

PyQt5 GUI 开发的基础知识

《PyQt5GUI开发的基础知识》Qt是一个跨平台的C++图形用户界面开发框架,支持GUI和非GUI程序开发,本文介绍了使用PyQt5进行界面开发的基础知识,包括创建简单窗口、常用控件、窗口属性设... 目录简介第一个PyQt程序最常用的三个功能模块控件QPushButton(按钮)控件QLable(纯文本

Python Web框架Flask、Streamlit、FastAPI示例详解

《PythonWeb框架Flask、Streamlit、FastAPI示例详解》本文对比分析了Flask、Streamlit和FastAPI三大PythonWeb框架:Flask轻量灵活适合传统应用... 目录概述Flask详解Flask简介安装和基础配置核心概念路由和视图模板系统数据库集成实际示例Stre

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

Spring 框架之Springfox使用详解

《Spring框架之Springfox使用详解》Springfox是Spring框架的API文档工具,集成Swagger规范,自动生成文档并支持多语言/版本,模块化设计便于扩展,但存在版本兼容性、性... 目录核心功能工作原理模块化设计使用示例注意事项优缺点优点缺点总结适用场景建议总结Springfox 是

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加