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
对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
|
|
---|---|
|
支持楼主,学习楼主 |
|
免ROOT就可以实现很多功能了捏 |
|
这个思路还是不错。。 |
|
支持一下 |
|
关键是能够让你二次打包吗?可以这么说只要加壳了都不会允许2次打包。如果能够2次打包,个人认为基本上都不需要hook,直接反编译分析代码得了? |
|
tDasm 关键是能够让你二次打包吗?可以这么说只要加壳了都不会允许2次打包。如果能够2次打包,个人认为基本上都不需要hook,直接反编译分析代码得了? 你的观点很对。我在issue中也提到对于加壳的应用不适用。还是有很大一批应用没有加壳,可以适用。 |
|
太极可以对有壳的apk重打包。我尝试过 |
|
WindStormy 你的观点很对。我在issue中也提到对于加壳的应用不适用。还是有很大一批应用没有加壳,可以适用。 对于可以二次打包的,这个工具主要解决修改代码的问题。 反编译分析代码之后,你怎样修改Apk源代码? ... 你说得对,如果大量的修改代码,的确写个apk用hook更快。 |
|
Xposed root的原因是替换系统文件app_process需要root,免root如何实现hook系统类?原理是啥,很好奇 |
|
aihacker Xposed root的原因是替换系统文件app_process需要root,免root如何实现hook系统类?原理是啥,很好奇 xposed需要root,因为要修改系统,Xpatch不需要root是因为它是修改了apk文件,插入了xposed模块加载代码。 |
|
virjar 太极可以对有壳的apk重打包。我尝试过 太极与VirtualXposed据说是同一个作者,两者都基于VirtualApp来实现APP进程入口劫持。并不是使用2次打包 |
|
tDasm 太极与VirtualXposed据说是同一个作者,两者都基于VirtualApp来实现APP进程入口劫持。并不是使用2次打包 太极是重打包 |
|
tDasm 太极与VirtualXposed据说是同一个作者,两者都基于VirtualApp来实现APP进程入口劫持。并不是使用2次打包 理论上无论什么壳,入口 Application 应该也是有的啊,所以为什么不能支持壳呢 |
|
tDasm 太极与VirtualXposed据说是同一个作者,两者都基于VirtualApp来实现APP进程入口劫持。并不是使用2次打包 我之前也以为太极和virtualXposed是同一个原理。然后最近反编译了一下,太极的确实是重打包。 |
|
我有一个和你差不多的产品,目前测试一个有壳的。失败了,不过定位了一下,问题不在重打包方案上面。在whale,只需要加载了whale程序就会崩溃。而且有意思的是,如果单纯只过签名(不hook,通过代理的方式过签名),不load whale,app能够正常启动,看起来是whale和壳同时hook了某个虚拟机函数导致的。因为没有壳的app,在同一个手机上面正常。whale现在好不稳,还有一个华为的手机,上去就崩溃。 最后于 2019-4-3 21:43 被virjar编辑 ,原因: at错人了 |
|
坑大 理论上无论什么壳,入口 Application 应该也是有的啊,所以为什么不能支持壳呢 昨天搜索太极介绍,以为不是2次打包(有些介绍不详细),今天再搜索发现的确是2次打包。这是原文介绍:(注意要卸载原来的应用就证明了) 最后于 2019-4-4 11:03 被tDasm编辑 ,原因: |
|
virjar 我有一个和你差不多的产品,目前测试一个有壳的。失败了,不过定位了一下,问题不在重打包方案上面。在whale,只需要加载了whale程序就会崩溃。而且有意思的是,如果单纯只过签名(不hook,通过代理的 ... 如果你在2次打包时创建类似VirtualApp的虚拟环境呢?以前的确不了解太极,估计太极也就是在2次打包时包含了 VirtualApp的虚拟安卓环境(那么2次打包后的apk应该膨胀不小)。 最后于 2019-4-4 11:11 被tDasm编辑 ,原因: |
|
tDasm virjar 我有一个和你差不多的产品,目前测试一个有壳的。失败了,不过定位了一下,问题不在重打包方案上面。在whale,只需要加载了whale程序就会崩溃。 ... 包含的不是类似VirtualApp的虚拟环境,因为打包的时候,AndroidManifest.xml内容已经是已知的了,不需要通过插桩的方式。二次打包如果不考虑原文件内容检查,那么不会膨胀太多。如果app有检查apk文件指纹,那么需要backup原始apk。重打包后app会膨胀为原始apk的两倍多一点 |
|
virjar 包含的不是类似VirtualApp的虚拟环境,因为打包的时候,AndroidManifest.xml内容已经是已知的了,不需要通过插桩的方式。二次打包如果不考虑原文件内容检查,那么不会膨胀太多。如果a ... 我的意思是如果你2次打包的时候就包含了VirtualApp的虚拟安卓环境,那么sign签名检测或文件效验检测等都可以过了,因为原程序基本上分不清已经被2次打包了。如果你不能做到完全安卓虚拟环境,那么就会有漏网之鱼被程序检测到。比如通过so直接读取apk文件检测是否2次打包。 |
|
重打包 w-x 这种会封号的吧 最后于 2019-4-4 17:49 被mingxuan三千编辑 ,原因: |
|
mingxuan三千 重打包 w-x 这种会封号的吧 是的,使用几次后会,会收到微信消息,提醒继续使用会面临封号风险。不过,既然能加载Xposed插件,可以自己写Xposed插件Hook掉相关检验,比如签名检测等 |
|
virjar 我有一个和你差不多的产品,目前测试一个有壳的。失败了,不过定位了一下,问题不在重打包方案上面。在whale,只需要加载了whale程序就会崩溃。而且有意思的是,如果单纯只过签名(不hook,通过代理的 ... 你那个ratel怎么不弄了,可惜啊,虽然当初没成功过 |
|
virjar 我有一个和你差不多的产品,目前测试一个有壳的。失败了,不过定位了一下,问题不在重打包方案上面。在whale,只需要加载了whale程序就会崩溃。而且有意思的是,如果单纯只过签名(不hook,通过代理的 ... 现在很多应用没壳二次打包都是失败 |
|
kingstarhe 现在很多应用没壳二次打包都是失败[em_26] 你用的xpatch么?xpatch内部的代码我没有分析很细,不清楚我踩过的那些坑他有没有踩过。不够目前我的框架还是相对比较稳定的。 |
|
kingstarhe 现在很多应用没壳二次打包都是失败[em_26] 什么应用?二次打包失败报什么错误? |
|
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, 系统找不 请问下这是什么错误? |
|
trouble writing output: Too many method references to fit in one dex file: 65538; max is 65536. |
|
小黄鸭爱学习 trouble writing output: Too many method references to fit in one dex file: 65538; max is 65536. You ... 一个dex数量超过65536需要执行分包操作,你可以用baksmali 把一个dex变成两个dex |
|
yy大雄 Algorithm: [SHA256withRSA] Signature: 0000:&n ... 你这个是没有配置 java bin 路径 C盘下面找到 jarsigner.exe的路径 加到环境变量就行。 |
|
yy大雄 Algorithm: [SHA256withRSA] Signature: 0000:&n ... 群主你的群满人了,你能退出去让我加进去吗 |
|
skyun 一个dex数量超过65536需要执行分包操作,你可以用baksmali 把一个dex变成两个dex 用Xpatch的app版本进行破解,没有65536的问题了 |
|
小黄鸭爱学习 trouble writing output: Too many method references to fit in one dex file: 65538; max is 65536. You ... 用Xpatch的app版本进行破解,没有65536的问题了 |
返回