十五-iOS重签名

220 阅读2分钟
一 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_DYLIBLC_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代表动态库所在的目录

二 实例演示重签名