精华内容
下载资源
问答
  • iOS安全之ipa 包重签名的3种方法

    万次阅读 2019-07-05 20:01:25
    重签名的意义:ipa 重签名最大的用处是,不必重新打包,和配置其它第三方获取 appkey 等操作,直接重签名之后依然可以拥有这些功能,更快的发布测试或者灰度版本。 方法一、终端命令:sigh resign 1. 明白两个东西...

    重签名的意义:ipa 重签名最大的用处是,不必重新打包,和配置其它第三方获取 appkey 等操作,直接重签名之后依然可以拥有这些功能,更快的发布测试或者灰度版本。

    方法一、终端命令:sigh resign

    1. 明白两个东西:想要重签名的证书和描述文件

    开发证书或者企业证书,即你想要重签名的证书、provision描述文件。我是个人账户。没交钱的那种。(Xcode中自动管理会生成证书和描述文件)。

    注意⚠️:每一个重签版本都需重新申请一个 appid 和 provisoning profile,不然同appid的会覆盖。
    mac电脑的开发环境配置

    1. 安装 homebrew,命令:
      /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

    2. 安装 ruby,命令:brew install ruby更新 ruby 版本

    3. 安装 sigh,命令:sudo gem install sigh

    如果出错那就换成gem install sigh安装过程是漫长的。(在安装 sigh 之前,你得检查 gem的镜像源,现在一般为https://gems.ruby-china.org)

    准备好需要重签名的 ipa 包

    自己的ipa 不用多说。编译一下在工程的Product 文件件下就有。也可以通过爱思助手下载具体教程:Mac 如何下载ipa

    开始重签名

    • 第一步,把我们要重签名的 ipa 包和我们下载下来安装的 embedded.mobileprovison放在同一文件夹目录下,同级
    • 第二步,终端 cd 到这个 ipa 的文件夹目录下,执行sigh resign或者 fastlane sigh resign命令
    • 第三步:这时候,sigh 会直接弹出下面这个指令要你输入:Signing Identity这个就是你的证书的十六进制串,输入之后回车,然后等待见证奇迹的时刻吧。
      在这里插入图片描述
    • 第四步:验证我们重签的 ipa 包的时刻到了
    先安装重签名之前的 ipa 包,然后再安装我们重签名之后的 ipa 包,如果没有覆盖,出现了两个一模一样的 App,各自点开没闪退没打不开的情况下,说明我们签名成功了。
    
    
    sigh resign关于重签名有时候失败或者无法安装的情况说明。

    如果ipa 里面有除了系统之外的 framework或者dylib的话,也需要先签名,不然也会导致签名后安装失败!至于 sigh 里面大致执行的脚本代码如下:

    for framework in "$FRAMEWORKS_DIR"/*
    do
     if [[ "$framework" == *.framework || "$framework" == *.dylib ]]
     then
         log "Resigning '$framework'"
         # Must not qote KEYCHAIN_FLAG because it needs to be unwrapped and passed to codesign with spaces
         # shellcheck disable=SC2086
         /usr/bin/codesign ${VERBOSE} ${KEYCHAIN_FLAG} -f -s "$CERTIFICATE" "$framework"
         checkStatus
     else
         log "Ignoring non-framework: $framework"
     fi
    done
    

    看得懂或者熟悉脚本的同学可以直接看脚本文件: resign.sh
    位置:/Library/Ruby/Gems/2.3.0/gems/sigh-2.0.1/lib/assets/resign.sh
    版本号是根据自己当前 sigh 插件的版本号决定的。

    直接执行此脚本可以重签多 target 的 ipa:

    ./resign.sh YourApp.ipa "iPhone Distribution: YourCompanyOrDeveloperName" -p "bundel id"=<path_to_provisioning_profile_for_app>.mobileprovision -p "bundel id"=<path_to_provisioning_profile_for_watchkitextension>.mobileprovision -p "bundel id"=<path_to_provisioning_profile_for_watchkitapp>.mobileprovision -p "bundel id"=<path_to_provisioning_profile_for_todayextension>.mobileprovision resignedYourApp.ipa)
    

    苹果的政策越来越收紧,这种方案的可行性的周期不确定。因为很多方案已经随着版本的更新,变得不可行了。从 iTunes 关闭了 ipa应该管理功能就知道了,对于包的安全性苹果越来越重视。另外,企业账号申请的难度越来越高,也有这种趋势。这种方法已经失败。

    方法二、iResign 重签名方案

    1. 下载 iResign,下载完直接有个可执行的iResign.app,双击执行

    2. 参数路径跟图片上描述的很清楚,第一项是你要重签名的 ipa 的路径,第二项是我们重签名的配置描述文件的路径(不用改为 embedded 也可以),第四项,填写我们生成重签名用到的mobileprovisonbundle identifier,勾选修改 ID,第五项是我们重签名用到的mobileprovison的证书
      第三项很多教程说不用填,但是不填是无法自动生成的,会一直卡在entitlements generated这个步骤,无法生成。所以我们要自己生成entitlements.plist! 首先我们把要重签的 XXXX.ipa 解压后得到 Payload目录,然后终端 cd 到Payload目录下,执行以下命令:/usr/libexec/PlistBuddy -x -c "print :Entitlements " /dev/stdin <<< $(security cms -D -i XXXX.app/embedded.mobileprovision) > Entitlements.plist 其中 XXXX.app 是你要重签的 ipa的包名。生成的 entitlements.plist存放在Payload目录下,然后我们用 文本编辑或者 Xcode打开 plist 文件,修改里面的<key>application-identifier</key><string>PREFIX.yourappBundleID</string>为第四项填写的 bundle id。到此,配置完成,点击重新签名!

    噔噔噔!签名成功请看下图:
    在这里插入图片描述
    iResign 使用注意事项:第三个 plist 文件是必填的,修改ID 的 bunle id 要跟 plist 修改的对应。

    方法三、iOS ipa重签名工具 - iOS App Signer

    1. 下载 iOS App Signer 源码,运行在 May Mac 上
      在这里插入图片描述

    2. 第一项,填写我们需要重签名的 ipa 路径,第二项是我们要签名的证书,第三项选择我们配置的 provisoning profile(默认项Re-Sign Only 是无效的),然后,点击star!

    在这里插入图片描述
    此方式会自动分析 provisoning profile描述文件中的东西,所以不用我们自己填写变更的bundle id

    验证得到ipa 直接在爱思助手中的:我的应用->中一拖就可以了。

    这个方式亲自试了,比较简单方便。

    结论:

    但是最后重签名之前的能正常打开,重签名之后的都是一而退。暂时不知道什么原因。


    感谢:
    ipa重签名最直接的教程

    展开全文
  • iOS逆向 ipa包重签名

    千次阅读 2018-06-26 11:51:33
    如果你想把一个ipa文件安装到自己的手机上(别人...朋友发给了我一个用于上架的ipa包,现在我来做个测试,把这个上架appstote的包进行重签名,用我自己的证书进行签名,然后安装到我手机中。为了证明这是一个准备上...

    如果你想把一个ipa文件安装到自己的手机上(别人发你的或者从第三方商店下载的…)你的手机如果没有越狱是无法正常安装的(排除企业证书分发), 我们可以通过为ipa重签名实现,原理是将我们自己的证书打进ipa。

    朋友发给了我一个用于上架的ipa包,现在我来做个测试,把这个上架appstote的包进行重签名,用我自己的证书进行签名,然后安装到我手机中。为了证明这是一个准备上架appstore的ipa包,我先上传到蒲公英上,如下图所示:

    这里写图片描述

    现在我们开始来进行重签名。

    第一步:先将ipa包进行解压。

    选中ipa包,右键 -> 打开方式 -> 解压,如下图所示:

    这里写图片描述

    第二步:替换 embedded.mobileprovision文件。

    我们需要将自己打包中的embedded.mobileprovision文件替换掉目标ipa中的embedded.mobileprovision。

    进入到目标ipa的文件目录下面,我们可以看到有一个embedded.mobileprovision文件,如下图所示:

    这里写图片描述

    找一个我们自己打包的ipa包,然后进行解压,进入到ipa的文件目录下,我们同样可以发现一个embedded.mobileprovision文件,如下图所示:

    这里写图片描述

    然后将我们自己的embedded.mobileprovision文件替换掉目标ipa文件中的embedded.mobileprovision。

    第三步:进行重签名。

    重新签名,“iPhone Distribution: XXXXXX”这个指的是自己的embedded.mobileprovision文件用到的签名证书名称,在xcode或钥匙串中可以找到。

    输入命令行:

    首先进入包的文件目录下

    codesign -f -s 证书名字 目标文件

    YuanCandeMacBook-Pro:ZhiKe yuancan$ codesign -f -s "iPhone Distribution: Hunan Youpaipai Network Technology Co., Ltd. (68AQ9PBKQK)" /Users/yuancan/Desktop/ZhiKe/ZhiKe/Payload/ZhiKe.app 
    • 1

    成功之后会提升你替换了签名,如下所示:

    /Users/yuancan/Desktop/ZhiKe/ZhiKe/Payload/ZhiKe.app: replacing existing signature
    • 1

    第四部:重新打包。

    命令行:zip -r qq.ipa Payload

    YuanCandeMacBook-Pro:ZhiKe yuancan$ zip -r test.ipa Payload
    • 1

    如下图所示:

    这里写图片描述

    这个就是重签名之后的ipa包。我们上传到蒲公英检验一下是否重签名成功了。

    这里写图片描述

    展开全文
  • ipa包重签名shell脚本(包括对dylib和framework重签名).rar
  • ipa包重签名shell脚本(包括对dylib和framework重签名)
  • iOS证书及ipa包重签名探究

    千次阅读 2016-01-21 13:57:56
    iOS证书学习推荐博客代码签名探析,本文重点在于介绍ios8.1.3系统ipa包重签名(如企业证书)无法安装的问题。苹果在iOS8.1.3系统以后加强了对ipa安装包签名的验证,主要区别在于ipa唯一标识在原有Bundle Identifier...

           iOS证书学习推荐博客代码签名探析,本文重点在于介绍ios8.1.3系统ipa包重签名(如企业证书)无法安装的问题。苹果在iOS8.1.3系统以后加强了对ipa安装包签名的验证,主要区别在于ipa唯一标识在原有Bundle Identifier的基础上增加了证书ID,也就说安装包和手机上已安装APP的Bundle Identifier即使一致,如果两者签名的证书ID不相同,那么安装包也无法正常安装。证书ID是什么?

    图中方框里字符串就是证书ID,升级后的ipa标识就是证书ID+BundleID,只有两者完全匹配,安装包才能覆盖安装,否则就会提示安装失败。解决办法就是卸载安装包,重新安装!

    目前,重签名主要用于企业证书重签名个人证书发布的ipa包,包括各种助手及企业内测包的发布等。在重签名前,让我们先看看一个完整的ipa包有哪些与证书相关的东西!打开ipa包,会发现_CodeSignature和embedded.mobileprovision两个文件

    • _CodeSignature,ipa包签名文件
    • embedded.mobileprovision,证书配置文件

    因此,替换上面两个文件就解决了ipa重签名的主要问题。此外,代码签名探析文中还提到entitlements.plist授权文件,重签名时也需要处理。按照下图内容创建plist文件,输入相关信息。

     

    整个签名过程如下(文件路径自定义)

    1、解压ipa安装包

    2、替换证书配置文件(文件名必须为embedded,不得自定义)

    3、重签名(certifierName为重签名证书文件名,可以加证书ID后缀)

    4、打包

    很多朋友在重签名时会忽略第二步或者没有指定entitlements.plist,都会造成ipa包安装失败。如果有其它关于签名的问题,可以在文章下面跟我留言!

    展开全文
  • 签名完毕之后对应的文件夹下会生成重签名之后的 ipa 注意: 利用 iOS App Signer 重签名,在删除掉相应的 Extension ,选择路径的时候,一定要选择 Payload 文件夹下对应的 .app 文件,否则会报找不到 ...

    前一段时间学了点儿逆向相关的一些东西,但是都是基于越狱手机上的操作,给视频类应用去广告之类的。随着苹果生态圈的逐渐完善、及苹果对自身系统的保护越来越严格,导致现在的iPhone手机并不像以前那样存在大量的越狱用户。

    前段时间我自己申请了个微信小号,申请小号的目的就是原来微信号好友中乱七八糟的人实在太多,感觉自己的朋友圈都是一些无关紧要的垃圾信息,曾经关闭了一段时间的朋友圈,但是最近遇到了好多技术上很强的同行,还想了解大佬们的动态。于是我就想着申请了个小号,但是麻烦来了,iPhone手机并不像安卓手机那样存在着微信多开之类的应用,将自己手机越狱吧成本太高,于是就想着通过技术手段安装多个微信,下面步入正题:

    为什么要重签名

    其实我们平时开发的App,程序运行主要就是加载一个Mach-o可执行文件。当我们将程序打包成ipa文件,上传到App Store的时候,期间就是进行了一些加壳操作,比如:数字证书签名等。重签名的目的就是将别人的程序重新签上我们的证书信息。也可以简单理解为将别人的加密文件解密,加上我们自己的加密算法。

    逆向当中的一些专业术语

    • 加壳:利用特殊算法(iOS中数字证书),对可执行文件的编码进行改变,以达到保护程序代码的目的
    • 脱壳:摘掉壳程序,将未加密的可执行文件Mach-o还原出来

    查看应用是否加壳

    将下载好的ipa包解压缩之后,拿到里面的Mach-o文件,cd到所在目录,执行如下命令:

    otool -l 可执行文件路径 | grep crypt

    其中cryptid代码是否加壳,1代表加壳,0代表已脱壳。我们发现打印了两遍,其实代表着该可执行文件支持两种架构armv7arm64.

    查看应用支持哪种架构

    终端下执行如下命令查看架构信息

    lipo -info 文件路径

    除了查看架构信息,还可以利用该指令导出某种特定架构、合并多种架构:

    • 导出特定架构
    lipo 文件路径 -thin 架构类型 -output 输出文件路径
    • 合并多种架构
    lipo 文件路径1 文件路径2 -output 输出文件路径

    怎么给应用脱壳

    给应用脱壳有两种途径:

    • 一、直接从一些第三方应用商店里面下载你想脱壳的应用,例如:PP助手iTools
    • 二、自己脱壳,利用GitHub上开源的一些工具,常用的有Clutchdumdecrypted。具体如何使用,请自行Google
    • *

    前期准备工作:

    • 一台iPhone,越不越狱都行
    • 开发者证书或者企业证书(个人账号也行,但是应用安装上之后,有效期只有7天)
    • 电脑安装 iOS App Signer

    其实重签名的方式有很多,比如:可以利用sigh resign命令,在终端下操作,还可以借助一些逆向相关的重签名工具,本文采用iOS App Signer

    了解以上基本概念之后,下面正式开始史上最详细的重签名过程,以微信为例:

    第一步:准备好脱壳后的微信App

    我是直接从PP助手上下载的,感兴趣的可以自己手动脱壳

    CC5D0564776F714701F45AE5846D3464

    第二步:将对用的ipa文件解压,修改一些东西

    注意:个人证书不能重签Extension文件,所以要删除ipa包中包含的相应文件,包括Watch里面的Extension,为了方便一般直接将Watch文件删除:

    C00C57F8EB9509B60FDCD8006DF3E719

    34293DFAD48B9B855A066721DC0D358B

    第三步:利用iOS App Signer给微信重签名

    D063FFD5907B3090DE0494AF05978BDB

    • 第一项:对应的.ipa或者.app路径
    • 第二项:我们自己的签名证书
    • 第三项:证书对应的Profile文件,默认项Re-Sign Only是无效的,选择证书下存在的Profile文件)
    • 第四项:重签名之后的Bundle identifier(选择了Profile文件,一般会自动填写)
    • 下面几项可以随便写

    25441B7BB39F6BADE92ECA6187C0F6AA

    签名完毕之后对应的文件夹下会生成重签名之后的ipa

    F2804E382DD16002B001BAA1F927AA3

    注意:利用iOS App Signer重签名,在删除掉相应的Extension,选择路径的时候,一定要选择Payload文件夹下对应的.app文件,否则会报找不到Payload文件夹的错误:

    4C2E14FA5CA3D81E4BEC2F44D9D93647

    安装重签名之后的微信

    可以用PP助手安装,也可以用Xcode安装,我采用Xocde安装:

    install-wechat

    不出意外地话,第二个微信就成功的安装到了你的手机上。如果装不上的话,基本上大部分原因就是证书不对。。。

    最终效果

    多个证书可以多次重新签名,安装多个相同的应用

    wechat_hook_01

    wechat_hook_02

    这篇文章图有点儿多。。。。。

    总结

    过程其实很简单,我始终认为借助一些工具能完成的东西,都是很简单的,因为不需要敲代码。总算给自己iPhone装上了多个微信,原来还打算买个安卓手机呢,哈哈,给自己省了一大笔钱。。。

    展开全文
  • 首先我们先从appstore下载一个ipa包,然后把这个包上传到蒲公英分发平台上,可以看出这是一个上架appstore的包。我们就用这个包来进行重签名实验,用另外一套证书进行重签名,生成一个adhoc的包。 选中ipa包,右键 ...
  • Windows重签名ipa工具及签图文教程分享,简单操作流程!
  • iOS证书及ipa包重签名

    千次阅读 2017-11-02 14:37:02
     iOS证书学习推荐博客代码签名探析,本文重点在于介绍ios8.1.3系统ipa包重签名(如企业证书)无法安装的问题。苹果在iOS8.1.3系统以后加强了对ipa安装包签名的验证,主要区别在于ipa唯一标识在原有Bundle ...
  • iOS逆向一步一步教你重签名ipa包

    千次阅读 2020-02-02 11:22:57
    如果你想把一个ipa文件(别人发你的或者从第三方商店下载的…)安装到自己的iPhone上,你的手机如果没有越狱是无法正常安装的(排除企业证书分发),但是 我们可以通过为ipa重签名实现,原理是将我们自己的证书打进ipa...
  • 对苹果的重签名分两种,一种是全签,一种半签。...2.在reipa文件夹中放入ipa包和mobileprovision配置文件 3.确认是否安装mobileprovision对应的证书 4.打开终端,在终端输入'python xxxx'xxx为该脚本路径(将脚本拖
  • iOS ipa包重签名

    2019-10-05 02:43:21
    背景:公司做游戏SDK的,提供SDK给第三方后,他们打包过来我们需要分发在不同的渠道,这个时候需要修改SDK的配置文件,ipa文件修改后是需要手机越狱或者ipa重签名才能安装成功的,所以研究了一下重签名的问题。...
  • 为什么要重签名? 1、在没有源代码的情况下,你已经对某个应用进行了资源修改(比如修改了启动图或图标等)。修改完成以后,如果想要让APP可以正常使用,该APP一定要重新签名然后压缩成IPA文件。 2、如果你想让你...
  • ipa包重新签名

    2018-02-28 16:25:11
    重新签名ipa包, 操作简单, 实用, 值得拥有!!!!!!!!!!!!!!!!!
  • 公司做的做的是强大的视频监控,很多厂家表示感兴趣,合作的公司多了,定制的APP暴增,每次发布版本都要同时发若干的版本,...#ipa包路径 ORIGINAL_FILE=$"/Users/MartinLee/Desktop/..." #证书名常用名称 CERTIFICA
  • 一般会自动填写) 下面几项可以随便写 签名完毕之后对应的文件夹下会生成重签名之后的ipa包 注意:利用iOS App Signer重签名,在删除掉相应的Extension,选择路径的时候,一定要选择Payload文件夹下对应的.app文件,...
  • iOS ipa包进行重新签名

    千次阅读 2018-10-25 17:41:51
    重签名可以把越狱市场上的app重新用我们自己的开发者证书进行签名,然后我们就可以在我们不越狱的手机上安装越狱应用了。 2.如何重新签名? 网上有很多重新签名的方法,最简单一种是: 安装好brew,先用brew安装...
  • 一般的签名工具只能在MAC上完成。 该款签名工具可在windows平台下完成签,破除必须要...如果有遇到有IPA包无法安装的情况,或者想要帮助他人签的情况,只需要自己有证书就可以自助完成签。 目前完全免费使用。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,323
精华内容 1,729
关键字:

ipa包重签名