iOS|iOS 动态库注入原理
原理
在程序的运行文件mach-O中LoadCommands指令中,存放这需要加载的库,到时候由dyld读取,并且在运行时加载。注意到LoadCommands整个段尾部还留有一些空白。因此在这么多库的后面添加自定义的库即可。
PS:通常都是在后面注入,因为在这些库前面注入的话都要修改后面库的偏移量,比较麻烦,monkeyDev那套貌似可以插入在前面一点点的
同一个项目里的三方库会短暂打包到App包里面(Frameworks目录下,经测试如果最后还是没有用到,可能会被删除)
yololib注入
yololib是一个注入工具,输入命令比较简单,这里简单讲下:
Framwork注入
- 通过Xcode新建Framwork,将库安装进入APP包
- 通过yololib注入Framwork库路径。命令:yololib 需要注入的Mach-O文件路径 库中的mach-O文件路径
Dylib注入 这也是monkeyDev使用的方式
- 通过Xcode新建Dylib库(注意:Dylib属于MacOS所以需要修改属性,build setting 里面改baseSDK,signing也需改成iphone的)
- 添加Target依赖,让Xcode将自定义Dylib文件打包进入APP包。(主工程里面build phase->新建copy file,把dylib复制进去,加到framework里面)命令:yololib 需要注入的Mach-O文件路径 dylib库
推荐阅读
- Docker应用:容器间通信与Mariadb数据库主从复制
- 太平之莲
- 2020-04-07vue中Axios的封装和API接口的管理
- iOS中的Block
- thinkphp|thinkphp 3.2 如何调用第三方类库
- 我正在参加安特思库共读一本书干法。
- Python爬虫|Python爬虫 --- 1.4 正则表达式(re库)
- 现役联盟前十怎么排(詹姆斯榜首无悬念!杜兰特库里位置不确定!)
- 记录iOS生成分享图片的一些问题,根据UIView生成固定尺寸的分享图片
- Android7.0|Android7.0 第三方应用无法访问私有库