将动态库注入企业应用程序(ipa)
Posted
技术标签:
【中文标题】将动态库注入企业应用程序(ipa)【英文标题】:Inject dynamic library into enterprise app (ipa) 【发布时间】:2014-03-17 16:12:45 【问题描述】:我想将我的库注入现有的企业应用程序(ipa 文件)。
我找到了 mach_inject,但这仅适用于 MacOSX。
这是可能的,因为https://www.mocana.com 正在这样做。
请帮忙。 任何想法、建议都会很有帮助。
【问题讨论】:
你的意思是在运行时?或者你想改变一个不同的应用程序?也许你正在尝试做的更好的例子会有所帮助。 不在设备上运行时。我有一个门户,用户将在其中上传 ipa 文件。然后我需要将我的库注入 ipa 并为用户返回更新后的 ipa。 您不应该将其打包为普通的企业应用升级吗? 【参考方案1】:是的,您将能够将库注入到现有的 ipa 中,然后使用您的企业证书将其注销。以下是我如何做到这一点的简要说明
在 MachOView 中查看可执行文件并找到加载命令的地址。然后使用地址编辑十六进制并将加载命令计数增加1(假设我正在注入一个库)我还必须增加命令偏移量。
有一些工具可用于将库注入十六进制,您现在可以使用这些工具将库注入到您在加载命令中引用的新偏移量处。
还可以查看 git 中的dyci-main,这是一个动态库注入项目。
【讨论】:
【参考方案2】:有一种方法可以解压并退出现有的 .ipa
在这里查看答案 How to re-sign the ipa file?
所以可以更改.ipa
的内容,另一部分问题是编写一些加载原始应用程序并注入动态库的包装器应用程序,我确信这并不容易做到,但至少应该是可能的。
【讨论】:
【参考方案3】:.ipa 文件和可执行文件已签名,并且签名必须匹配。如果签名不匹配或无效,ios 将拒绝运行应用程序。即使您使用凭据重新签署 ipa,签名也不会与可执行文件上的凭据匹配。为了使签名匹配,您需要使用他们的私钥对 .ipa 进行签名,或者他们必须使用您的私钥对可执行文件进行签名。私钥不应该以这种方式使用...
【讨论】:
【参考方案4】:目前尚不清楚您要做什么,但 mach_inject 是用户应用程序使用 Mach 端口与 MAC OS 内核交互的一种方式,它与本质上是存档的 IPA 无关 - 类似于 zip 或 Tar .
我怀疑根据您所描述的内容,您有一个希望链接编辑/包含在用户应用程序中的库,但您不希望他们看到您的源代码,反之亦然。我对 Mocana 不熟悉,但根据您的描述,它使用 IPA 进行分发,这是完全可能的,但使用 Facebook SDK 分发的预编译对象模块也是如此。
无论如何,在通过企业分发服务器或应用商店分发之前,需要对整个包进行签名,然后设备才能下载并运行它。
【讨论】:
以上是关于将动态库注入企业应用程序(ipa)的主要内容,如果未能解决你的问题,请参考以下文章
如何将 iOS 应用 IPA 交付给客户以使用他们自己的企业配置文件进行签名