IOS应用重签名(三种方法)

终端命令(相关的一些指令)

•$security find-identity -v -p codesigning列出钥匙串里可签名的证书

•$Codesign–fs“证书串”文件名  强制替换签名

•$Chmod+x可执行文件  给文件添加权限

•$security cms -D -i ../embedded.mobileprovision 查看描述文件

•$codesign -fs “证书串” --no-strict --entitlements=权限文件.plistAPP包

•$Zip –ry输出文件 输入文件 将输入文件压缩为输出文件

用户权限

重签步骤

1.删除插件和带有插件的.app包(比如Watch)

2.对Frameworks里面的库进行重签名

3.给可执行文件 +x(可执行)权限

4.添加描述文件(新建工程,真机编译得到)

5.替换BundleID

6.通过授权文件(Entilements)重签.app包


实操一波

一、手动签名

    1、准备

        1.1、获取一个破壳的 ipa 包。

                可以通过PP助手下载越狱应用

        1.2、查看ipa包是否已经脱壳

                1.2.1、解压ipa包,进入playload文件夹,找到MachO文件

            1.2.2、在终端使用命令otool -l DingTalk | grep crypt,0是已脱壳,大于0是未脱壳(一般为1)                

        1.3、Apple Developer 开发者证书

                1.3.1、通过本地 CSR 从Apple Developer 网站申请开发者证书,安装到钥匙串。

                1.3.2、终端查看本地有效证书

                        命令:$security find-identity -v -p codesigning

    2、删除插件

        删除Plugins文件夹和Watch文件夹

    3、对所有.framework重新签名

        3.1、使用的命令

                $ codesign -fs "iPhone Developer: xxx " xxx.framework

        3.2、找到framework文件夹下所有.framework,分别使用上面的命令对其签名。

    4、描述文件(Provisioning Profile)

                描述文件包含了证书信息,App ID,具备调试、测试权限的设备,以及应用的一些功能信息等等,后缀名mobileprovision。

        4.1、使用XCode新建一个项目,选择需要使用证书。


         4.2、生成描述文件

                      然后build项目,在生成的.app中点击show in finder,接着显示包内容,找到生成的描述文件,放到ipa包->playload->xx.app包里面(MachO文件同级)

         4.3、创建entitlements.plist文件

                      查看描述文件内容,使用命令security cms -D -I embedded.mobileprovision,找到Entitlements节点,接着创建entitlements.plist文件,内容拷贝过去,最后把entitlements.plist文件拷贝到playload文件夹内(与xx.app同级)。

     5、修改xx.app包里面的info.plist中的bundleId为上面项目的bundleId

    6、对xx.app开始签名

         6.1、使用的命令

                    $ codesign -fs "iPhone Developer: xx" --no-strict --entitlements=entitlements.plist xx.app

7、生成ipa包

        7.1、使用的命令

                    $zip –ry 输出文件 输入文件 

        7.2、使用xcode或者助手安装

                    如果闪退,删除应用,先运行一遍上面创建的项目,然后在手机设置 通用 信任一下描述文件,再安装生成的ipa包。如果还闪退,请尝试下面使用xcode重签名方法。

二、使用xcode重签名

    1、重复上述1、2、3步骤,并修改info.plist

            修改info.plist中的BundleId为下面新建项目的BundleId,拷贝经过上述步骤xx.app备用

    2、使用xcode创建同名项目

    3、编译项目及替换xx.app


                使用步骤1中拷贝出来的xx.app替换上图中的xx.app    

    4、运行项目,重签名成功。

    5、生成ipa包

                成功运行项目到手机上后,一定要成功运行后,再次show in finder找到xx.app,拷贝xx.app。创建一个Payload文件夹,把xx.app放进去。


            5.1、使用的命令                

                    $zip –ry 输出文件 输入文件(Payload)

            5.2、使用xcode或者助手安装


三、使用脚本+xcode实现自动化重签名

    1、编写脚本sh


2、配置xcode运行脚本

    

    3、放置目标ipa

        把脚本放到项目同级目录下,以及创建targetApp文件夹。最后把需要重签名的IPA放到targetApp文件夹中。

    4、编译运行


至此已完成重签名,🍺🍺🍺🍺🍺🍺🍺🍺🍺🍺!

PS:此文章是一篇严肃的学术探讨类文章,仅仅用于学习研究,也请读者不要用于商业或其它非法途径上,笔者一概不负责哟~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 代码重签名 签名机制 iOS签名需要用到codesign这个命令,了解这个命令的用法可以增加我们对签名机制的了解 ...
    观星阅读 2,164评论 0 1
  • 一、越狱版应用重签名(正版的需要砸壳,这个以后介绍) 应用重签名需要以下几个步骤: 删除插件和带有插件的.app包...
    绿叶竹林阅读 1,482评论 0 1
  • 网上关于签名的脚本有很多,我找了个本人觉得比较好用的脚步iOS_resign_scripts,下载脚步里面有三个脚...
    涵元阅读 7,023评论 16 19
  • 为什么要重签名? 1、在没有源代码的情况下,你已经对某个应用进行了资源修改(比如修改了启动图或图标等)。修改完成以...
    Yochi阅读 8,632评论 9 11
  • 跟弟弟一样,从小便喜欢画画,不是去画那种很厉害的那种,就是喜欢画画动漫人物,或者去临摹一些小说人设。后来高中学业重...
    虎牙27阅读 220评论 2 1