北京现在一般治疗白癜风多少钱 http://baidianfeng.39.net/bdfby/yqyy/用签名工具签名发现签不出来,提示错误
尝试了很多方法,然后把能够实现的方法记录一下
1,解压ipa包1.1直接ipa后缀为.zip,然后解压,显示包内容。或者使用命令行,使用命令行要注意先cd到想到保存的文件下或者增加输入位置unzipapp.ipaapp.ipa就是ipa路径然后得到一个名为Payload的文件夹,之后显示包内容2,删除codCodSignatur显示包内容里面,有一个文件夹删除它,或者命令行:rm-rfPayload/app.app/_CodSignatur,命令行注意cd路径3,替换描述文件找一个自己的ipa包,解压缩找到mbddd.mobilprovision文件,复制粘贴,然后在需要签名的包里面替换这个文件命令行:cp~/自己的app.mobilprovisionPayload/需要签名.app/mbddd.mobilprovision,签名我这边直接是把开始解压的包打包成ipa,然后用工具签名就可以了手动打包:payload文件压缩为zip,改zip后缀为ipa命令行打包:zip-rapp.ipaPayloadPayload为需要打包成ipa的文件,然后把打包出来的ipa文件用工具签名。然后再装就OK了或者使用命令行打包进行重签名:/usr/bin/codsign-f-s"证书名称"--rsourc-rulsPayload/*.app/RsourcRuls.plistPayload/*.app/或者/usr/bin/codsign-f-s"证书名称"/cd地址/Payload/YouApp.app打包ipazip-rapp.ipaPayload然后再装1、分析Appl对App加密的需求
首先明确一点,对App加密肯定是用要非对称加密而不是对称加密!
Stp1安装App到手机的渠道分析
如果所有的APP都是从AppStor下载的那么,这就简单了,只需要对APP进行一层RSA加密就可以了,AppStor持有私钥,我们iPhon持有公钥。那么问题就解决了。但事实上肯定不是这样,我们已知的渠道除了AppStor就包括XCod打包,ADHOC证书分发,企业证书分发等等。为了解决这个问题,我们就得先了解Appl的具体需求是什么。Stp2分析需求AppStor下载XCod直接安装限制ADHoc打包的APP安装设备...等等2、什么是双层签名
针对以上三种(包括但不只)场景,苹果给出「双层签名」的机制。什么是「双层签名」,先上一张PPT。
看不懂?没关系,下面会一步步,详细的接受双层签名的始末。
1、向服务器申请证书
什么是CSR文件申请过开发者证书的都知道,要申请证书,都有「Mac本地通过CSR文件向服务器」这样的一步。那么这一步到底做了写什么呢?先看看什么是CSR
CSR是CrtificatSigningRqust的英文缩写,即证书请求文件,也就是证书申请者在申请数字证书时由CSP(加密服务提供者)在生成私钥的同时也生成证书请求文件,证书申请者只要把CSR文件提交给证书颁发机构后,证书颁发机构使用其根证书私钥签名就生成了证书公钥文件,也就是颁发给用户的证书。
通俗一点,就是Mac本地有一对公钥(公钥M)和私钥(私钥M)(什么是公钥私钥?),在Mac上对公钥M进行了一层包装,这包装后的新东西就是CSR。
服务器通过CSR返回证书本地有了CSR文件之后,将CSR上传到Appl的服务器。
Appl服务器其实也是有一对公钥(公钥A)和私钥(私钥A),在收到Mac上传过来的的CSR文件之后,取出其中的公钥M,用Appl服务器的私钥A对公钥M进行一次数字签名(什么是数字签名?)得到开发证书,
然后将开发证书附入描述文件(描述文件还有哪些东西下文会有讲到),最后将描述文件传回给我们的Mac电脑。
2、描述文件
配置描述文件是XML文件,包含以下内容:设备的安全策略和限制、VPN配置信息、无线局域网设置、电子邮件帐户和日历帐户以及可允许iPhon、iPodtouch和iPad配合您的企业系统使用的鉴定凭证。配置描述文件能快速地将设置和授权信息载入到设备上。有些VPN和无线局域网设置只能使用配置描述文件来设定,而且如果您使用的不是MicrosoftExchang,则将需要使用配置描述文件来设定设备密码策略。描述文件包括的东西,如:
开发证书APP的BundlId证书所信任的DvicId还有一些权限文件(如:ApplPay,通知,VPN,iCloud)3、Mac打包APP
在Mac本地有了描述文件之后,就可以对APP进行打包了,打包这个过程除了对APP的压缩之外,更重要的其实是指对APP的加密。
之前本地把公钥M发送给Appl服务器,本地剩下的私钥M就是用来加密APP的,得到一个APP的签名文件,再将上一步得到的描述文件,以及MachO文件一起打包压缩,最终就得到了我们的ipa包了。
所以ipa其实包含以下三种东西
MachO文件APP的签名文件描述文件、iPhon验证ipa文件
上文提到的私钥A是用来加密了公钥M,与之对应的公钥A其实在我们激活iPhon的同时已经下载好了,一直躺在我们的iPhon里面。
有了公钥M,那么一切就简单了,
公钥A解开ipa中携带的描述文件中的证书得到公钥M对公钥M进行Hash,对比证书中的Hash对比通过之后,用公钥M对加密的APP进行解密,得到最终APP。
使用Shll脚本进行重签ipa
#${SRCROOT}它是工程文件所在的目录
TEMP_PATH="${SRCROOT}/Tmp"
#资源文件夹,我们提前在工程目录下新建一个APP文件夹,里面放ipa包
ASSETS_PATH="${SRCROOT}/APP"
#目标ipa包路径
TARGET_IPA_PATH="${ASSETS_PATH}/*.ipa"
#清空Tmp文件夹
rm-rf"${SRCROOT}/Tmp"
mkdir-p"${SRCROOT}/Tmp"
#----------------------------------------
#1.解压IPA到Tmp下
unzip-oqq"$TARGET_IPA_PATH"-d"$TEMP_PATH"
#拿到解压的临时的APP的路径
TEMP_APP_PATH=$(st--"$TEMP_PATH/Payload/"*.app;cho"$1")
#cho"路径是
TEMP_APP_PATH"
#----------------------------------------
#2.将解压出来的.app拷贝进入工程下
#BUILT_PRODUCTS_DIR工程生成的APP包的路径
#TARGET_NAMEtargt名称
TARGET_APP_PATH="$BUILT_PRODUCTS_DIR/$TARGET_NAME.app"
cho"app路径
TARGET_APP_PATH"
rm-rf"$TARGET_APP_PATH"
mkdir-p"$TARGET_APP_PATH"
cp-rf"$TEMP_APP_PATH/""$TARGET_APP_PATH"
#----------------------------------------
#3.删除xtnsion和WatchAPP.个人证书没法签名Extntion
rm-rf"$TARGET_APP_PATH/PlugIns"
rm-rf"$TARGET_APP_PATH/Watch"
#----------------------------------------
#.更新info.plist文件CFBundlIdntifir
#设置:"St:KEYValu""目标文件路径"
/usr/libxc/PlistBuddy-c"St:CFBundlIdntifir$PRODUCT_BUNDLE_IDENTIFIER""$TARGET_APP_PATH/Info.plist"
#----------------------------------------
#5.给MachO文件上执行权限
#拿到MachO文件的路径
APP_BINARY=`plutil-convrtxml1-o-$TARGET_APP_PATH/Info.plist
grp-A1Exc
tail-n1
cut-f2-d\
cut-f1-d\`
#上可执行权限
chmod+x"$TARGET_APP_PATH/$APP_BINARY"
#----------------------------------------
#6.重签名第三方FramWorks
TARGET_APP_FRAMEWORKS_PATH="$TARGET_APP_PATH/Framworks"
if[-d"$TARGET_APP_FRAMEWORKS_PATH"];
thn
forFRAMEWORKin"$TARGET_APP_FRAMEWORKS_PATH/"*
do
#签名
/usr/bin/codsign--forc--sign"$EXPANDED_CODE_SIGN_IDENTITY""$FRAMEWORK"
don
fi
预览时标签不可点收录于话题#个上一篇下一篇