当我们在越狱手机上hook了别的app后,自然也想装到自己未越狱的手机上用,那么这时候就需要注入插件以及重签名app了。
老规矩,以pp虾为例
-
首先你需要准备一份有效的描述文件
- 拿到
pp虾
的.app文件
,(可执行文件需要脱壳处理),我这里用Clutch
脱壳,得到ipa文件
,后缀改为zip
,解压即可。
-
hook
的动态库依赖于Cydia
的动态库/Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate
,将CydiaSubstrate
拖到.app
里 - 将
hook
过的动态库(/Library/MobileSubstrate/DynamicLibraries
)也放到.app
里
- 将描述文件也拖到
.app
里 - 为了让
app
能编译我们hook
的动态库,需要借助https://github.com/Tyilo/insert_dylib,编译出可执行文件,放到Mac
的/usr/local/bin
路径下
- 通过指令
insert_dylib @executable_path/tweak_test.dylib xxx --all-yes --weak xxx
注入动态库 , @executable_path:可执行文件所在目录 -
install_name_tool -change 旧路径 新路径 要修改的动态库
,修改动态库依赖路径
-
otool -L xx.dylib
可以查看动态库信息,看看路径是否替换成功 - 给动态库重签名,
security find-identity -v -p codesigning
查看可用证书,codesign -fs 证书id xxx
签名
- 对
.app
重签名,我是用ai思助手签的,挺方便的。通过它的工具箱里的ipa签名,用证书进行签名的。手动自己签,app里可能还有动态库,AppExtension(PlugIns文件夹中),WatchApp(Watch文件夹),都需要签,比较麻烦。 - 这时候装到未越狱的手机上看看,如下图,确实是
hook
后的app
了,去掉了不想看到的广告banner,更多功能和即玩小游戏模块,以及增加了版本号cell,点击登录弹窗。
emmm.... 发现图片资源没有带进去,奇了怪。
end
本文章仅供学习交流,如有侵权,请联系删除,谢谢!