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

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

我发现mach_inject,但那只适用于MacOSX。

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

请帮忙。 任何想法,build议将是非常有帮助的。

目前还不清楚你想要做什么,但mach_inject是用户应用程序使用Mach端口与MAC OS内核接口的一种方式,它与本质上是归档的IPA无关 – 类似于zip或Tar。

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

在任何情况下,在分发之前,无论是由企业分发服务器还是app store,整个软件包都需要在设备下载并运行之前进行签名。

是的,您可以将库注入到现有的ipa中,然后使用您的企业证书进行注销。 以下是我如何做到这一点的简要说明

在MachOView中查看可执行文件并查找加载命令的地址。 然后使用地址编辑hex,并增加负载命令计数1(假设我注入一个库),我也必须增加命令偏移量。

有一些工具可用于将库注入到hex中,现在,您可以使用load命令中引用的新偏移量将库注入该库。

也可以看看git中的dyci-main ,它是一个dynamic库注入项目。

有一种方法来解压缩和退出现有的.ipa在这里看到答案如何重新签署ipa文件?

因此可以改变.ipa内容,问题的另一部分是编写一些加载原始应用程序的包装器应用程序,并注入dynamiclib,我确信不容易做,但应该是可以的。

.ipa文件和可执行文件被签名,签名必须匹配。 如果签名不匹配或者无效,iOS将拒绝运行应用程序。 即使您使用凭据重新签名ipa,签名也不会与可执行文件上的凭据相匹配。 为了使签名匹配,要么需要使用私钥对.ipa进行签名,要么必须使用私钥对可执行文件进行签名。 私钥不是用来这样的…