美文网首页iOS安全相关
带有framework的ipa重签名

带有framework的ipa重签名

作者: 旮哥 | 来源:发表于2016-10-19 17:31 被阅读557次

ipa重签名的文章应该比较多,但是涉及到内嵌多个framework的签名可能介绍的就比较少了。

当然,其实内嵌framework的签名其实也很简单,步骤如下:

  1. 导出entitlements.plist
  2. 对framework单独签名
  3. 对ipa签名

准备材料:

  1. p12 安装到keychain
  2. certificate安装到keychain
  3. mobileprovision,为了方便操作,可放置在ipa同一目录
  4. ipa 需要重签名的ipa

签名过程:

说明,如下过程中embedded为笔者项目特有,通常项目无需包含。

如果您还需要修改bundle identifier,那么请参考 plutil命令。

示例:

#!/bin/sh

#  ResignScript.sh
#  
#
#  Created by W3Mobile Server on 6/1/2016.
#  It needs *.mobileprovision and *.ipa file in same folder.
#

# unpackage

echo "0. read paramter"

#theVersion=""
#
#if [ $# -ge 1 ]; then
#    theVersion=$1
#else
#    echo "Please set version as first paramter"
#    exit
#fi

resignRoot=$PWD
certfierName="iPhone Distribution: Huawei Technologies Co., Ltd."

appFolder=""

echo "1. unpackage ipa"

rm -rf ./Payload

rm -rf resigned.ipa

unzip *.ipa >> resign.log

# search app floder

for app_item in ./Payload/*.app
do
    if test -d $app_item
    then
        appFolder=$app_item
    fi
done

if [ ${appFolder}x != "x" ]; then
    echo "Did found app:"$appFolder
else
    echo "No ipa found."
    rm -rf resign.log
    exit
fi

# copy embedded.mobileprovision

echo "2. copy embedded.mobileprovision"

rm -rf ${appFolder}/embedded.mobileprovision

cp ./*.mobileprovision ${appFolder}/embedded.mobileprovision

cd ${appFolder}/Embedded/

for zip_item in *.zip
do
    unzip -q $zip_item
    rm -rf $zip_item
done

cd $resignRoot


for bundle_item in ${appFolder}/Embedded/*.framework
do
    if test -d $bundle_item
    then
        cp ./*.mobileprovision ${bundle_item}/embedded.mobileprovision
    fi
done


echo "3. export entitlements.plist"

rm -rf ./entitlements.plist

codesign -d --entitlements=entitlements.plist ${appFolder}

echo "4. resign app"

rm -rf ${appFolder}/Embedded/Embedded.plist
cp ./Embedded.plist ${appFolder}/Embedded/Embedded.plist

cd ${appFolder}/Embedded/

for bundle_item in *.framework
    do
    if test -d $bundle_item
    then
        bunleName=${bundle_item%%.framework}
        codesign -f -s "$certfierName" --entitlements=${resignRoot}/entitlements.plist ${bundle_item}
        zip -q -r ${bunleName}.zip $bundle_item
        rm -rf $bundle_item
    fi
done

cd $resignRoot

for fmwk_item in ${appFolder}/Frameworks/*.framework
do
    codesign -f -s "$certfierName" --entitlements=entitlements.plist ${fmwk_item}
done

codesign -f -s "$certfierName" --entitlements=entitlements.plist ${appFolder}


echo "5. package ipa ..."

zip -r resigned.ipa ./Payload/ >> resign.log

echo "6. clean ..."

rm -rf resign.log
rm -rf ./entitlements.plist
rm -rf ./Payload

echo "7. done."

相关文章

  • 带有framework的ipa重签名

    ipa重签名的文章应该比较多,但是涉及到内嵌多个framework的签名可能介绍的就比较少了。 当然,其实内嵌fr...

  • iOS重签名

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

  • iOS ipa重签名流程

    1.拿到砸过壳的ipa文件,如何砸壳自行度娘 2.归档ipa文件 3.删除插件,重签名framework文件 4....

  • ipa重签名

    参数说明 appName.ipa: 要重签名的ipa embedded.mobileprovision: 用来签名...

  • iOS数字签名及ipa重签名

    ipa重签名是指对已经打包好的ipa,利用新的证书重新签名。 ipa重签名作用: 作用一:有时候公司在进行软件开发...

  • ipa重签名最直接的教程

    ipa 包重签名最新最简单教程 重签名的意义:ipa 重签名最大的用处是,不必重新打包,和配置其它第三方获取 ap...

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

    iOS逆向 ipa包重签名

  • bibibi ipa包重签名

    ios ipa包重签名 作用 保持bundleid不变,重新用企业证书签名,分发。 流程 解压你所要签名的ipa包...

  • iOS应用程序的重签名(打包)

    Xcode导出的IPA的重签名 解压IPA2,删除旧的代码签名rm -rf Payload/appName.app...

  • ipa重签名-ruby实现

    需要的文件: appName.ipa: 要重签名的ipa embedded.mobileprovision: 用来...

网友评论

  • e452afa0b94b:楼主有做过framework的解密吗
  • 4a67628c5265:我的Ipa里面有个Frameworks/AFNetworking.framework,按照上面方式,在签app前签这个.framework,然后正常签名打包。签名后codesign -v验证成功(这个framework也验证成功)。但上传后报错:
    ERROR ITMS-90046: "Invalid Code Signing Entitlements. Your application bundle's signature contains code signing entitlements that are not supported on iOS. Specifically, value '35GHCG4B3P.com.gamebirdy.testresign' for key 'application-identifier' in 'Payload/xiyou.app/Frameworks/AFNetworking.framework/AFNetworking' is not supported. This value should be a string starting with your TEAMID, followed by a dot '.', followed by the bundle identifier."

    我就看了一下AFNetworking.framework,里面有个Info.plist,他的CFBundleIdentifier是com.alamofire.AFNetworking。是不是这个原因导致这个错误呢?
    希望帮忙看看哦
    gavinzxin:您好,我也遇到了这个问题,请问您怎么解决的
    离人汐:我也遇到这种问题了。
    Fergus_No1:解决了吗。我现在也是遇到这样的问题。能指点下么
  • wsj2012:您好 ,我有相关问题 问你 回复我好吗,很急
    wsj2012:@旮哥 给个qq之类的啊 兄弟
    wsj2012:@旮哥没有 一直等你回复
    旮哥:什么问题, 解决了吗?

本文标题:带有framework的ipa重签名

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