iOS手动重新签名ipa包

2020-01-12  本文已影响0人  nilzz
codesign -d Offline.app   #查看可执行文件路径
codesign -d -v Offline.app   #查看更详细的信息
codesign -d -vv Offline.app  #查看更详细的信息,包含签名信息
codesign -fs “证书串” --no-strict --entitlements=权限文件.plist APP包 #签名.app包
codesign -fs “证书串” 目标文件.framework  #签名Frameworks目录下的可执行文件
codesign --force --verify --verbose --sign "证书串" 目标文件.dylib  #dylib 签名
security find-identity -v -p codesigning  #查看本地可用的证书
security cms -D -i embedded.mobileprovision #查看描述文件
chmod -R 777 二进制文件  #给二进制可执行文件权限
Zip -ry 压缩后输出文件名 要压缩的文件 #压缩文件

主要是获取embedded.mobileprovision描述文件
编译 -- 真机调试 -- 才能生成描述文件


img.png
img.png

有效期只有6天,拷贝embedded.mobileprovision描述文件到Offline.app目录下


img.png
img.png

修改需要签名文件夹里面的Info.plist文件,将之前Xcode里面的BundleID替换到Info.plist文件对应的地方


img.png
img.png

修改Info.plist文件后保存


img.png
security cms -D -i embedded.mobileprovision  #查看描述文件

复制红框内代码


img.png

com + N 选择创建 XX.plist文件


img.png
切换模式编辑plist文件
img.png

复制红框内代码粘贴到plist文件


img.png
切换回来的模式
img.png
img.14.png
拷贝文件,.plist文件 可以重命名,建议不要有空格
我把Property List.plist重命名为 re.plist
img.png

第三方库签名不了,注意检查第三方库,没有就过滤掉,有就删除
例如:Pluglns目录下的文件
Offline.app/XXX.app下包含有第三方库 把整个XXX.app删除

Frameworks目录下有.framework可执行文件必须一个一个签名

codesign -fs “证书串” 目标文件.framework  #签名Frameworks目录下的可执行文件

dylib 文件签名

codesign --force --verify --verbose --sign "证书串" 目标文件.dylib  #dylib 签名
img.png
security find-identity -v -p codesigning  #查看本地可用的证书
img.png
codesign -fs “证书串” --no-strict --entitlements=权限文件.plist APP包 #签名.app包

这里算把Offline.app签名完成了
新创建Payload目录,把Offline.app放进去
然后Payload目录压缩,压缩后文件后缀名重命名为ipa

Zip -ry 压缩后输出文件名 要压缩的文件 #压缩文件
img.png
img.png

安装的手机 ID 必须是和证书的一样,否则会提示设备不一,等待安装完成,安装完成后手机桌面会显示安装好的图标

The executable was signed with invalid entitlements.

The entitlements specified in your application’s Code Signing Entitlements file are invalid, not permitted, or do not match those specified in your provisioning profile. (0xE8008016).

注意BundleID 包名不能有非法数字开头
重新检查编写的权限文件.plist 是否有错误

只需要对砸壳的二进制可执行文件重新签名就可以了

codesign -fs “证书串” 可执行文件 #签名二进制可执行文件
img.png

前提需要安装有AppSync Unified插件(第一次安装需要重启才生效)
不签名可能会安装失败或者打开闪退
.app 目录下的embedded.mobileprovision描述文件删除
Payload
-----xxx.app
压缩后,后缀名重命名为ipa

上一篇 下一篇

猜你喜欢

热点阅读