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模块示例

  • MDWechat
  • 文本自定义
  • ...
  • ...
  • 你自己编写的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

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

  1. 免Root 实现App加载Xposed插件的工具Xpatch源码解析(一)

    前言 Xpatch是一款免Root实现App加载Xposed插件的工具,可以非常方便地实现App的逆向破解(再也不用改smali代码了),源码也已经上传到Github上,欢迎各位Fork and St ...

  2. HTML 页面加载 Flash 插件的几种方法

    前言 之所以写这篇文章,主要是因为组长给提的一个新的需求--使用浏览器调用电脑的摄像头,来实现即时拍照的功能.在网上查了很多资料,由于这样那样的原因,最终选择了使用flash插件来调用pc的摄像头.当 ...

  3. Java动态加载一个类的几种方法以及invoke

    一.加载一个类的几种方法 接口 IUser package org.me.javaapp;/**** @author Administrator*/ public interface IUser {} ...

  4. 动态加载JS脚本的4种方法

    动态加载JS脚本的4种方法 2006-12-04 15:33 要实现动态加载JS脚本有4种方法: 1.直接document.write <script language="javasc ...

  5. 实现动态加载JS脚本有4种方法

    转自:微点阅读  https://www.weidianyuedu.com 实现动态加载JS脚本有4种方法: 1.直接document.write 这里重新温习Document.write()的用法, ...

  6. HTML5动态加载资源方式,动态加载JavaScript文件的两种方法

    这篇文章主要为大家详细介绍了动态加载JavaScript文件的两种方法,感兴趣的小伙伴们可以参考一下 第一种便是利用ajax方式,把script文件代码从背景加载到前台,而后对加载到的内容经过eval ...

  7. Android 插件化开发——宿主APP加载APK插件

    本篇博客说一下我们的宿主APP怎样加载别的APK文件. 首先需要说一些知识点,我们的Java文件要想在Android环境运行,需要将.java文件通过转为class文件,然后为了能在DVM上面运行,再 ...

  8. php动态加载js,动态加载script文件的两种方法_javascript技巧

    动态加载script到页面大约有俩方法 第一种就是利用ajax方式,把script文件代码从后台加载到前台,然后对加载到的内容通过eval()执行代码.第二种是,动态创建一个script标签,设置其s ...

  9. 获取固件加载基地址的几种方法

    IDA加载未知加载地址的固件,先加载到0地址,然后全部分析 方法1:通过swtich语句的jumptable定位基地址 以jumptable作为关键字寻找到任意jumptable,table中的地址都 ...

最新文章

  1. 此博客作废,请访问http://www.cnblogs.com/default
  2. Flutter开发之布局-1-Column(15)
  3. 尼康单反相机测试软件,尼康D4S数码单反相机专题测试
  4. 精准扶贫谋定产业化-农业大健康·万祥军:东平农业品牌化
  5. Linux编程MQTT实现主题发布订阅
  6. [css] 说说响应式设计(responsive design)和自适应设计(adaptive design)的区别?
  7. 天池入门赛--蒸汽预测
  8. 用SQL语句批量生成一个表的INSERT语句
  9. 线条边框简笔画图片大全_简笔画猪 手抄报图片边框版式大全
  10. 米斯特白帽培训讲义 挖掘篇
  11. delphi 2010 mysql_DELPHI 10.2 TOKYO搭建LINUX MYSQL开发环境
  12. 页面转发后文本显示???_无代码软件开发中超文本显示设计
  13. python机器学习
  14. 科研 | 中英文期刊分区介绍及查询方法
  15. kuangbin专题
  16. JEB动态调试debug模式
  17. Android 测试环境噪音分贝
  18. Oracle JDK究竟从哪个版本开始收费?
  19. 六个做PPT离不开的辅助插件,一秒让你的PPT逼格满满!
  20. 盘一盘那些提效/创意的宝藏网站

热门文章

  1. 仿链家地图找房_全网稀缺,完整链家地图找房的实现(一)
  2. tf::Stamped<tf::Pose>
  3. 苏宁大造818发烧节,玩得是哪招?
  4. uniapp + vue 定位聊天最新消息 实现滚动条一直在元素的最底部
  5. CAD取Excel表格
  6. unity3d 入门一
  7. 关于CWL来创作和分析的优势
  8. Java基础-异常机制
  9. bzoj 4997: [Usaco2017 Feb]Why Did the Cow Cross the Road III(Pu1 2018.10.1)
  10. 新手从零开始学习微信小程序开发01