xposed是什么: 必须部署在ROOT后的安卓手机上,通过替换/system/bin/app_process程序控制zygote进程,使得app_process在启动过程中会加载XposedBridge.jar这个jar包,从而完成对zygote进程及其创建的dalvik虚拟机的劫持。

AS 开发xposed模块步骤(java sdk等环境配置略):

一、创建Empty Activity工程


选择好之后点击Finish

二、修改app/src/main/AndroidManifest.xml信息

AS以project模式显示,在如图所示加入红色框选中信息:

        <!-- 告诉这个模块是xposed模块--><meta-dataandroid:name="xposedmodule"android:value="true" /><!-- 该模块的描述信息--><meta-dataandroid:name="xposeddescription"android:value="这是hook ks的sig" /><!-- 该模块最低支持的版本--><meta-dataandroid:name="xposedminversion"android:value="44" />


如需修改模块名称: 以android模式显示,修改res/values/strings.xml中app_name属性。

三、修改app/build.gradle(配置XposedBridgeApi-xx.jar),用于从jcenter仓库拉取 de.robv.android.xposed:api:82 这个API

在build.gradle加入以下代码,点击右上角Sync Now(如网络不通,手动下载XposedBridgeApi-82.jar ,拖放到“项目名称/app/libs/”里面,然后右键“Add As Library” 自行添加这个jar包。而compileOnly ‘de.robv.android.xposed:api:82′和 compileOnly ‘de.robv.android.xposed:api:82:sources’这两句仍然照常添加。)

四、编写demo测试

在MainActivity.java中加入如下代码:

package com.example.xp;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {private Button button;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button = (Button) findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {Toast.makeText(MainActivity.this, toastMessage(), Toast.LENGTH_SHORT).show();}});}public String toastMessage() {return "Hello World!";}
}


在app\src\main\res\layout\activity_main.xml中加入如下代码:

 <Buttonandroid:id="@+id/button"android:layout_width="110dp"android:layout_height="50dp"android:layout_marginStart="141dp"android:layout_marginTop="88dp"android:layout_marginEnd="160dp"android:text="Button"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" />

在MainActivity统计目录下创建Test.java,写入如下代码:

package com.example.xp;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 Test implements IXposedHookLoadPackage {public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {if (loadPackageParam.packageName.equals("com.example.xp")) {XposedBridge.log(" hook到了!");Class clazz = loadPackageParam.classLoader.loadClass("com.example.xp.MainActivity");XposedHelpers.findAndHookMethod(clazz, "toastMessage", new XC_MethodHook() {protected void beforeHookedMethod(MethodHookParam param) throws Throwable {super.beforeHookedMethod(param);}protected void afterHookedMethod(MethodHookParam param) throws Throwable {param.setResult("已经hook成功!");}});}}
}

最后, 在main目录下建立assets/xposed_init(Text)文件:

编译运行,看效果吧!

附:android系统架构图

xposed模块开发流程相关推荐

  1. Xposed 模块开发入门

    Xposed模块开发入门 阅读本文之前,你应该准备好以下事项: 安装 Android Studio,并完成配置 掌握 Xposed 的安装和使用方法 拥有阅读 Java 代码的能力 阅读本文之后你将掌 ...

  2. Xposed模块开发指南

    1.Xposed框架是什么? Xposed框架是一款开源框架,其功能是可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运行. ...

  3. (译)Xposed模块开发教程

    (译)Xposed模块开发教程 原文地址.这是开发者所写的,可以说是官方开发指南.文章讲述了Xposed的原理,以及怎么开发Xposed框架的模块.头一次翻译技术文档,有错误的话请多包涵. 好了,你想 ...

  4. Xposed模块开发教程整理

    Xposed模块开发教程 Xposed官网 Xposed官方文档 Xposed框架介绍 了解和使用Android神器Xposed框架 Xposed模块开发 Xposed模块开发入门 在手机状态栏增加显 ...

  5. Xposed 模块开发笔记

    相关文章: Xposed 模块开发入门 最近使用 Xposed 过程中遇到一些问题以及常识, 所以做下记录, 方便之后再次使用 MyLog 为自定义的日志输出类, 可以使用 XposedBridge. ...

  6. AndriodStudio 开发环境下实现Xposed模块开发入门。Xposed框架模块编写教程

    前言: Xposed框架是一款开源框架,其功能是可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作.Xposed 就好比是 ...

  7. Xposed模块开发教程(一) 了解并使用Xposed

    系列教程: Xposed模块开发教程(一) 了解并使用Xposed http://blog.csdn.net/u014418171/article/details/52910768 Xposed模块开 ...

  8. Cesium 材质模块开发流程——方式2

    为了规范开发思路和流程,使代码易于扩展和维护,现参考Cesium官方的材质系统设计材质模块开发流程.与方式1相比 这种较为灵活,但没有封装到sdk傻瓜.Cesium 材质模块开发流程--方式1_苹果园 ...

  9. Xposed模块开发

      最近突然看到了Xposed这一项技术,觉得蛮有意思的,现在的蚂蚁森林自动收能量以及微信自动回复等都是通过这个来实现的,因此记录一下Xposed的基本实现. Xposed框架介绍 概述   Xpos ...

最新文章

  1. java算法----排序----(6)希尔排序(最小增量排序)
  2. 玩转Linux:常用命令实例指南
  3. Code片段 : .properties属性文件操作工具类 JSON工具类
  4. [BZOJ2179]FFT快速傅立叶
  5. git 的安装以及使用:是一个开源的分布式版本控制系统,可以对项目进行版本管理。 早期是linux之父用来管理linux系统源代码的(linux是和windows一样操作系统 开源免费的操作...
  6. java 如何导出json文件_java导出json格式文件的示例代码
  7. 通信网络安全还应从基础设施保护做起
  8. 创作优质的视频号作品四个方向
  9. linux load average,理解Linux中的Load Average
  10. (超详细)夜间灯光总值TNLI如何得到
  11. Elasticsearch 5.x 源码分析(3)from size, scroll 和 search after
  12. matplotlib绘制李萨如图(二) animation实现动态2D李萨如图
  13. python毕业设计总结范文大全_关于毕业设计总结范文
  14. 武汉年会签到,抽奖,摇一摇,微信上墙,互动大屏
  15. 浏览器全屏相关常用代码
  16. java gprs通信教程_S7-1200 GPRS通讯快速入门
  17. Spark 和hadoop的一些面试题(准备)
  18. C++下的OpenCV中Mat类型存储的图像格式
  19. Mac 蓝牙鼠标卡顿的解决方法
  20. 8c sql手册 五

热门文章

  1. ECharts百度地图BMap禁用地图导航
  2. 若依框架关闭tab刷新另一个tab
  3. 用 MySQL 实现一个分布式锁
  4. 虚拟偶像是未来趋势吗?
  5. Python图像处理基础
  6. 用MQTT.fx检查发布和订阅的mqtt消息
  7. ubuntu22.04安装pytorch(一遍过)
  8. API 网关实现功能
  9. minus oracle 顺序_Oracle Minus 取差集
  10. 最全面的MySQL高可用方案