美文网首页加密
iOS重签名了解一下

iOS重签名了解一下

作者: mai111 | 来源:发表于2018-04-09 18:18 被阅读340次

作为一个iOS开发者,大家可能或多或少都跟代码签名打过交道,但也可能很多人都没有去深入了解代码签名的流程以及机制,或许是因为业务上并没有这方面的需求,也或许是专注于代码的编写(这个台阶还OK吗🙂)等等。

在真机调试或者分发应用的时候,都需要我们配置好开发证书和描述文件这些操作才可以build success,这个时候相当于开发工具Xcode自动进行了一次签名,相当于用你拥有私钥的证书给app里所有编译成二进制代码的文件进行一次加密,以保证app的完整性。

然鹅,当你有这样的一些需求的时候,合作公司给你丢过来一个ipa包,你需要对包里的一些信息配置进行修改或者替换一些资源文件或者framework,这些操作会破坏原本ipa包的签名,安装在手机上的时候就通过不了苹果的校验,这个时候就需要用上重签名来解决了。对于游戏公司的从业者来说,合作渠道一多就经常需要对游戏包进行重签名以提快出包的速度。

那么对于给ipa包进行重签名,你需要了解以下这些原理以及操作,这里我用adhoc描述文件进行ipa包重签用于分发应用给内部工作人员测试。你需要有一个准备进行签名的ipa包,还需要有一个拥有公钥和私钥的开发证书以及包含这个证书的描述文件。

准备的证书和资源文件

安装证书,可以在钥匙串中看到你所拥有的证书,但是注意要拥有私钥的证书才可以给应用进行签名,也可以在终端上查看可以进行签名的证书列表

$ security find-identity -v -p codesigning

    1) C6C00376F3FAB3BFB33ECCE44D4698B1D5A4E293 "iPhone Distribution: CaiEn Rong (4Q3SJV59SN)"

解压ipa包模拟进行配置文件的修改或者资源的替换,然后把adhoc描述文件拷贝到app包里,改名为embedded.mobileprovision,签名要用到里面的权限列表

$ cp adhoc.mobileprovision Payload/yjcs_18341.app/embedded.mobileprovision

获取完整的权限列表,以plist文件格式导出

$ security cms -D -i adhoc.mobileprovision > entitlements_full.plist

截取其中签名需要用到的entitlements字段的键值

$ /usr/libexec/PlistBuddy -x -c 'Print:Entitlements' entitlements_full.plist > entitlements.plist

获取权限列表

接下来进行codesign,替换掉原来的签名,注意,如果修改了framework或者dylib都要对这些资源进行单独的签名

$ /usr/bin/codesign --continue -f -s "iPhone Distribution: CaiEn Rong (4Q3SJV59SN)" --entitlements "entitlements.plist" Payload/yjcs_18341.app

iPhone Distribution: CaiEn Rong (4Q3SJV59SN)是用来签名的证书

entitlements.plist是权限列表

Payload/yjcs_18341.app是app的路径

签名完成查看签名的完整性,没有任何输出就说明是完整的,基于Unix的设计哲学是没有输出就是好的

$ codesign -v Payload/yjcs_18341.app

也可以查看app的具体签名信息,可以看到app的bundle id,签名的证书以及开发团队等信息

$ codesign -vv -d Payload/yjcs_18341.app

最后就是把Payload文件夹压缩成ipa包,完成了一次ipa包的重新签名,你就可以把这个重新签名过的ipa包发给相关人员进行安装测试了。希望会对大家有所帮助🙂

相关文章

  • iOS应用重签名

    说到iOS重签,那么就应该了解iOS正常签名流程是什么,然后才能知道,我们重签名从哪几个地方入手。 iOS签名 代...

  • iOS重签名了解一下

    作为一个iOS开发者,大家可能或多或少都跟代码签名打过交道,但也可能很多人都没有去深入了解代码签名的流程以及机制,...

  • iOS重签名了解一下

    什么是代码签名 签名: 确保被签名文件的有效性 代码签名:iOS里的代码签名,简单概括就是用Mac上的私钥,对ap...

  • iOS应用重签名

    代码重签名 签名机制 iOS签名需要用到codesign这个命令,了解这个命令的用法可以增加我们对签名机制的了解 ...

  • 完善改写重签名Mac工具

    参考: iOS App 签名的原理 iOS企业重签名问题及经验 iOS重签名工具开发之路(介绍篇) ios-app...

  • iOS重签名

    重组 IPA (打包再签名) - 窥打包签名流程 iOS数字签名及ipa重签名 ipa重签名的四种方式 ios 企...

  • 逆向学习笔记

    重签名:iOS App 签名的原理--总结的非常细,一看就明白逆向学习笔记9——代码重签名ios-app-sign...

  • iOS开发逆向之应用重签名(上)

    本文主要介绍重签名的几种方式,以及如何对应用进行重签名, 应用重签名 从之前《iOS逆向应用签名》中可知,签名是指...

  • 【iOS开发】ipa 包修改及重签名

    iOS逆向 ipa包重签名

  • 008——逆向之APP重签名

    前言在先了解APP重签名之前我们先来了解一下数字签名 数字签名 数字签名过程中,就是利用了RSA加密来进行数字签名...

网友评论

    本文标题:iOS重签名了解一下

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