iOS重签名

 

需要付费账号

付费账号创建的配置文件,命名为embedded.mobileprovision(appId、device必须匹配),将该配置文件放入.app包中。

  •           通过Xcode自动生成,然后编译之后,在xxx.app的包中找到该配置文件。
  •           或者去开发者中心去配置下载。

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

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

 


复制相关文件到.app中

  • 将苹果开发者平台生成的embedded.mobileprovision复制到.app文件中
  • 如果通过Theos开发的动态库插件xxx.dylib,则需要把xxx.dylib和CydiaSubstrate文件复制到.app中

      动态库的路径为/Device/Library/MobileSubstrate/DynamicLibraries/xxx.dylib

      CydiaSubstrate文件可从越狱手机中找到,路径为/Device/library/Frameworks/CydiaSubstrate.frame/CydiaSubstrate


注入动态库

https://github.com/Tyilo/insert_dylib  

使用insert_dylib库将动态库注入要mach-O文件中

用法

  • 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 Math-O文件

例子:

insert_dylib @executable_path/WeChatBackTweak.dylib WeChat --all-yes --weak WeChat

更改动态库加载地址

  • 可以使用install_name_tool修改Mach-O文件中的动态库的加载地址

                 install_name_tool -change 旧地址  新地址 Mach-O文件

  • 通过Theos开发的动态库插件(dylib)

              默认都依赖于/Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate

             如果要将动态库插件打包到ipa中,也需要将CydiaSubstrate打包到ipa中,需要修改CydiaSubStrate的加载地址

install_name_tool -change /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate @loader_path/CydiaSubstrate WeChatBackTweak.dyli

 

2个常用环境变量

@executable_path代表可执行文件所在的目录

@loader_path代表动态库所在的目录


 

 查看可用的证书

  • security find-identity -v -p codesigning
  • 记录 证书ID 

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

  • codesign -fs 证书ID xxx.dylib
  • 包括新加入的动态库和CydiaSubstrate
  • codesign -fs *** wechatUnread.dylib
    codesign -fs *** CydiaSubstrate

对.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.mobieprovision文件的路径


 

 

注意

安装包中的可执行文件必须经过脱壳的,重签名才有效

.app包内部的所有动态库(.frameword,.dylib),AppExtension(Plugins文件夹,拓展名是appex),WatchApp(Watch文件夹)都需要重新签名

需要将之前从app store下载的app删掉,才能安装重签名之后的app,否则会安装失败

 

 

 

你可能感兴趣的:(移动开发)