Xpatch:免Root实现App加载Xposed插件的一种方法

Xpatch概述

Xpatch用来重新签名打包Apk文件,使重打包后的Apk能加载安装在系统里的任意Xposed插件,从而实现免Root Hook任意App。

源码

github.com/WindySha/Xp…

Xpatch基本原理

Xpatch的原理是对Apk文件进行二次打包,重新签名,并生成一个新的apk文件。 在Apk二次打包过程中,插入加载Xposed插件的逻辑,这样,新的Apk文件就可以加载任意Xposed插件,从而实现免Root Hook任意App的Java代码。

Hook框架底层使用的是Lody的whale,支持的平台架构有:ARM/THUMB、ARM64,支持的andrid版本大致:Android 5 ~ Android 9

Xpatch工具包下载

点击我下载最新的Xpatch Jar包
或者进入github Releases页面下载:releases

使用方法

Xpatch项目最终生成物是一个Jar包,此Jar使用起来非常简单,只需要一行命令,一个接入xposed hook功能的apk就生成:

$ java -jar XpatchJar包路径 apk文件路径

For example:
$ java -jar ../../xpatch.jar ../../wechat.apk
复制代码

这条命令之后,在原apk文件(wechat.apk)相同的文件夹中,会生成一个名称为wechat-xposed-signed.apk的新apk,这就是重新签名之后的支持xposed插件的apk。

Note: 由于签名与原签名不一致,因此需要先卸载掉系统上已经安装的原apk,才能安装这个Xpatch后的apk

可用的Xposed模块示例

Note:一般来说,只要app可以被Xpatch破解,并且运行时没有做签名校验,与其相关的Xposed模块都是可用的。

可破解的App示例

  • 微信
  • 今日头条
  • 腾讯视频
  • 天天快报
  • 爱奇艺
  • Subway Surf
  • ...
  • 其他App

Todo

  1. 自动破解app签名
  2. 支持xposed插件直接打包到apk中
  3. 支持xposed插件中so文件的加载 ...

敬请期待....

源码解析

Xpatch实现原理文档已发布到个人技术公众号Android葵花宝典上。
微信扫一扫关注公众号即可查阅:

Issues

Xpatch是基于apk二次打包实现的,而且使用到了dex2Jar工具,因此,也存在不少的局限性。大概有以下几点:

  1. 对于使用了签名校验的应用,使用Xpatch得到的apk可能无法启动,或者无法获取到网络数据,比如优酷,趣头条等。不过,这种问题并不是致命性问题,既然app启动时可以加载xposed插件,那我们可以编写一个hook获取签名的方法的xposed插件,从而使校验签名能够顺利通过。具体实施细节稍后会在个人微信技术号上公开,欢迎关注:Android葵花宝典
  2. 有些app可能做了app加固,导致dex2Jar工具无法将dex文件解析为jar包,从而无法生成新的apk。这种问题暂时还无法解决。
  3. hook框架使用的是lody的Whale框架,此框架存在一些不稳定性,对少数方法的hook会导致崩溃,并且在某些机型上hook也会崩溃。
  4. Xposed Hook框架暂时不支持Dalvik虚拟机。
  5. 暂时不支持Xposed插件中的资源Hook。

结尾

欢迎Star, fork or PR.

转载于:https://juejin.im/post/5cacd097e51d456e853f80f7

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值