未越狱设备使用动态库

今天我们分享下如何将上一篇Theos的使用中生成的动态库在未越狱的设备上使用

  1. 拿到自己生成的动态库,这里是通过安装过这个动态库的越狱手机中获取的,目录为Library/MobileSubstrate/DynamicLibraries下
  2. 查看链接的动态库
otool -L HelloTheos.dylib 
查看链接的动态库

未越狱手机是无法找到CydiaSubstrate这个库的,这里我们将CydiaSubstrate从越狱手机中取出拿到app中,并将动态库中的依赖路径修改为app中

install_name_tool -change /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate @loader_path/CydiaSubstrate HelloTheos.dylib

通过上面指令进行修改,再次查看CydiaSubstrate的链接路径,是否修改成功


查看CydiaSubstrate的链接路径
  1. 将CydiaSubstrate以及修改后路径的动态库拷贝到砸壳后的app中
    查看app的加密状态
otool -l TheosDemo| grep cry
查看app的加密状态
  1. 将CydiaSubstrate、fuyao_tweak.dylib拷入app中
  2. 动态库注入
    通过insert_dylib工具进行。下载源码,编译生成insert_dylib工具,并将工具拷入/usr/local/bin目录下,使用下面指令进行注入
insert_dylib @executable_path/HelloTheos.dylib ./TheosDemo
动态库注入

通过上面指令进行修改,查看Mach-O文件中动态库链接路径,是否修改成功


检查动态库注入

覆盖原文件

mv TheosDemo_patched TheosDemo
otool -L TheosDemo
检查TheosDemo
  1. 对CydiaSubstrate、HelloTheos.dylib进行重签名
    6.1 查看本地可用证书
security find-identity -v -p codesigning
查看本地可用证书

重签两个文件

codesign -f -s "Apple Development: [email protected] (5753AVLB68)" CydiaSubstrate
codesign -f -s "Apple Development: [email protected] (5753AVLB68)" HelloTheos.dylib
重签两个文件
  1. 对app进行重签
    7.1 删除签名文件_CodeSignature
    7.2 替换embedded.mobileprovision文件
    7.3 对mach-o文件进行重签
codesign -f -s "Apple Development: [email protected] (5753AVLB68)" --no-strict --entitlements=../Entitlements.plist ./TheosDemo.app/TheosDemo
mach-o文件重签

7.4 检查是否有framework,有则对所有framework进行重签
7.5 修改plist文件中的bundleid
7.6 打包ipa

zip -ry TheosDemoNew.ipa Payload

大功告成!!!

生活如此美好,今天就点到为止。。。

你可能感兴趣的:(未越狱设备使用动态库)