IPA 重签名

注意:这篇文章所记录的技巧仅供大家交流学习使用,不要像快用那样用作盗版分发

在日常生活中,经常会有朋友丢给你自己写的ipa,或者有的app没有上架appStore,只有一个越狱渠道的版本。

这个时候如果我们设备没有越狱的话,可以通过重签名的方法来将这个app部署到我们的开发机上,所谓开发机就是安装了证书的手机。

对于重签名,可以通过一个软件 InstaSign ,来自动化实现这个过程。但是有个很大的弊端,它会破坏掉我们的发布环境,即替换了/usr/bin/codesign。

这个时候,我们可以手动实现这个流程。

我们这里用布卡漫画来举例:

  • 解压ipa,露出Payload 文件

  • 将Payload 文件中的 _CodeSignature 文件夹彻底删除

  • 从你的一个能正确部署到手机上的项目xxxxx.app中拷贝 embedded.mobileprovision 文件

  • 去keychain 中搜索iPhone 如下图:

复制和第三步同样的一个证书的名称:iPhone Developer: XXXXXX (XXXXXX) 这样的一个结构,如果是从企业证书发布环境下拷贝的就是iPhone Distribution: xxxxx (xxxxxx)。

  • 在命令行下,cd到 Payload 文件夹之外。
1
/usr/bin/codesign -f -s "iPhone Developer: XXXXXXXX (XXXXXXXX)" --resource-rules bukaios.app/ResourceRules.plist bukaios.app

如果一切正确,则会提示:bukaios.app: replacing existing signature

  • 打包回ipa, zip -r buka.ipa Payload
  • 在XCode-Organzier-Devices 左侧的已连接设备中选择Apllications-Add
  • 不出意外就能安装成功。

  • 如果喜欢,可以把这整个流程写成一个批处理。

ipa 重签的更多相关文章

  1. 签名mobileconfig 重签ipa

    .mobileconfig文件的签名 生成Apache专用的三个证书 双击[2331135_zgp.ink_chain.crt]可以看到它是个根证书,在mac上,双击它,导入到证书中心,然后再导出为p ...

  2. iOS重签

    由于渠道推广需要,可能需要多个包做备份推广,区别是icon.游戏名称.登录logo.bundleid.签名证书.支付Consumables不同,其他游戏包体完全相同. 反复修改多次文件提交Jenkin ...

  3. ipa重签名最直接的教程

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

  4. iOS ipa 重签名 resign

    这篇关于codesign的文章不错 https://www.objccn.io/issue-17-2/ 英文原文:https://www.objc.io/issues/17-security/insi ...

  5. ipa重签名

    为什么要研究重签名问题?将程序打包成ipa包后,ipa包中会包含Provisioning Profile和_CodeSignature等文件,里面包含了对整个ipa的签名信息. 一旦改动ipa中的不论 ...

  6. iOS逆向必备绝技之ipa重签名

    一.重签名准备工作: 找到开发者证书和配置文件: 列出所有开发者证书文件: security find-identity -p codesigning -v 找一个开发环境配置文件生成entitlem ...

  7. 使用企业证书给iOS应用重签

    来源:https://github.com/sailtsao/iReSign 这里有个开源的签名工具,已经修改为支持dylib frameworks等的签名了,使用这个签名不会出现任何问题 iReSi ...

  8. iOS安装包重签笔记

    https://blog.csdn.net/skylin19840101/article/details/60583893

  9. ios App 开发指南

    开发者账号申请 http://www.applicationloader.net/blog/zh/547.html https://zhuanlan.zhihu.com/p/66118041 http ...

随机推荐

  1. LINQ 之四 (SkipWhile和TakeWhile)

    看到书上的例子很正常,于是,我写了个不正常一点的. 书上的是这样的 class Program { static void Main(string[] args) { ,,,,,,,,}; ); fo ...

  2. C#中decimal的用法

    decimal拥有比float更高的精度,最高能处理到小数点后面的28位.适合用在财务类等对数字精确度要求比较高的场合. using System; using System.Collections. ...

  3. 为net-snmp添加读readTimeTicks

    function readTimeTicks(time){ if(time === 0) return ''; var d = 0, h = 0, m = 0, s = 0; d = parseInt ...

  4. Asp.net MVC razor语法参考

    Razor语法的快捷参考http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx/ 只是copy下来便于查阅! I ...

  5. BestCoder 2nd Anniversary 1001 Oracle

    找到最小的非零数字拆开来相加. 高精度. #include <iostream> #include <cstdio> #include <cstring> #inc ...

  6. WindowsAPI一日一练

    1.SetWindowLong和GetWindowLong 函数原型: LONG SetWindowLong( __in HWND hWnd, __in int nIndex, __in LONG d ...

  7. 从远程oracle上导入到本地同一张表中不存在的记录的方法

    场景:在远程oracle上存在一张表A,在本地同样存在一张相同表结构的表B.由于本地表B中保存了业务系统操作产生的几条记录,同时原来导入了A中的部分记录,但是并没有保存A中全部的记录.A中有15条记录 ...

  8. 学php之翻译wordpress(1)

    单看文件结构,wordpress分了3个文件夹 wp-admin,wp-content,wp-includes 和零散的一堆php,暂时不清楚各自的分工 入口文件是index.php <?php ...

  9. vi所有特殊字符

    vi5个特殊字符包含 /.^.$.*.. 在vi中用/查找时,()不做为特殊字符处理 比如:查找字符串(cyg_uint8 *)b 应该这样写 /(cyg_uint8 \*)b 只有 * 需要转义 \ ...

  10. 【测试环境】java|jdk|ant

    很多文章都有写啊,我只是汇总一下:现在java已经是1.7+了,但是我们很多的时候开发环境还是在1.5.16左右,需要自己去配置: 0.为了方便切换测试环境,我们可以把jdk放到一个比较固定的位置.比 ...