0. 准备
0.1 大体步骤
--> 1. 准备一个”xx.mobileprovision”文件,并放入“xx.app”包中
- 一定钥匙付费证书产生,appid和device一定要匹配
- 可以通过Xcode自动生成,然后再编译后的app包中找到,也可以去开发者网站中下载
--> 2. 从”xx.mobileprovision”文件中提取“entitlements.plist”权限文件
zhangli$ security cms -D -i embedded.mobileprovision > temp.plist
zhangli$ /usr/libexec/PlistBuddy -x -c ‘Print :Entitlements' temp.plist > entitltments.plist
--> 3. 查看可用的证书
zhangli$ security find-identity -v -p codesigning
--> 4. 对”xx.app”内部的动态库、AppExtension等进行签名
- codesign -fs 证书ID xxx.dylib
--> 5. 对”xx.app”包进行签名
- codesign -fs 证书ID —entitlements entitlements.plist xxx.app
codesign -fs B20AC265BC2ACCBF91977A9A79FB899C59E7C841 --entitlements entitltments.plist demo.app
0.2 加载tweek项目
—> 1. 编译tweek项目,打包成“tdemo.dylib”库
—> 2. 查看“tdemo.dylib”的支持动态库
zhangli$ otool -L tdemo.dylib
—> 3. 将“tdemo.dylib”和它所需的支持动态库一起拷贝到”xx.app”文件中
—> 4. 修改“tdemo.dylib”动态库支持路径
install_name_tool -change 旧地址 新地址 Mach-O文件
// @loader_path 动态库所在路径
install_name_tool -change /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate @loader_path/CydiaSubstrate tdemo.dylib
—> 5. 将”tdemo.dylib”添加进app的可执行文件
https://github.com/Tyilo/insert_dylib
// @executable_path 可执行文件路径
zhangli$ insert_dylib @executable_path/tdemo.dylib demo demo --weak --all-yes
—> 6. 将“tdemo.dylib”和它所需的支持动态库签名
zhangli$ codesign -fs F02CBDB652445C0F71CE7DE831784E06524D83EC tdemo.dylib
zhangli$ codesign -fs F02CBDB652445C0F71CE7DE831784E06524D83EC CydiaSubstrate
—> 7. 对“xx.app”进行签名
—> 8. 安装
2. 相关工具
2.1 可视化
—> 1. ios-app-signer
https://github.com/DanTheMan827/ios-app-signer
—> 2. iReSign
https://github.com/maciekish/iReSign