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. Linux_RHEL7_YUM
  2. mscoreei.dll没有被指定在windows上运行_在Windows上使用Docker运行.NetCore
  3. html中隔行的代码,js+css 控制表格隔行变色与单行高亮的代码
  4. boost::mpl模块实现lambda相关的测试程序
  5. 数据丢失与重复_大数据面试题分享-恭喜这位朋友刚毕业拿到了20K
  6. 机房系统(五)——【Excel表导出】
  7. Cloud for Customer的shell布局介绍
  8. 利用位运算的模四算法
  9. 1020 月饼 (25分)
  10. iphone-common-codes-ccteam源代码 CCNSArray.m
  11. magento 优化 php.ini,PHP.ini配置文件(中文) | Magento UI
  12. 使用Kalibr进行IMU+相机的标定
  13. 关键词提取算法TF-IDF
  14. Xshell官网免费版
  15. 光纤通道网络FC vs 以太网光纤通道FCoE
  16. dpkg: dependency problems prevent configuration in Ubuntu Linux问题解决
  17. java 左移和右移理解
  18. 红米NOTE3 双网通(2015617)刷机包 解账户锁
  19. php implode explode,php implode()函数与explode()函数的用法区别
  20. 计算机科学有科研,计算机科学领域科研合著网演化分析

热门文章

  1. Android动态画线 坐标画线动画
  2. Facebook Cookbook: Building Applications to Grow Your Facebook Empire
  3. CodeForces 383C
  4. SqlServer不显示服务器名
  5. 小程序系列之request 105错误
  6. Linux之Ubuntu入门篇
  7. 20230516使用python3确认三门问题
  8. Lua函数的调用(:和.的调用区别)
  9. 【每日一题】不创建第三个变量,实现两数的交换 (品茗笔试题)
  10. 2022年Redis最新面试题第8篇 - Redis缓存问题