点滴记录技术栈IOS闲时技术洋洋洒洒又一年

iOS逆向-ipa包重签名及非越狱手机安装多个微信

2018-06-25  本文已影响262人  编程新视野

前一段时间学了点儿逆向相关的一些东西,但是都是基于越狱手机上的操作,给视频类应用去广告之类的。随着苹果生态圈的逐渐完善、及苹果对自身系统的保护越来越严格,导致现在的iPhone手机并不像以前那样存在大量的越狱用户。

前段时间我自己申请了个微信小号,申请小号的目的就是原来微信号好友中乱七八糟的人实在太多,感觉自己的朋友圈都是一些无关紧要的垃圾信息,曾经关闭了一段时间的朋友圈,但是最近遇到了好多技术上很强的同行,还想了解大佬们的动态。

于是我就想着申请了个小号,但是麻烦来了,iPhone手机并不像安卓手机那样存在着微信多开之类的应用,将自己手机越狱吧成本太高,于是就想着通过技术手段安装多个微信,下面步入正题:

为什么要重签名

其实我们平时开发的App,程序运行主要就是加载一个Mach-o可执行文件。当我们将程序打包成ipa文件,上传到App Store的时候,期间就是进行了一些加壳操作,比如:数字证书签名等。重签名的目的就是将别人的程序重新签上我们的证书信息。也可以简单理解为将别人的加密文件解密,加上我们自己的加密算法。

逆向当中的一些专业术语

查看应用是否加壳

将下载好的ipa包解压缩之后,拿到里面的Mach-o文件,cd到所在目录,执行如下命令:

otool -l 可执行文件路径 | grep crypt
image

其中cryptid代表是否加壳,1代表加壳,0代表已脱壳。我们发现打印了两遍,其实代表着该可执行文件支持两种架构armv7和arm64.

查看应用支持哪种架构

终端下执行如下命令查看架构信息

lipo -info 文件路径
image

除了查看架构信息,还可以利用该指令导出某种特定架构、合并多种架构:

导出特定架构

lipo 文件路径 -thin 架构类型 -output 输出文件路径

合并多种架构

lipo 文件路径1 文件路径2 -output 输出文件路径

怎么给应用脱壳

给应用脱壳有两种途径:

前期准备工作:

其实重签名的方式有很多,比如:可以利用sigh resign命令,在终端下操作,还可以借助一些逆向相关的重签名工具,本文采用iOS App Signer

了解以上基本概念之后,下面正式开始史上最详细的重签名过程,以微信为例:

第一步:准备好脱壳后的微信App

我是直接从PP助手上下载的,感兴趣的可以自己手动脱壳

image

第二步:将对用的ipa文件解压,修改一些东西

注意:个人证书不能重签Extension文件,所以要删除ipa包中包含的相应文件,包括Watch里面的Extension,为了方便一般直接将Watch文件删除:

image image

第三步:利用iOS App Signer给微信重签名

image.gif image

签名完毕之后对应的文件夹下会生成重签名之后的ipa包

image

注意:利用iOS App Signer重签名,在删除掉相应的Extension,选择路径的时候,一定要选择Payload文件夹下对应的.app文件,否则会报找不到Payload文件夹的错误:

image

安装重签名之后的微信

可以用PP助手安装,也可以用Xcode安装,我采用Xocde安装:

image

不出意外地话,第二个微信就成功的安装到了你的手机上。如果装不上的话,基本上大部分原因就是证书不对。。。

最终效果

多个证书可以多次重新签名,安装多个相同的应用

image image

这篇文章图有点儿多。。。。。

注意:重签名方式安装的微信,是对微信APP的一种破解,会被官方认定为非安全软件,有被封号的危险。但是这种方式对破解各种其他软件都是有用的,利用逆向相关的知识,我们可以利用这种知识做很多我们想做的事儿!!!(不要做非法的事情哈!)

遇到的坑

错误一:

image

解决办法:证书不对,仔细检查下证书

错误二

image

解决办法:删除ipa包里面的watch相关的文件

image 喜欢晓雯!记得关注晓雯哟! 晓雯

作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要这是一个我的iOS交流群:687528266,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!

如果需要以下书籍,请加QQ群687528266免费分享
上一篇 下一篇

猜你喜欢

热点阅读