美文网首页
iOS重签名

iOS重签名

作者: Andyzhao | 来源:发表于2018-11-13 21:27 被阅读89次

    重签名步骤

    准备一个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代表动态库所在的目录

    相关文章

      网友评论

          本文标题:iOS重签名

          本文链接:https://www.haomeiwen.com/subject/slrrfqtx.html