跳转到主要内容

无需Apple工具重新签名iOS应用

项目描述

一个工具和库,用于重新签名iOS应用,无需专有Apple软件。

例如,一个正在开发的iOS应用可能只会在开发者的iPhone上运行。 isign 可以更改应用,使其可以在另一个开发者的iPhone上运行。

Apple已经存在用于此目的的工具。但现在,您可以在像Linux这样的操作系统上使用 isign 来完成此操作。

目录

安装

Linux

isign 的最新版本可以通过 PyPi 安装

$ pip install isign

Mac OS X

在Mac OS X上,有许多先决条件,因此pip方法可能不起作用。最简单的方法是使用 git 克隆 源代码存储库 并运行安装脚本

$ git clone https://github.com/saucelabs/isign.git
$ cd isign
$ sudo ./INSTALL.sh

如何开始

isign 运行所需的所有库和工具都可以在Linux和Mac OS X上运行。但是,您将需要一个Mac来导出您的Apple开发者凭据。

如果您像大多数iOS开发者一样,凭据可能会令人困惑,那么请查看GitHub上的凭据文档

您应该在钥匙串访问中有一个密钥和证书,以及与该证书关联的配置文件,这样您就可以使用它来签名您自己的iOS设备上的iOS应用程序。

在钥匙串访问中,打开证书。找到您用于签名应用程序的证书。右键单击它,将其导出为.p12文件,例如“Certificates.p12”。如果钥匙串要求您为该文件设置密码,只需将其留空即可。

接下来,让我们将您需要的密钥和证书提取到标准的PEM格式。

$ isign_export_creds.sh ~/Certificates.p12

如果您被提示输入密码,只需按Return键。

默认情况下,isign_export_creds.sh会将这些文件放入~/.isign,这是放置isign配置文件的标准位置。

最后,您需要从Apple开发者门户获取一个使用相同证书的配置文件。如果您从未处理过此问题,配置文件会告诉手机Apple已批准您将应用程序安装到该手机。

如果您使用XCode进行开发,您可能已经有了一个配置文件。在您使用XCode开发的Mac上,尝试运行isign_guess_mobileprovision.sh脚本。如果您通常只有几个配置文件,并在一部手机上安装,它可能会找到它。

无论如何,一旦您有了.mobileprovision文件,将其移动到~/.isign/isign.mobileprovision

最终结果应该看起来像这样

$ ls -l ~/.isign
-r--r--r--    1 alice  staff  2377 Sep  4 14:17 certificate.pem
-r--r--r--    1 alice  staff  9770 Nov 23 13:30 isign.mobileprovision
-r--------    1 alice  staff  1846 Sep  4 14:17 key.pem

现在,您就可以开始重新签名应用程序了!

如何使用isign

如果您已经将所有文件正确地安装到上述位置,那么您现在可以在任何iOS .app目录、.ipa存档或.app.zip压缩目录上调用isign。例如

$ isign -o resigned.ipa my.ipa
archived Ipa to /home/alice/resigned.ipa

您也可以从Python调用它

from isign import isign

isign.resign("my.ipa", output_path="resigned.ipa")

isign命令行参数

# Resigning by specifying all credentials, input file, and output file
$ isign -c /path/to/mycert.pem -k ~/mykey.pem -p path/to/my.mobileprovision \
        -o resigned.ipa original.ipa

# Resigning, with credentials under default filenames in ~/.isign - less to type!
$ isign -o resigned.ipa original.ipa

# Modify Info.plist properties in resigned app
$ isign -i CFBundleIdentifier=com.example.myapp,CFBundleName=MyApp -o resigned.ipa original.ipa

# Display Info.plist properties from an app as JSON
$ isign -d my.ipa

# Get help
$ isign -h

-a <路径>, –apple-cert <路径>

PEM格式的Apple证书路径。这已经包含在库中,所以您可能永远不需要它。如果需要更改证书,请参阅Apple证书文档

-c <路径>, –certificate <路径>

您证书的PEM格式路径。默认为$HOME/.isign/certificate.pem

-d, –display

对于应用程序路径,以JSON格式显示信息属性列表(Info.plist)。

-h, –help

显示帮助消息并退出。

-i, –info

在重新签名时,向应用程序的信息属性列表(Info.plist)添加或更新信息。接受逗号分隔的键值对列表,例如CFBundleIdentifier=com.example.app,CFBundleName=ExampleApp。请谨慎使用!请参阅有效的Info.plist键的Apple文档。

-k <路径>, –key <路径>

您私钥的PEM格式路径。默认为$HOME/.isign/key.pem

-n <目录>, –credentials <目录>

相当于

-k <directory>/key.pem
-c <directory>/certificate.pem
-p <directory>/isign.mobileprovision

-o <路径>, –output <路径>

写入重新签名应用程序的路径。默认为当前工作目录中的out

-p <路径>, –provisioning-profile <路径>

您的配置文件路径。这应该与您的证书关联。默认为$HOME/.isign/isign.mobileprovision

-v, –verbose

将在STDERR上打印更多详细的日志。

应用程序路径

待重签名的应用在命令行中指定在其他参数之后。应用程序路径通常是IPA文件,但也可以是.app目录,甚至是压缩的.app目录。重签名时,isign会始终创建与原始文件相同类型的归档。

贡献

开发工作在我们的GitHub仓库进行。提交问题或克隆代码!

你可能需要创建某种类型的python虚拟环境,这样你就不必接触系统python及其库。《virtualenvwrapper》是完成这项工作的好工具。

然后,只需做以下操作

$ git clone https://github.com/saucelabs/isign.git
$ cd isign
$ dev/setup.sh
$ ./run_tests.sh

如果测试未通过,请提交一个问题。请在开发过程中保持测试更新。

注意:某些测试需要Apple的codesign运行,因此除非在带有开发工具的Macintosh计算机上运行,否则将跳过这些测试。

好吧,如果所有测试都通过了,你现在有一个可编辑的isign安装。对该仓库的任何编辑都将影响(例如)isign命令行工具的工作方式。

Sauce Labs支持持续的公共isign开发。isign是我们iOS Real Device Cloud基础设施的一部分,该基础设施允许客户在真实iOS设备上测试应用程序和网站。isign自2015年6月以来已成功在生产环境中对提交的客户应用程序进行重签名。

该项目目前还没有官方的行为准则,但即将推出。请在这里参与讨论

更多文档

有关这里未包含的随机内容,请参阅此仓库的《docs》目录。

作者

Neil Kandalgaonkar是主要开发者和维护者。

Steven Hazel和Neil Kandalgaonkar实现的验证概念。

Michael Han使用Apple工具编写的参考脚本。

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

isign-1.6.15.tar.gz (35.7 kB 查看哈希值)

上传时间

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面