iOS重签名

2018-11-13  本文已影响89人  Andyzhao

重签名步骤

准备一个embedded.mobileprovision文件(必须是付费证书产生的,appid、device一定要匹配),并放入.app包中
可以通过Xcode自动生成,然后在编译后的APP包中找到
可以去开发者证书网站生成下载

从embedded.mobileprovision文件中提取出entitlements.plist权限文件

security cms -D -i embedded.mobileprovision > temp.plist
/usr/libexec/PlistBuddy -x -c 'Print :Entitlements' temp.plist > entitlements.plist

查看可用的证书

security find-identity -v -p codesigning

对.app内部的动态库、AppExtension等进行签名

codesign -fs   证书ID   xxx.dylib

对.app包进行签名

codesign -fs   证书ID   --entitlements entitlements.plist xxx.app

重签名GUI工具

iOS App Signer
https://github.com/DanTheMan827/ios-app-signer
可以对.app重签名打包成ipa
需要再.app包中提供对应的embedded.mobileprovision文件

iReSign
https://github.com/maciekish/iReSign
可以对ipa进行重签名
需要提供entitlements.plist、embedded.mobileprovision文件的路径

动态库注入

可以使用insert_dylib库将动态库注入到Mach-O文件中
https://github.com/Tyilo/insert_dylib

用法
insert_dylib 动态库加载路径 Mach-O文件
有2个常用参数选项
--weak,即使动态库找不到也不会报错
--all-yes,后面所有的选择都为yes

insert_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/CydiaSubstrate
如果要将动态库插件打包到ipa中,也需要将CydiaSubstrate打包到ipa中,并且修改下CydiaSubstrate的加载地址

2个常用环境变量
@executable_path代表可执行文件所在的目录
@loader_path代表动态库所在的目录

上一篇下一篇

猜你喜欢

热点阅读