iOS应用重签名(手动)
从上面可以得知,双层签名其实本质就是如下三个步骤:
- APP的Bundle id的验证
- 描述文件本身的验证
- 对APP签名的验证
具体步骤:
Step 1 进入WeChat目录 解压出 Wechat7.0.2越狱 ,进入WeChat目录
// 进入WeChat的目录
cd /Users/dengbin/Desktop/分享/主目录/资料/Wechat7.0.2越狱/Payload
Step 2 查看APP的证书情况
codesign -d -vv「WeChat.app路径」
文章图片
Step 3 查看验证APP是否被加密 进入APP的包内容可以看到其中有一个WeChat的可执行文件,也就是是MachO文件,就是要查看这个MachO文件时候被加密
文章图片
文章图片
otool -l WeChat | grep cryp
其中
cryptid
为0
代表已经砸壳,即解密,为1
或者2
表示以第1类
或者第2类
加密方案加密。Step 4 查看本地证书并记录需要用到的证书
security find-identity -v -p codesigning
文章图片
Step 5 删除不可签名的插件(还有Watch中的插件) 由于本地存在一些插件,这些插件是不可被我们重签,并且这个过程我们用不着,所以我们索性就删掉。 其中包括:整个目录PlugIns目录和整个Watch目录(因为Watch.app中也有个PlugIns)
文章图片
文章图片
Step 6 Framework重签名 这一步就是比较繁琐的了,需要将Frameworks下的所有Framework进行重签名,运用到XCode提供的
codesign
指令,参数中的证书就是Step 4
中的一个。具体使用哪个就看个人了codesign –fs 「证书串」 「文件名」
文章图片
使用Xcode自带的 codesign进行重签名
codesign -fs A045DD673737AE67D691854647D3823D3DC18262 ConfSDK.framework
文章图片
Step 7 给MachO添加可执行权限 由于MachO本身就有可执行权限,所以这一步跳过。
Step 8 App重签名
- 新建一个WeChat同名工程(下文称NewWeChat,原来的微信APP称之为WeChat)
- Build NewWeChat工程,进入被编译出的WeChat.App目录,找到其中的embedded.mobileprovision文件,将其复制到WeChat.App(越狱微信)中
文章图片
文章图片
文章图片
- 在WeChat.App找到info.plist,并修改其中的BundleId为NewWeChat的BundleId
文章图片
文章图片
找任意①文件夹,把embedded.mobileprovision放进去
从embedded.mobileprovision文件中提取出entitlements.plist权限文件
security cms -D -i embedded.mobileprovision > temp.plist
/usr/libexec/PlistBuddy -x -c 'Print :Entitlements' temp.plist > entitlements.plist
文章图片
1.将entitlements.plist文件放入NewWeChat中
文章图片
2.将entitlements.plist复制到WeChat.app的同级目录下。
文章图片
文章图片
- 对APP重新签名 进入WeChat目录,对APP使用新的描述文件进行重签
codesign -fs 「证书串」 --no-strict --entitlements=entitlements.plist
codesign -fs A045DD673737AE67D691854647D3823D3DC18262 --entitlements entitlements.plist ~/Desktop/Payload/WeChat.app
文章图片
文章图片
- 压缩Playload
zip –ry 「输出文件名」 「输入文件名」
文章图片
Step 9 安装新的ipa 可以通过各种途径安装ipa,如Xcode,PP助手,fir,iTunes等等, 如果手机上有正版的微信,在安装完我们重签名的ipa包后会发现手机上就有两个微信啦!!!
如果想用LLDB调试微信,可以将重签后的WeChat.app替换NewWeChat Build后的WeChat.app,然后直接运行(Run)项目,就会发现我们可以用LLDB了。
Xcode安装ipa
Step 10 再次验证新的ipa是否真的重签成功 这一步其实是重复Step 3
codesign -d -vv「WeChat.app路径」
【iOS应用重签名(手动)】步骤总结:
1、cd WeChat // 进入WeChat的目录
2、codesign -d -vv「WeChat.app路径」 // 查看APP的证书情况
3、otool –l WeChat | grep cryp // 查看APP是否被加密
4、security find-identity -v -p codesigning // 查看本地证书
5、删除不可签名的插件(还有Watch中的插件)
6、codesign –fs 「证书串」 「文件名」 // Framework重签名
7、chmod +x 可执行文件// 给文件添加权限
8、App重签名
① 新建一个项目并且命名为 WeChat(下文称NewWeChat,原来的微信APP称之为WeChat) -> Build -> 找到APP中的权限文件 embedded.mobileprovision
② 复制embedded.mobileprovision到WeChat.app中
③ 修改WeChat.app中info.plist的BundleId
④ security cms -D -i 「 embedded文件路径」 //查看WeChat中的embedded文件,复制WeChat中entitlements.plist文件的entitlements字段
⑤ 在NewWeChat中新建entitlements.plist文件,将上一步复制得到的「entitlements字段和其中的内容」拷贝入新的entitlements.plist文件
⑥ codesign -fs 「证书串」 --no-strict --entitlements=entitlements.plist //复制新的entitlements到WeChat.app的同级目录,并且对APP重新签名
⑦ zip –ry 「输出文件名」 「输入文件名」 // 压缩Playload
9、安装ipa
10、再次验证新的ipa是否真的重签成功
- 注意:有些人会安装失败,或者安装成功会有Crash的问题,这是因为当前描述文件在我们的手机还不受信任,用新工程NewWeChat在手机上跑一遍,然后删除NewWeChat,在尝试安装新的ipa,问题可以解决。
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- Docker应用:容器间通信与Mariadb数据库主从复制
- 2.6|2.6 Photoshop操作步骤的撤消和重做 [Ps教程]
- JS中的各种宽高度定义及其应用
- 我们重新了解付费。
- 2020-04-07vue中Axios的封装和API接口的管理
- 人间词话的智慧
- 螃蟹和这些食物同吃,轻则腹泻、重则中毒!要小心哦~
- java中如何实现重建二叉树
- iOS中的Block