Android 集成Xposed框架
前言
Xposed(框架)
Xposed框架(Xposed Framework)是一套开源的、在Android高权限模式下运行的系统框架服务,可以在不修改APK文件的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块或插件。
XopsedInstall
是管理和安装Xposed框架及Xposed模块或者插件的应用工具(apk);
注意:要区分Xposed和XposedInstall的概念;
Xposed及XposedInstall
https://github.com/rovo89
XposedInstall下载
https://repo.xposed.info/module/de.robv.android.xposed.installer
https://dl-xda.xposed.info/modules/de.robv.android.xposed.installer_v33_36570c.apk
Xposed的jar包
https://bintray.com/rovo89/de.robv.android.xposed/api
Xposed运行环境
手机必须ROOT,这也是Xposed的比较遗憾的地方;我使用的是逍遥模拟器,这样就解决了没有root手机的问题;
应用场景
可以通过集成了Xposed框架的App(模块或者说插件)来Hook其他APP,Hook能够将自己的代码“融入”被勾住(Hook)的进程中,成为目标进程的一部分;在Andorid沙箱机制下,Hook是我们能通过一个程序改变其他程序某些行为得以实现;
新建一个被Hook的APP
1,为了简单明了此APP只有一个主页面,里面有一个TextView显示Hook前后的不同;
此APP包名:com.ang.target
public class MainActivity extends AppCompatActivity {private TextView tv_hello;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tv_hello = findViewById(R.id.tv_hello);}
}
layout布局文件:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"><TextViewandroid:id="@+id/tv_hello"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="hello world"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout>
2,把被hook的应用安装到已经ROOT的手机或者Root的模拟器中;
集成Xposed框架的APP
项目地址:https://github.com/lz-ang/XposedSample.git
1,AndroidStudio新建项目,项目名称:XposedSample,此项目可以有Activity也可以没有;
如果没有Activity需要通过命令打包成APK,Terminal终端运行 gradlew app:assembleDebug命令打包apk
2,model下的build.gradle引入依赖,也可以不引入依赖,引入jar包的方式;需要注意都是在编译有效,打包的时候都不打包进去(compileOnly或者compileOnly fileTree);
compileOnly 'de.robv.android.xposed:api:82'
compileOnly 'de.robv.android.xposed:api:82:sources'
3,AndroidManifest.xml中配置
在Application标签里面(和Activity同级)加三个meta-data
<!-- 是否是xposed模块,xposed根据这个来判断是否是模块 -->
<meta-data android:name="xposedmodule" android:value="true" /> <!-- 模块描述,显示在xposed模块列表那里第二行 -->
<meta-data android:name="xposeddescription" android:value="测试Xposed模块" /><!-- 最低xposed版本号(lib文件名可知) -->
<meta-data android:name="xposedminversion" android:value="30" />
4,新建Hook工具类,类名自定义即可;并实现IXposedHookLoadPackage接口;
public class HookUitl implements IXposedHookLoadPackage {@Overridepublic void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {XposedBridge.log("Hook已经成功了");if (!lpparam.packageName.equals("com.ang.target")) {return;}if (lpparam.packageName.equals("com.ang.target")) {XposedHelpers.findAndHookMethod("com.ang.target.MainActivity",lpparam.classLoader, "onCreate", Bundle.class, new XC_MethodHook() {@Overrideprotected void afterHookedMethod(MethodHookParam param) throws Throwable {//不能通过Class.forName()来获取Class ,在跨应用时会失效Class c = lpparam.classLoader.loadClass("com.ang.target.MainActivity");Field field = c.getDeclaredField("tv_hello");field.setAccessible(true);//param.thisObject 为执行该方法的对象,在这里指MainActivityTextView textView = (TextView) field.get(param.thisObject);textView.setText("Hello Xposed");}});}}
}
5,新建assets目录,并在此目录下新建文件名为:xposed_init 的文件,如果提示选择文件格式那就选text格式即可;
xposed_init 文件中写里面的代码是你的Hook类的包名+类名。
com.ang.xposedsample.HookUitl
6,安装到Root的手机或者模拟器中
安装XposedInstall
1,安装XposedInstall
2,在XposedInstall中安装Xposed框架,目前最新版本89,点击Version 89,根据提示安装;如上图"安装/更新",安装成功后重启手机;安装成功之后的界面如下;
3,XposedInstall在模块中找到XposedSample模块,并勾选;重启系统;然后点击XposedSample运行起来(我的是有主Activity),点击被Hook的应用;你会发现TextView的内容被改变了;说明Hook成功了;
如果连不上模拟器,执行如下命令
adb connect 127.0.0.1:21503
Android 集成Xposed框架相关推荐
- Android之Xposed框架完全使用指南
文章目录 Xposed环境搭建 Xposed简介 Xposed原理 Xposed的安装 Xposed插件开发 Xposed插件编写流程 Xposed开发之Hook构造函数 相关API 无参构造函数的h ...
- android安装Xposed框架--魅族系列手机
工具:(说明适用于魅族Note2.Note3和Note5已测试.其他机型可以自测) 魅蓝Note2手机一部. 爱玩机(魅化UI). KingRoot(获取Root权限)[也可以登录Flyme账号,获取 ...
- [android]了解和使用神器Xposed框架
了解和使用Android神器Xposed框架-原全文 以下摘录: Xposed框架有什么好玩的 好玩有用的Xposed模块有很多,不过鉴于小编非常纯洁而且正直,像抢红包模块.刷屏模块这种不正义的模块, ...
- xp怎样安装android-studio,Xposed 框架的安装
借鉴: 安装流程: 安装 雷电模拟器3.93 下载安装xposed框架. xposed 框架在Dalvik 虚拟机和ART虚拟机上的安装不一样(至于ART虚拟机和Dalvik虚拟机的区别,可以参阅 文 ...
- 安卓逆向_22( 一 ) --- Xposed【 Android Studio + Xposed 实现简单的 hook 】
From:使用渗透测试框架 Xposed 框架 hook 调试 Android APP:https://www.freebuf.com/articles/terminal/56453.html Xpo ...
- Edxposed安装和xposed框架在Android 8.0以上手机使用最全攻略
d在网上,关于Xposed模块编写的博客文章可谓是一抓一大把.但由于时间的推移,很多工具和方法都发生了变化,也正因此,网上的文章往往有一些时限性,比如现如今 provide 这个关键字已经被舍弃了却仍 ...
- 未root手机如何使用Xposed框架(Android抓包无忧矣~)
一.目的 手机无法root还需要使用xposed框架配合JustTrustMe插件绕过SSL Pinning抓取手机应用数据包怎么办? 二.方法一:VirtualXposed 2.1 介绍 一 ...
- 014 Android之Cydia与Xposed框架入门
文章目录 Android Hook框架介绍 Cydia Substrate 插件编写步骤 实例:编写Cydia修改系统字体颜色 Xposed 插件编写步骤 实例:Hook获取手机序列号 准备工作 获取 ...
- android自动化持续集成,Android系统的持续集成自动化测试框架的研究与实践
摘要: 近几年,Android系统占据着智能移动设备操作系统领域中极大的市场份额.随着Android市场中软件数量的不断攀升,移动用户对Android应用的质量要求也越来越高.如何保证Android软 ...
最新文章
- linux进程通信:pipe实现进程同步
- 图灵直播——听胡阳老师和大家聊聊《Python Web开发者的破局之道》
- 最清晰的讲解各种梯度下降法原理与Dropout
- 使用SQLCMD在SQLServer执行多个脚本
- 库-libuv 和 libev的对比
- mysql有热备设置_Mysql数据热备配置与操作方法
- CREO图文教程:三维设计案例之一腔多模设计(定位参照零件导入模具模型)图文教程之详细攻略
- R语言混合效应(多水平/层次/嵌套)模型及贝叶斯实现
- 【高等数学】弧微分、渐近线、曲率和曲率半径
- WINDOW -- 给硬盘分盘以及合盘
- 大话 Python:python 操作 excel 系列 -- 数据的提取与筛选
- 从头开始训练一个词性标注模型
- 在linux系统上安装飞秋,linux [Fedora] 下的 飞秋/飞鸽传书
- python雪花_用 Python 实现雪花效果
- 开公司需要了解的相关法律
- Android实验报告
- 【EXCEL】多个sheet合并成一个sheet
- Bambook 网页内容下载器
- python爬虫+Flask可视化展示
- 来自苹果的编程语言——Swift简单介绍【整理】
热门文章
- qt 引发了异常: 写入访问权限冲突。this 是 0x7FF700000000。
- Bootstrap按钮样式
- Matlab / ArcGIS 处理GPM全球月均降水数据
- 数理统计(matlab实现)
- 如何在html页面中左尖括号,想要在HTML中显示一个尖括号“
- mysql 匹配多个字符,【单选题】在MySQL语句中,可以匹配0个到多个字符的通配符是( )
A. * B. % C. ? D. –...
- Android转换位图BUG,知其然不知其所以然
- 使用curl工具通过Gopher协议发送GET请求
- Windows 10 Insider Preview 预览版本19603发布
- 面积计算9860SD计算器程序(好用就用,不用就删-----歪XX)