将动态库注入企业应用程序(ipa)

时间:2014-02-18 05:02:05

标签: ios iphone objective-c ipa in-house-distribution

我想将我的库注入现有的企业应用程序(ipa文件)。

我找到了mach_inject,但仅限于MacOSX。

可能因为https://www.mocana.com正在这样做。

请帮忙。 任何想法,建议都会非常有用。

4 个答案:

答案 0 :(得分:3)

目前尚不清楚你想做什么但是mach_inject是用户应用程序使用Mach端口与MAC OS内核连接的一种方式,它与IPA本质上不相关的IPA本质上是一个存档 - 类似于zip或Tar

我怀疑根据您所描述的内容,您有一个库,您希望链接编辑/包含在用户应用程序中,但您不希望他们看到您的源代码,反之亦然。我不熟悉Mocana,但基于你所描述的它使用IPA进行分发,这是完全可能的,但是使用预编译的对象模块也是如此,这是Facebook SDK分发的。

无论如何,在分发之前,无论是企业分发服务器还是应用程序商店,整个软件包都需要在设备下载并运行之前进行签名。

答案 1 :(得分:2)

是的,您可以将库注入现有的ipa,然后使用您的企业证书将其重新签名。以下是我如何做到这一点的简要说明

在MachOView中查看可执行文件,找到加载命令的地址。然后使用地址编辑十六进制并将加载命令计数增加1(假设我正在注入一个库),我将不得不增加命令偏移量。

有一些工具可以将库注入到十六进制中,您现在可以使用这些工具将库注入您在load命令中引用的新偏移量。

另请参阅git中的dyci-main,这是一个动态库注入项目。

答案 2 :(得分:1)

有一种解压缩现有.ipa的方法,请在此处查看答案How to re-sign the ipa file?

因此可以更改.ipa的内容,问题的另一部分是编写一些加载原始应用程序并注入动态库的包装应用程序,我确定这不容易做到,但应该可以做到这一点。

答案 3 :(得分:0)

.ipa文件和可执行文件已签名,签名必须匹配。如果签名不匹配或无效,iOS将拒绝运行该应用程序。即使您使用凭据重新签名ipa,签名也不会与可执行文件上的凭据匹配。为了使签名匹配,您需要使用其私钥对.ipa进行签名,或者他们必须使用您的私钥对可执行文件进行签名。私钥不应该以这种方式使用......