如何将LC_LOAD_DYLIB命令插入Mach-O二进制文件或将静态库加入现有二进制文件(IOS)

Tza*_*ahi 12 mach-o dynamic-linking static-linking ios

这是我第一次询问stackoverflow,我很绝望.

我的任务是加载一个dylib或将静态库加入到IOS设备的现有可执行文件中.

我将使用它static void __attribute__((constructor)) initialize(void)开始调配.这个可执行文件适用于内部企业appstore,所以我不需要通过苹果appstore(因为他们会拒绝它).

这样做的原因是从客户及其签名密钥获取现有IPA,并为其应用程序添加新功能,而无需开发人员干预.

有一家公司正在做这个叫做nukona.您可以在此处观看电影:https://www.youtube.com/watch?feature = player_embedded&v = z9rrOB6lOxY

我可以告诉你,我试图将LSEnvironment放在plist文件中DYLD_INSERT_LIBRARIES但是事实证明LSEnvironment似乎对IOS应用程序的沙箱没有任何影响.

我还尝试使用install_name_tool来更改其中一个依赖项,并将其替换为我的dylib(也具有该依赖项).它没有信息崩溃原因.

显然,如果我将dylib添加到XCode中的测试应用程序并重新编译它是完美的,这是给定的.但是,这是我不能要求的,例如,公司的管理员.重建可能会阻止客户使用此库.

这是我在堆栈溢出时发现的相关链接,但对于osx,我需要它用于IOS. 如何将LC_LOAD_DYLIB命令插入Mach-O二进制文件(OSX)

我唯一可以想到的是编辑二进制加载命令一些如何,但我不知道如何以及如何做到这一点考虑到重定位表等...

欢迎任何替代方案.

感谢您的时间.

Ale*_*ski 7

我是开源的,optool这确实是这样的(我没有在iOS上测试它但它应该工作.如果你有问题就打开一个问题)