[原创]Xpatch---免Root实现App加载Xposed插件的一种方案-『Android安全』-看雪安全论坛
2020-05-16 09:47:23 Author: bbs.pediy.com(查看原文) 阅读量:518 收藏

  1. 看雪论坛
  2. 『Android安全』

[原创]Xpatch---免Root实现App加载Xposed插件的一种方案

2019-3-30 23:26 9087

[原创]Xpatch---免Root实现App加载Xposed插件的一种方案

源码

Github: https://github.com/WindySha/Xpatch

基本原理

Xpatch的原理是对Apk文件进行二次打包,重新签名,并生成一个新的可加载Xposed插件的Apk。

在Apk二次打包过程中,插入加载Xposed插件的逻辑,这样,新的Apk文件就可以加载任意Xposed插件,从而实现App免Root使用Xposed插件进行Hook。

Xposed Hook底层暂时使用的lody的whale方案。
支持Android 5.0 ~ 9.0。

使用方法

在github release界面下载jar包,命令行中执行如下命令即可:

$ java -jar ../xpatch.jar ../src.apk

这条命令之后,在原Apk文件(src.apk)相同的文件夹中,会生成一个名称为src-xposed-signed.apk的新apk,这就是重新签名之后的支持xposed插件的apk。卸载了Android系统里的原apk,安装新apk即可。

当然,也可以指定新Apk生成的路径,加上-o参数即可:

$ java -jar ../xpatch.jar ../src.apk -o ../dst.apk

Technology Discussion

对Xpatch感兴趣的可以加QQ群参与讨论:
QQ: 977513757


2019.4.20 updated
Xpatch v1.2版本发布, 支持自动破解app签名校验


2019.4.27 updated
Xpatch v1.3版本发布, 支持xposed插件打包到apk中

[培训]科锐逆向工程师培训班38期--远程教学预课班将于 2020年5月28日 正式开班!

最后于 2019-5-3 11:19 被WindStormy编辑 ,原因: updated

最新回复 (32)

cmputer 2019-3-31 09:11

2

0

支持楼主,学习楼主

Vn小帆 2019-3-31 14:50

3

0

免ROOT就可以实现很多功能了捏

aprice 2019-3-31 15:08

4

0

这个思路还是不错。。

开花的水管 2019-3-31 18:34

5

0

支持一下

tDasm 2019-4-1 08:19

6

0

关键是能够让你二次打包吗?可以这么说只要加壳了都不会允许2次打包。如果能够2次打包,个人认为基本上都不需要hook,直接反编译分析代码得了?

WindStormy 1 2019-4-1 10:12

7

0

tDasm 关键是能够让你二次打包吗?可以这么说只要加壳了都不会允许2次打包。如果能够2次打包,个人认为基本上都不需要hook,直接反编译分析代码得了?

你的观点很对。我在issue中也提到对于加壳的应用不适用。还是有很大一批应用没有加壳,可以适用。
对于可以二次打包的,这个工具主要解决修改代码的问题。
反编译分析代码之后,你怎样修改Apk源代码?直接改smali代码?还是改dex2jar工具利用asm修改?这样改都是要改到吐血吧
写个Xposed插件修改应该相对容易一些吧,虽然说也会一些缺点。

virjar 1 2019-4-1 13:47

8

0

太极可以对有壳的apk重打包。我尝试过

tDasm 2019-4-1 16:14

9

0

WindStormy 你的观点很对。我在issue中也提到对于加壳的应用不适用。还是有很大一批应用没有加壳,可以适用。 对于可以二次打包的,这个工具主要解决修改代码的问题。 反编译分析代码之后,你怎样修改Apk源代码? ...

你说得对,如果大量的修改代码,的确写个apk用hook更快。
这就不得不说,hook的目的是什么?如果hook的目的完全是为了拿来,那就不得不修改大量的代码来完善别人的apk。但是我想大部分hook的目的是破解吧。

aihacker 2019-4-3 13:19

10

0

Xposed root的原因是替换系统文件app_process需要root,免root如何实现hook系统类?原理是啥,很好奇

WindStormy 1 2019-4-3 14:42

11

0

aihacker Xposed root的原因是替换系统文件app_process需要root,免root如何实现hook系统类?原理是啥,很好奇

xposed需要root,因为要修改系统,Xpatch不需要root是因为它是修改了apk文件,插入了xposed模块加载代码。

tDasm 2019-4-3 17:12

12

0

virjar 太极可以对有壳的apk重打包。我尝试过

太极与VirtualXposed据说是同一个作者,两者都基于VirtualApp来实现APP进程入口劫持。并不是使用2次打包

坑大 2 2019-4-3 17:47

13

0

tDasm 太极与VirtualXposed据说是同一个作者,两者都基于VirtualApp来实现APP进程入口劫持。并不是使用2次打包

太极是重打包

坑大 2 2019-4-3 17:48

14

0

tDasm 太极与VirtualXposed据说是同一个作者,两者都基于VirtualApp来实现APP进程入口劫持。并不是使用2次打包

理论上无论什么壳,入口 Application 应该也是有的啊,所以为什么不能支持壳呢

virjar 1 2019-4-3 21:38

15

0

tDasm 太极与VirtualXposed据说是同一个作者,两者都基于VirtualApp来实现APP进程入口劫持。并不是使用2次打包

我之前也以为太极和virtualXposed是同一个原理。然后最近反编译了一下,太极的确实是重打包。

virjar 1 2019-4-3 21:42

16

0

我有一个和你差不多的产品,目前测试一个有壳的。失败了,不过定位了一下,问题不在重打包方案上面。在whale,只需要加载了whale程序就会崩溃。而且有意思的是,如果单纯只过签名(不hook,通过代理的方式过签名),不load whale,app能够正常启动,看起来是whale和壳同时hook了某个虚拟机函数导致的。因为没有壳的app,在同一个手机上面正常。whale现在好不稳,还有一个华为的手机,上去就崩溃。

最后于 2019-4-3 21:43 被virjar编辑 ,原因: at错人了

tDasm 2019-4-4 10:49

17

0

坑大 理论上无论什么壳,入口 Application 应该也是有的啊,所以为什么不能支持壳呢

昨天搜索太极介绍,以为不是2次打包(有些介绍不详细),今天再搜索发现的确是2次打包。这是原文介绍:(注意要卸载原来的应用就证明了)
点击太极首页右下角的浮动按钮,然后在弹出菜单中点击创建APP。
在选择APP的界面中选择你要应用 Xposed 模块的 APP,比如微信。
然后点击创建按钮,耐心等待创建完毕。
创建完成之后,太极会提示你需要卸载原APP;免Root模式中这是必要步骤(magisk模式无需),卸载即可。
跟随太极APP的指引完成余下操作,如安装-优化 等。

最后于 2019-4-4 11:03 被tDasm编辑 ,原因:

tDasm 2019-4-4 11:09

18

0

virjar 我有一个和你差不多的产品,目前测试一个有壳的。失败了,不过定位了一下,问题不在重打包方案上面。在whale,只需要加载了whale程序就会崩溃。而且有意思的是,如果单纯只过签名(不hook,通过代理的 ...

如果你在2次打包时创建类似VirtualApp的虚拟环境呢?以前的确不了解太极,估计太极也就是在2次打包时包含了 VirtualApp的虚拟安卓环境(那么2次打包后的apk应该膨胀不小)。

最后于 2019-4-4 11:11 被tDasm编辑 ,原因:

virjar 1 2019-4-4 11:52

19

0

tDasm virjar 我有一个和你差不多的产品,目前测试一个有壳的。失败了,不过定位了一下,问题不在重打包方案上面。在whale,只需要加载了whale程序就会崩溃。 ...

包含的不是类似VirtualApp的虚拟环境,因为打包的时候,AndroidManifest.xml内容已经是已知的了,不需要通过插桩的方式。二次打包如果不考虑原文件内容检查,那么不会膨胀太多。如果app有检查apk文件指纹,那么需要backup原始apk。重打包后app会膨胀为原始apk的两倍多一点

tDasm 2019-4-4 17:07

20

0

virjar 包含的不是类似VirtualApp的虚拟环境,因为打包的时候,AndroidManifest.xml内容已经是已知的了,不需要通过插桩的方式。二次打包如果不考虑原文件内容检查,那么不会膨胀太多。如果a ...

我的意思是如果你2次打包的时候就包含了VirtualApp的虚拟安卓环境,那么sign签名检测或文件效验检测等都可以过了,因为原程序基本上分不清已经被2次打包了。如果你不能做到完全安卓虚拟环境,那么就会有漏网之鱼被程序检测到。比如通过so直接读取apk文件检测是否2次打包。

mingxuan三千 2019-4-4 17:49

21

0

重打包  w-x  这种会封号的吧

最后于 2019-4-4 17:49 被mingxuan三千编辑 ,原因:

WindStormy 1 2019-4-6 22:52

22

0

mingxuan三千 重打包  w-x  这种会封号的吧

是的,使用几次后会,会收到微信消息,提醒继续使用会面临封号风险。不过,既然能加载Xposed插件,可以自己写Xposed插件Hook掉相关检验,比如签名检测等

kingstarhe 2019-5-3 19:26

23

0

virjar 我有一个和你差不多的产品,目前测试一个有壳的。失败了,不过定位了一下,问题不在重打包方案上面。在whale,只需要加载了whale程序就会崩溃。而且有意思的是,如果单纯只过签名(不hook,通过代理的 ...

你那个ratel怎么不弄了,可惜啊,虽然当初没成功过

kingstarhe 2019-5-3 19:31

24

0

virjar 我有一个和你差不多的产品,目前测试一个有壳的。失败了,不过定位了一下,问题不在重打包方案上面。在whale,只需要加载了whale程序就会崩溃。而且有意思的是,如果单纯只过签名(不hook,通过代理的 ...

现在很多应用没壳二次打包都是失败

virjar 1 2019-5-6 00:05

25

0

kingstarhe 现在很多应用没壳二次打包都是失败[em_26]

你用的xpatch么?xpatch内部的代码我没有分析很细,不清楚我踩过的那些坑他有没有踩过。不够目前我的框架还是相对比较稳定的。

WindStormy 1 2019-5-10 01:17

26

0

kingstarhe 现在很多应用没壳二次打包都是失败[em_26]

什么应用?二次打包失败报什么错误?

yy大雄 2019-12-6 11:12

27

0

  Algorithm: [SHA256withRSA]
  Signature:
0000: 2D 81 9A D7 46 E8 17 FA   A7 B5 8B 61 AA 63 C5 AE  -...F......a.c..
0010: C4 28 A7 48 73 77 F1 1B   C1 47 57 C4 18 3F A9 89  .(.Hsw...GW..?..
0020: 70 37 DF 72 00 88 DA 30   B5 F0 DB 1E 02 9F 90 BB  p7.r...0........
0030: 03 C5 7A 8F 47 AD C8 43   26 7C 94 FA A7 12 1B 99  ..z.G..C&.......
0040: 87 C5 FC 7F 0F 44 5C ED   BC 6F 3A 86 A8 9A E3 A8  .....D\..o:.....
0050: 23 82 8B EA 0D C5 94 62   24 07 BA 35 EB 6E E8 D4  #......b$..5.n..
0060: FE D4 04 E5 3B CB 66 08   39 1C A3 4B 64 07 A7 EA  ....;.f.9..Kd...
0070: 79 4A 55 06 20 2D 2D AB   B9 CA 9B 68 F1 04 5D 95  yJU. --....h..].
0080: 67 71 97 B4 2D E2 4D F0   94 85 E3 15 40 7C ED A0  gq..-.M.....@...
0090: D2 06 CE 53 25 09 14 E1   E0 AC D8 63 98 56 F9 63  ...S%......c.V.c
00A0: A1 3C A1 45 73 56 34 90   F1 82 27 49 13 7C 4C A3  .<.EsV4...'I..L.
00B0: 41 A0 39 73 35 E7 C1 1E   EB 01 7B F8 0F 3F 47 FE  A.9s5........?G.
00C0: 4C 9E 71 9D 12 AF CF E9   85 AA FF 34 4A 99 E5 8F  L.q........4J...
00D0: 2A 47 87 86 E1 47 68 05   DC BA 22 7D 59 24 63 C1  *G...Gh...".Y$c.
00E0: FB B1 87 81 A2 AE D1 E7   C0 46 CB B7 D2 B1 B0 6D  .........F.....m
00F0: 7E 4C 9D D6 8E F6 F7 D5   F4 EF B0 6C 4D 5C 6C 04  .L.........lM\l.

]
 --- dexFileCount = 2
dex2jar .\2019-12-06-11-10-29-tmp\test-apk-unzip-files\classes.dex -> .\2019-12-06-11-10-29-tmp\output-jar.jar  baseName =classes
isApplicationClassFounded ->  truethe dexPath is  .\2019-12-06-11-10-29-tmp\test-apk-unzip-files\classes.dex
  the application class is in this dex file  = classes.dex
jar2dex .\2019-12-06-11-10-29-tmp\output-jar.jar -> .\2019-12-06-11-10-29-tmp\test-apk-unzip-files\classes.dex
call com.android.dx.command.Main.main[--dex, --no-strict, --output=K:\adsdk\.\2019-12-06-11-10-29-tmp\test-apk-unzip-files\classes.dex, K:\adsdk\.\201
use default jarsigner to sign apk failed,and try again, fail msg is :java.io.IOException: Cannot run program "jarsigner": CreateProcess error=2, 系统
use inner jarsigner to sign apk failed, sign it yourself fail msg is :java.io.IOException: Cannot run program "chmod": CreateProcess error=2, 系统找不

请问下这是什么错误?

小黄鸭爱学习 2019-12-6 11:52

28

0

trouble writing output: Too many method references to fit in one dex file: 65538; max is 65536.
You may try using multi-dex. If multi-dex is enabled then the list of classes for the main dex list is too large.
求解

skyun 3 2019-12-6 12:43

29

0

小黄鸭爱学习 trouble writing output: Too many method references to fit in one dex file: 65538; max is 65536. You ...

一个dex数量超过65536需要执行分包操作,你可以用baksmali 把一个dex变成两个dex

小黄鸭爱学习 2019-12-13 15:16

30

0

yy大雄 &nbsp;&nbsp;Algorithm:&nbsp;[SHA256withRSA] &nbsp;&nbsp;Signature: 0000:&n ...

你这个是没有配置 java bin 路径 C盘下面找到 jarsigner.exe的路径 加到环境变量就行。

小黄鸭爱学习 2019-12-13 15:17

31

0

yy大雄 &nbsp;&nbsp;Algorithm:&nbsp;[SHA256withRSA] &nbsp;&nbsp;Signature: 0000:&n ...

群主你的群满人了,你能退出去让我加进去吗

WindStormy 1 2019-12-16 14:30

32

0

skyun 一个dex数量超过65536需要执行分包操作,你可以用baksmali 把一个dex变成两个dex

用Xpatch的app版本进行破解,没有65536的问题了
https://xposed-tool-app.oss-cn-beijing.aliyuncs.com/data/xposed_tool_v1.0.2.apk

WindStormy 1 2019-12-16 14:30

33

0

小黄鸭爱学习 trouble writing output: Too many method references to fit in one dex file: 65538; max is 65536. You ...

用Xpatch的app版本进行破解,没有65536的问题了
https://xposed-tool-app.oss-cn-beijing.aliyuncs.com/data/xposed_tool_v1.0.2.apk

游客

登录 | 注册 方可回帖

返回


文章来源: https://bbs.pediy.com/thread-250549.htm
如有侵权请联系:admin#unsafe.sh