前一段时间学了点儿逆向相关的一些东西,但是都是基于越狱手机上的操作,给视频类应用去广告之类的。随着苹果生态圈的逐渐完善、及苹果对自身系统的保护越来越严格,导致现在的iPhone手机并不像以前那样存在大量的越狱用户。
前段时间我自己申请了个微信小号,申请小号的目的就是原来微信号好友中乱七八糟的人实在太多,感觉自己的朋友圈都是一些无关紧要的垃圾信息,曾经关闭了一段时间的朋友圈,但是最近遇到了好多技术上很强的同行,还想了解大佬们的动态。于是我就想着申请了个小号,但是麻烦来了,iPhone手机并不像安卓手机那样存在着微信多开之类的应用,将自己手机越狱吧成本太高,于是就想着通过技术手段安装多个微信,下面步入正题:
为什么要重签名
其实我们平时开发的App,程序运行主要就是加载一个Mach-o
可执行文件。当我们将程序打包成ipa
文件,上传到App Store的时候,期间就是进行了一些加壳操作,比如:数字证书签名等。重签名的目的就是将别人的程序重新签上我们的证书信息。也可以简单理解为将别人的加密文件解密,加上我们自己的加密算法。
逆向当中的一些专业术语
- 加壳:利用特殊算法(iOS中数字证书),对可执行文件的编码进行改变,以达到保护程序代码的目的
- 脱壳:摘掉壳程序,将未加密的可执行文件
Mach-o
还原出来
查看应用是否加壳
将下载好的ipa
包解压缩之后,拿到里面的Mach-o
文件,cd
到所在目录,执行如下命令:
otool -l 可执行文件路径 | grep crypt
其中cryptid
代表是否加壳,1
代表加壳,0
代表已脱壳。我们发现打印了两遍,其实代表着该可执行文件支持两种架构armv7
和arm64
.
查看应用支持哪种架构
终端下执行如下命令查看架构信息
lipo -info 文件路径