tweak项目ipa包重签名

1、参考链接:ipa包重签名
2、tweak项目修改部分是以插件的形式存在,因此需要将插件动态库与现在的ipa包重新打包签名;
3、找到tweak后生成的动态库,参考路径为:/Library/MobileSubstrate/DynamicLibarries/xxxTweak.dylib;
4、将该dylib文件放在现有包xx.app中,与二进文件同目录;
5、使用otool -L xxxxx查看Mach-O文件的动态库加载,这里面是没有tweak动态库的,需要将xxxTweak.dylib加进来;
6、工具来了,https://github.com/Tyilo/insert_dylib
6.1、使用release编译该git工程,得到一个inser_dylib工具,放在/usr/local/bin中;
6.2、insert_dylib @executable_path/xxxTweak.dylib xxxx

yusian@SianMac2:~$insert_dylib @executable_path/xxxTweak.dylib xxxx
LC_CODE_SIGNATURE load command found. Remove it? [y/n] y
Added LC_LOAD_DYLIB to lldb_patched

6.3、此时会生成一个xxxx_patched的Mach-O文件,使用otool -L xxxx查看能看到新加的动态库
7、修改xxxTweak.dylib中的库路径;
7.1、使用otool -L xxxTweak.dylib,可看到依赖的库有一个是与Cydia相关的
/Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate
7.2、从越狱手机中将库拷贝出来存放到xxx.app目录中,与该动态库同目录;
7.3、修改动态库中CydiaSubstrate的路径

yusian@SianMac2:~$ install_name_tool xxxxtweak.dylib /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate @loader_path/CydiaSubstrate

8、将新加进来的两个动态库签名

yusian@SianMac2:~$ codesign -fs xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxtweak.dylib
lldbtweak.dylib: replacing existing signature
yusian@SianMac2:~$ codesign -fs xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx CydiaSubstrate
CydiaSubstrate: replacing existing signature

9、整包重签名:ipa包重签名

yusian@SianMac2:~$ codesign -fs xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --entitlements inh_entitlements.plist Payload/xxxx.app
Payload/lldb.app: replacing existing signature

10、两个环境变量说明:
10.1、@executable_path:可执行文件路径
10.2、@loader_path:当前加载库路径

Leave a Reply