定制Xposed框架(干货)
由于很多APP开始针对XP做对应的检测如微信 支付宝 钉钉等 所以使用定制化的方式隐藏框架
常见检测方法
一. 由于Xposed的hook,是通过so修改被hook的方法为native来实现的,所以检测方也可以通过检测方法是否变成了native来达到检测的目的 Throwable.class.getDeclaredMethod(“getStackTrace” 是否Nativ方法
二. StackTraceElement getClassName 检测是否存在 de.robv.android.xposed. com.android.internal.os.ZygoteInit com.saurik.substrate. getMethodName检测 handleHookedMethod main invoked
三. 检查XposedHelper的成员fieldCache,methodCache,constructorCache
四. 检查xposed的文件
五. 检查 安装包
六. 检查 /system/lib 是否有xposed文件 /system/lib/libxposed_art.so /system/lib64/libxposed_art.so
七. 检查 /system/framework/XposedBridge.jar
八. 通过 代码抛出一个异常,在堆栈中检查是否含有 de.robv.android.xposed.XposedBridge 之类的
检查com.android.internal.os.ZygoteInit 是否出现了两次
九. 检查环境变量CLSAAPATH=/system/framework/XposdedBridge.jar
十. 检查 /proc/self/maps 通过读取 shell 命令 /proc/pid(应用进程id)/maps 可以拿到当前上下文的so和jar列表,查找Xposed相关
十一. 通过loadClass 检测 de.robv.android.xposed.XposedHelpers de.robv.android.xposed.XposedBridge
几种隐藏方案
1 java层检测XP特征值 可以根据应用获取XP特质值的方法定制HOOK修改隐藏 或者通用性HOOK代码解决 但只限于Java层 so中读取Xp文件就无效了
2 so 层检测如果能逆向代码在java层中找到上传的方法 也可以HOOK形式隐藏 缺点每个APP都得找而且检测代码一变就得改 及其不灵活
3 定制化XP框架 修改所有特征值也可以达到隐藏的目的
定制Xp是最好的解决办法 网络有一些相关资料 但都没有干货或者不全 网上暴露出来的基本上只教了XposedInstall XposedBridge的修改 在往下native层 Xposdtools 的修改资料几乎没有或者说跟没有差不多 所以有了这篇文章
在开始之前你必须去按照这篇博客 点这里 这个也行 先去编译android源码之后编译下官方的Xp (坑很多 要配的环境非常多 要有足够的耐心 )
上一步完成后就可以开始进行对应的修改
1 XposedInstaller.apk
负责安装Xp环境 其实就是下载与手机cpu架构SDK对应的zip 然后刷入手机和管理模块
环境 androidstudio 网络对应的资料都有我就随便写写
包名 随便改一个 AS直接改就行
名称 随便改一个
XposedApp.java | 修改 |
---|---|
BASE_DIR_LEGACY | /data/data/ 修改后的包名 |
BASE_DIR | data/user_de/0/ 修改后的包名 |
XPOSED_PROP_FILES | /su/xposed/XP的配置文件.prop 随便改个名字 |
2 XposedBridge-art.jar
给开发者提供对应的API支持 底层实现 jni调用libxposed-art.so 的native方法
环境 androidstudio 网络也有资料随便写写
原始包名:de.robv.android.xposed 随便改一个
原始名称:XposedBridge.jar 随便改一个
XposedInit.java | 修改 |
---|---|
INSTALLER_PACKAGE_NAME | 改成你上面修改的APK包名 |
3 Xposed
给Xpbridge提供API支持和调用了很多android-art的方法以及最重要的替换android zygote(app_process)
libxposed_common.h | 改成你修改后的XposedBridge包名 |
---|---|
CLASS_XPOSED_BRIDGE | 更改前: de/robv/android/xposed /XposedBridge |
CLASS_ZYGOTE_SERVICE | 更改前:de/robv/android/xposed /services/ZygoteService |
CLASS_FILE_RESULT | 更改前:de/robv/android/xposed /services/FileResult |
xposed.h | 修改 |
---|---|
XPOSED_PROP_FILE | /system/Xp的配置文件.prop 改成你之前APK时候改的 |
XPOSED_JAR | /system/framework/开发者jar包名称.jar |
XPOSED_LIB_ART | libxposed_art.so 随便改个名字如 libtest_art.so |
XPOSED_CLASS_DOTS_ZYGOTE | de.robv.android.xposed .XposedBridge 改成你之前定义的包名 |
XPOSED_CLASS_DOTS_TOOLS | de.robv.android.xposed. XposedBridge$ToolEntryPoint |
xposed_service.cpp | 改成你修改后的XposedBridge包名 |
---|---|
IMPLEMENT_META_INTERFACE | 更改前: de.robv.android.xposed .IXposedService |
xposed_shared.h | 改成你修改后的APK包名 |
---|---|
XPOSED_DIR | 更改前: /data/user_de/0/de.robv.android.xposed.installer / |
XPOSED_DIR | 更改前: /data/data/de.robv.android.xposed.installer / |
ART.mk libxposed_art.cpp | 修改成你定义的AS右键直接改名称 记得把.mk文件里的也改了 |
---|---|
libxposed_art | libtest_art.so |
4 Xposed-Tools
Xp框架的编译器 打包出可以刷机的zip 以下两个是打包脚本和刷机包脚本文件内容改成你对应的就好了 这点网上根本没有资料 全靠自己一个文件一个文件看巨坑
如果有源码不准备刷机安装Xp单独改buid.pl就好了
flash-script.sh不改刷机就会报错 缺少xpsoed.prop
build.pl flash-script.sh | 改成你修改后的XposedBridge包名 |
---|---|
xposed.prop | 修改成你定义的XP配置文件 |
XposedBridge.jar | 修改成你定义的开发者jar文件名称 |
libxposed_art | 修改成你定义的so名称 libtest_art |
思维导图
5 编译与运行
把Xposed项目复制到android源码/frameworks/base/cmds 下
在去下载与你编译的android源码对应的xpsoed版ART 进行替换
xposedtools 开始编译 静静等待就好了 我这里编译了 android5.1 android 6.1 arm arm64 x86手机可用的刷机包
数据线连接手机把对应的刷机包push到手机里 adb reboot recovery 选择刷机包安装即可 手机重启收即可看到
注意要使用定制版本的Xp 项目里的jar包一定得是你定制后的其他不用动
总结
在做之前认真复习了一遍zygote和Xposed框架的源码 由于网上资料过少经历了不少坑 很多都是自己摸索出来了 我觉得应该有不少人有这种需求所以写了这篇文章 希望能够帮助到你 有什么问题可以私信我
定制Xposed框架(干货)相关推荐
- 014 Android之Cydia与Xposed框架入门
文章目录 Android Hook框架介绍 Cydia Substrate 插件编写步骤 实例:编写Cydia修改系统字体颜色 Xposed 插件编写步骤 实例:Hook获取手机序列号 准备工作 获取 ...
- 如何在小米9 se(安卓9)安装Xposed框架?
Xposed 模块可以个性化你的安卓手机,让Android的开源成为真正的优势. 比如,我可以深度个性化微信,自动抢红包,防止撤回消息,朋友圈自动点赞,甚至可以修改微信运动等等. 修改机型,自动收集支 ...
- 小米4 Android 6.0 版本 Root 并安装 Xposed 框架攻略
本文首发:http://prototypez.github.io/2016/05/16/root-and-install-Xposed-framework-on-XiaoMi4-with-Androi ...
- 万物皆可 Hook,探究 Xposed 框架 Hook 原理
作者 |俞家欢 低头需要勇气,抬头需要实力 引言 平时用着 Android 手机,喜欢折腾的同学或多或少都接触过 Xposed 框架,解锁.Root.刷包,一气呵成.本文将从原理和实践两部分带大家了解 ...
- Xposed插件开发手册(1): Xposed框架的安装
前言 之前我写了一篇文章<定制ROM采坑之路(2):魔趣OS刷入小米5A手机过程详解>,在进行成功刷机后,我尝试将Xposed框架安装到我新刷的系统中了.因为我这里的操作是基于魔趣OS的, ...
- AndriodStudio 开发环境下实现Xposed模块开发入门。Xposed框架模块编写教程
前言: Xposed框架是一款开源框架,其功能是可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作.Xposed 就好比是 ...
- vivo7.0系统机器(亲测有效)激活Xposed框架的教程
对于喜欢搞机的机友来说,常常会使用到Xposed框架和种种功能牛逼的模块,对于5.0以下的系统版本,只要手机能获得Root权限,安装和激活Xposed框架是异常轻松的,但随着系统版本的升级,5.0以后 ...
- 7.0系统设备xposed框架激活经验
XPOSED框架基本介绍 xposed框架是基于Android系统平台的神器,大伙能够通过安装框架对应的功能模块来达到各种神奇的功能以及对系统各种底层的修改. 如何在Android系统上安装激活xpo ...
- 8.0系统安装Xposed框架失败Xposed framework version XX is installed
在使用xposed框架的时候,对于新用户来说,会通常遇到这个问题,即下载完xposed Installer之后,点击框架的时候,会跳出如下警告: The Xposed framework is not ...
最新文章
- 刻意练习:LeetCode实战 -- Task13. 罗马数字转整数
- shell脚本--03免密疑云
- 百度程序员哀叹:回老家发现村里很多人开保时捷,道奇等豪车,比程序员有钱多了!...
- 随机文件名生成可用于文件上传(图片)
- Python 直接赋值、浅拷贝和深度拷贝区别
- MySQL复习资料——用于突击考试总结
- css网页布局兼容性有哪些要点与诀窍
- java学习(137):java异常初识
- java动态内存分部,如何利用Java实现动态内存分配?
- MySQL服务器安装完之后如何调节性能
- 自定义微信小程序导航(兼容各种手机)
- Atiitt 日志技术的重大问题解决法 目录 1.1. 只想看某些日志,使用tag过滤法	1 1.2. 能方便清晰的列出某一业务(如支付)的完整的处理流程 业务tag	1 1.3. - NDC(N
- 树中两个节点的最低公共祖先节点
- Windows路由表的灵异事件
- CannotGetJdbcConnectionException:Failed to obtain JDBC Connection
- 程序设计思维与实践 Week14 限时大模拟A - 猫睡觉问题
- Unity矩阵乘法的区别
- 015:Scrapy获取淘车网十七万二手车数据
- Excel如何提取指定位数数字
- 单片机作业 可乐浇汁 “苦乐交织”