当前位置: 首页 > news >正文

(学习笔记)Xposed模块编写(一)

前提:需要已经安装Xposed Installer

1. 新建一个AS项目

并把MainActvity和activity_main.xml这两个文件删掉,然后在AndriodManifest.xml中去掉这个Activity的声明

2. 在settings.gralde文件中加上阿里云的仓库地址,否则Xposed依赖无法下载

maven { url 'https://maven.aliyun.com/repository/public/' }

settings.gradle 

pluginManagement {repositories {maven { url 'https://maven.aliyun.com/repository/public/' }mavenCentral()maven {url 'https://jitpack.io'}google {content {includeGroupByRegex("com\\.android.*")includeGroupByRegex("com\\.google.*")includeGroupByRegex("androidx.*")}}gradlePluginPortal()}
}
dependencyResolutionManagement {repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)repositories {maven { url 'https://maven.aliyun.com/repository/public/' }mavenCentral()maven {url 'https://jitpack.io'}google()}
}rootProject.name = "MyFirstXposedPlugin"
include ':app'

3. 在app模块下的build.gradle文件中添加依赖

dependencies {// 必须使用compileOnly,否则Xposed Install会提示Cannot Load ModulecompileOnly "de.robv.android.xposed:api:82"......
}

4. 新建一个MyXposedModule类,里面我们hook一个普通方法

package com.example.myfirstxposedplugin;import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;public class MyXposedModule implements IXposedHookLoadPackage {@Overridepublic void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {// 在这里添加你的钩子逻辑XposedBridge.log("当前应用的包名:" + loadPackageParam.packageName);if (loadPackageParam.packageName.equals("目标应用的包名")) {// hookTargetMethod();}}private void hookTargetMethod() {// 在这里添加目标应用的方法钩子逻辑
//        Class<?> targetClass = XposedHelpers.findClass("目标类的完整路径", null);
//        XposedHelpers.findAndHookMethod(targetClass, "目标方法名", 参数类型.class, new XC_MethodHook() {
//            @Override
//            protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
//                // 在方法调用前执行的逻辑
//            }
//
//            @Override
//            protected void afterHookedMethod(MethodHookParam param) throws Throwable {
//                // 在方法调用后执行的逻辑
//            }
//        });}
}

5. 在assets目录下新建一个名为xposed_init的文件,在里面添加刚刚新建的类的全类名

com.example.myfirstxposedplugin.MyXposedModule

6. 在AndriodManifest.xml文件中将该项目声明成Xposed模块,添加如下代码:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"><applicationandroid:allowBackup="true"android:dataExtractionRules="@xml/data_extraction_rules"android:fullBackupContent="@xml/backup_rules"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.MyFirstXposedPlugin"tools:targetApi="31"><!-- 添加 Xposed 模块入口 --><meta-dataandroid:name="xposedmodule"android:value="true" /><!-- Xposed 模块的入口类 --><meta-dataandroid:name="MyXposedModule"android:value="com.example.myfirstxposedplugin.MyXposedModule" /><!-- 指定最低支持的 Xposed 框架版本 --><meta-dataandroid:name="xposedminversion"android:value="82" /> <!-- 使用你模块所需的最低版本号 --><!-- 提供模块的描述信息 --><meta-dataandroid:name="xposeddescription"android:value="这是我的 Xposed 模块,用于实现某某功能。" /></application></manifest>

最后将这个项目安装到实机或者模拟器中

你在Xposed Installer的侧边菜单栏中的模块标签页就能看到我们刚刚编写的模块了

勾选上然后重启手机

重启之后,如果能在日志界面看到如下的内容,则表示该模块激活了

希望对你有帮助

http://www.lryc.cn/news/251619.html

相关文章:

  • SSM框架(五):Maven进阶
  • 【计算机视觉】基于OpenCV计算机视觉的摄像头测距技术设计与实现
  • Java项目实战《苍穹外卖》 四、Swagger接口文档
  • 深度学习——第03章 Python程序设计语言(3.1 Python语言基础)
  • 【人工智能Ⅰ】实验6:回归预测实验
  • 前端下载文件的方法-blob下载
  • zookeeper+kafka+ELK+filebeat集群
  • 【LangChain实战】开源模型学习(2)-ChatGLM3
  • Python编程技巧 – 迭代器(Iterator)
  • C语言练习题
  • 常见的AI安全风险(数据投毒、后门攻击、对抗样本攻击、模型窃取攻击等)
  • flutter开发实战-为ListView去除Android滑动波纹
  • 牛客在线编程(SQL大厂面试真题)
  • ubuntu下快速搭建docker环境训练yolov5数据集
  • SpringMVC常用注解和用法总结
  • webpack如何处理css
  • IELTS学习笔记_grammar_新东方
  • 【计算机组成原理】存储器知识
  • vscode配置代码片段
  • vite脚手架,手写实现配置动态生成路由
  • 解决浏览器缓存问题
  • 【数据中台】开源项目(2)-Davinci可视应用平台
  • Java实现简单飞翔小鸟游戏
  • numpy实现神经网络
  • Bean的加载控制
  • 使用 OpenCV 识别和裁剪黑白图像上的白色矩形--含源码
  • LeetCode 每日一题 Day1
  • 【hacker送书活动第7期】Python网络爬虫入门到实战
  • 【算法】希尔排序
  • 四、Zookeeper节点类型