iOS重签名(手动签名)
2018-05-09 本文已影响494人
不忘初心_R
1、准备工作
- 1.1获取破壳的ipa包
借助PP助手下载越狱的IPA包,一般的APP在上面都是有的。点击下载可以找到对应的ipa包。(小坑:本来连着手机,没有下载两个字,只有安装。纠结半天。。后来把手机退了就OK了)
PP助手截图
- 1.2右键解压出app文件,这里以微信为例
WeChat.app
利用命令查看是否破壳 (codesign -vv -d 文件名)
$ codesign -vv -d WeChat.app
已破壳
附加一张正版的执行结果图
正版
- 1.3 查看可执行文件的加密信息
cd到app文件里面
$ cd WeChat.app/
执行命令
$ otool -l WeChat | grep crypt
执行结果
cryptid==0越狱应用 cryptid==1未越狱应用 不可用!
- 1.4 开发者证书&描述文件
通过本地CSR证书获取开发者证书,并安装到钥匙串(具体步骤就不演示了,自行百度)
执行命令查看本机证书列表
$ security find-identity -v -p codesigning
随便创建一个工程,选择好证书之后,连接真机编译。
工程
找到生成的app目录,show in finder -->显示包内容(内含描述文件)
2、进入正题
- 2.1 删除插件(在网上那些所谓的多开软件都是将此删除掉的)
右键显示包内容
将所有插件和watch.app删除
插件
watch.app
-
2.2 对FrameWorks进行签名
image.png
对 .app文件中 Framework 文件夹中库进行重签名,(没有的跳过)
重签名命令(codesign -fs "证书" 需要签名的文件)
$ codesign -fs "iPhone Developer: xxx (4N7XH2PX6N)" xxx.framework
注:有几个文件就要执行几遍,即对framework依次进行重签名!
下面是获取证书名字的地方
证书名字
- 2.3 给可执行文件执行权限
$ chmod +x WeChat
执行后变成可执行文件
-
2.4 拷贝描述文件
将上面备用的描述文件拷贝到WeChat.app文件中。 -
2.5修改info.plist中的Bundle ID
将info.plist 文件中的Bundle ID拷贝,将WeChat中的info.plist中的Bundle ID替换 -
2.6 生成plist权限文件
查看拷贝进来的描述文件(security cms -D -i 描述文件名)
$ security cms -D -i embedded.mobileprovision
权限文件
将权限文件复制,然后在xcode中生成一个plist文件,并复制到WeChat的同目录下。如图
效果图
- 2.7 签名整个APP!
$ codesign -fs "iPhone Developer: xxx (4N7XH2PX6N)" --no-strict --entitlements=lc.plist WeChat.app
签名成功
- 2.8 生成ipa包(或者右击直接改后缀为zip)
记得cd到上一级路径(payload的上一级) 执行命令(zip -ry 自定义名字.ipa Payload)
$ zip -ry WeChat.ipa Payload
最后通过Xcode或者其他方式将ipa包装到自己手机就OK了。亲测可用,手动签名成功
注:很多地方需注意cd的路径位置,没有表明很清楚
第一次认真的写文章,想尽可能的写详细点。