Tag: 动态库

如何在.ipa文件上执行iOS代码注入

代码注入是将外部代码引入现有软件系统的过程。 在本文中,我将分享在iOS应用上执行iOS代码注入所需的工具和技术。 借助XCode,可以设置实验来展示实际运行中的iOS代码注入。 想法是创建一组独立的代码,将其与最终应用程序打包,然后以某种方式执行新代码。 [注:此代码注入过程已被证明可在iOS 9.3、10.0.2和XCode v7.3和v8.0上运行。 我尚未在其他OS或XCode版本上尝试过此操作] 我们可以通过两种方式通过Xcode创建一个独立的二进制包: –通过(Cocoa Touch Framework)的动态库 –通过(可可触摸静态库)的静态库 静态库 在编译时链接的代码单位。 静态库需要在.ipa编译期间可用,才能执行其代码 静态库不支持Swift 没有已知的方法来指示.ipa加载静态库 我们 不能直接使用静态库。 您可能需要先将其转换为动态库 动态库 在运行时链接的代码单位。 Xcode确实要求在编译期间必须提供依赖的Dynamic Library / Frameworks,但不能保证将这些依赖关系打包到应用程序中。 这就是为什么有时您可能会遇到运行时动态库加载错误的原因,例如 dyld: Library not loaded: @rpath/libswift_stdlib_core.dylib 我们可以为动态库构建Swift代码 需要在.ipa上执行Load Dylib命令,以便在启动应用程序之前将动态库加载到内存中。 是的,我们可以使用此🙂 选择dylib(动态库)作为我们的自定义代码包后,让我们使用XCode演示概念的代码注入。 通过XCode进行概念注入的代码证明 步骤如下 创建一个新的XCode项目 创建一个新的iOS应用程序目标。 创建一个新的“ Cocoa Touch Framework”目标。 让我们称之为“ PatchPGO” 创建一个新的Objective-C可可接触类。 我们称之为“ PatchLoader”。 在.m文件中添加以下方法。 @implementation PatchLoader 静态void […]