以下内容来自WebSec星球群Hide师傅投稿
1. 环境准备
Xposed源码编译的过程中, 我们需要详细的了解Xposed中不同模块对应的版本以及适配的 Android 版本情况, 这样能够帮助我们减少错误,本文实验的环境搭建为:
实现平台 |
mac |
实验手机 |
pixel xl |
开发工具 |
android studio2020.3.1 |
lspXposed |
1.7.2 |
2. 模块简述
编写一个xposed模块,也就是开发一个安卓app 。和普通程序本质上是一样的,
不一样的点在于:
● 让Xposed知道我们安装的这个程序是个xposed模块。
● 模块里要包含有xposed的API的jar包, 以实现下一步的hook操作。
● 这个模块里面要有对目标程序进行hook操作的方法。
● 要让手机上的xposed框架知道, 我们编写的xposed模块中, 哪一个方法是实现hook操作的, 也就是hook类的入口。
3. 模块编写
1.创建项目:
2.添加依赖
添加Xposed Framework API到project,在app/buid.gradle中的dependencies段里添加:
Plain Text |
|
1 2 |
compileOnly 'de.robv.android.xposed:api:82' compileOnly 'de.robv.android.xposed:api:82:sources' |
3.修改AndroidManifest.xml
告诉EdXposed知道我们安装的这个程序是个xposed模块 。做法是在application字段中加入:
Plain Text |
|
1 |
<meta-data |
2 |
android:name="xposedmodule" |
3 |
android:value="true"/> |
4 |
<meta-data |
5 |
android:name="xposeddescription" |
6 |
android:value="针对***屏蔽ROOT以及设备检测"/> |
7 |
<meta-data |
8 |
android:name="xposedminversion" |
9 |
android:value="53"/> |
● xposedmodule 表明是—个xposed模块
● xposeddescription 描述
● xposedminversion API version(—般等于构建它的Xposed的version)
4.添加入口点
右键点击“main ”文件夹 , 选择new --> Folder -->Assets Folder,新建assets 文件夹:
然后右键点击 assets文件夹, new--> file, 文件名为xposed_init( 文件类型选text), 并在其中写上 入口类的完整路径( 就是自己编写的那一个Hook类), 这样, Xposed框架就能够从这个 xposed_init 读取信息来找到模块的入口:
5.分析案例:
应用具有Root检测:
应用具有平板检测: 【只能在平板上运行】
6.编写hook代码
如果只是用作xposed的一个模块的话, Main Activity其实是不需要的, 可以选择delete 。但是要 先把AndroidManifest.xml里Main Activity的部分删除并且把main/res/layout里的主界面布局文件 删掉。
在MainActivity同级目录建立bypassRoot.java,所有的hook入口类必须是IXposedMod的实现 类:
对是否需要hook的应用进行判断, 并且hook上述两处检测方法, 进行绕过:
注:hook片段不会编写, 可通过jadx快捷键y生成。
7.绕过成功
WebSec星球介绍
-
我们郑重承诺,每个工作日都会定时推送高质量的1day,有时也会分享未公开的0day,新增实战案例。
-
目前星球价格为¥99。报名人数达到120人后,费用将上涨至¥199元,达到200人后,费用将上涨至¥299元。
-
转发至其他公众号5个拥有100人以上的安全群,加微信后提供截图,私聊球主价格可低至¥66元,但不支持退款
-
欢迎投稿最新漏洞poc或复现分析文章,符合条件的投稿者将获得一年免费会员资格。
-
节假日期间,我们会发放一定数量的优惠券,数量有限,先到先得。
星球目前更新漏洞如下:
更多漏洞poc发布在知识星球
原文始发于微信公众号(WebSec):一个简单的Xposed模块编写
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论