一 iOS重签名步骤流程
二 实例演示重签名
iOS APP重签名就是对已经导出的ipa文件,利用iOS新证书重新对ipa加密构建的过程!达到让原本不能安装到苹果手机的ipa文件,变成可以安装的ipa包!
一 iOS重签名步骤流程
准备工作
1 准备一个embedded.mobileprovision文件(必须是付费证书产生的,appid,device,一定要匹配),并放入app包中
- 可以通过Xcode自动生成
- 可以去开发者证书网站生成下载 2 从embedded.mobileprovision文件中提取出entitlements.plist权限文件
security cms -D -i embedded.mobileprovision > temp.plist
/usr/libexec/PlistBuddy -x -c 'Print :Entitlements' temp.plist > entitlements.plist
3 查看可用的证书
security find-identity -v -p codesigning
4 对app内部的动态库,AppExtension等进行签名
codesign -fs 证书ID xxx.dylib
5 对app包进行签名
codesign -fs 证书id --entitlements entitlements.plist xxx.app
重签名GUI工具
1 iOS App Signer github.com/DanTheMan82… 1 可以对app重签名打包成IPA 2 需要在app包中提供对应的embedded.mobileprovision文件 2 iReSign github.com/maciekish/i… 1 可以对app重签名 2 需要提供entitlements.plist, embedded.mobileprovision文件的路径
动态库注入
可以使用insert_dylib库将动态库注入到Mach-O文件中 github.com/Tyilo/inser… 用法
insert_dylib 动态库加载路径 Mach-O文件
有两个常用参数选项
- --weak ,即使动态库找不到也不会报错
- --all-yes,后面所有的选择都为yes
inertlib_dylib的本质是往Mach-O文件的Load Commands中添加了一个LC_LOAD_DYLIB或LC_LOAD_WEAK_DYLIB
可以通过otool查看Mach-O的动态依赖库信息
otool -L Mach-O文件
更改动态库加载地址
可以通过使用install_name-tool修改Mach-O文件中动态库的加载地址
install_name_tool -change 旧地址 新地址 Mach-O文件
通过Theos开发的动态库插件(dylib)
默认都依赖于/Library/Frameworks/CydiaSubstrate.framework/CydisSubstrate
如果要将动态库插件打包到ipa中,也需要将CydiaSubstrate打包到ipa中,并且修改下CydiaSubstrate的加载地址
2个常用的环境变量
@executable_path 代表可执行文件所在的目录
@loader_path代表动态库所在的目录