**注入工具的GitHub地址:
https://github.com/Tyilo/insert_dylib**
1、准备如下所需内容:
2、cd到上图所示的目录下,执行以下命令行,提示输入后,输入y回车:
命令执行完毕之后会生成如下图文件:
然后将命令生成的目标文件替换为原可执行文件的名字,删除原可执行文件;
然后用另外的命令行工具otool来进行查看目标文件需要加载的库,命令如下图:
在命令执行完之后,会看到在最后有 name libHelloLib.dylib (offset 24),这个就是注入的我们自己生成的动态库:
接下来需要修改动态库的安装名,命令如下:
然后在目标app/Content下,新建Frameworks文件夹,将一开始生成的动态库copy进去,如图:
到此处已经注入并处理完成,当前的app处理未签名状态,如需签名,请使用签名工具codesign -options来进行签名;证书签名查询命令:security find-identity -v -p codesinging
最后验证上述操作,看是否将动态库注入进目标程序。
当看到有我们动态库中的日志输出,说明已经注入成功了。
注入命令中,命令行第一个参数问题参悟:
通过查看注入的代码得知,其实该参数就是在上述流程中修改name的路径,可以直接传入你设置的路径,后需不需要修改。
请查看注入的代码,非源码,只说明注入过程:
注:Apple的dyld开源地址 https://github.com/opensource-apple/dyld
macOS 注入后运行问题记录:
- 使用工具进行注入:
./insert_dylib libHelloLib.dylib ./Example.app/Contents/MacOS/Example - 注入之后修改动态库的加载名字:
install_name_tool -change libHelloLib.dylib @loader_path/../Frameworks/libHelloLib.dylib ~/Desktop/inject/Example.app/Contents/MacOS/Example - 如果修改动态库加载名字还不行的话,就添加@rpath:
install_name_tool -add_rpath "@loader_path/../Frameworks/libHelloLib.dylib" ~/Desktop/inject/Example.app/Contents/MacOS/ - 用命令查看动态库的所有RPARTH的加载命令:
otool -l ~/Desktop/inject/Example.app/Contents/MacOS/Example
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。