关于重签名的坑

1.查询修改依赖

用系统自带的otool查询依赖

otool -L xxx.dylib

一般来讲,用theos产生的dylib会有mobilesubstrate依赖

关于重签名的坑_第1张图片
依赖关系

然而非越狱设备是没有这个内容的,所有我们要从越狱设备中把cydiasubstrate文件copy出来重命名为libsubstrate.dylib,放到和我们生成的xxx.dylib同一目录结构下(theos打包make package生成的dylib在隐藏文件夹.theos里)


使用下面指令修改依赖关系

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

再查询依赖关系

关于重签名的坑_第2张图片
修改后的依赖关系

可以看到依赖已经修改完毕

2.重签名

重签名生成的xxx.dylib以及libsubstrate.dylib(非常重要)

codesign -f -s 证书名称 xxx.dylib

codesign -f -s 证书名称 libsubstrate.dylib

不知道自己的证书名称可根据下面的代码查询电脑里拥有的证书

security find-identity -v -p codesigning

使用adHoc需要使用发布证书(我自己傻了,一直用的开发证书,导致一直失败,浪费了好长时间)

3.将dylib注入到app中

这里我们使用的是insert_dylib ,将xxx.dylib与libsubstrate.dylib拷贝到与insert_dylib同一目录下,将目标.app文件(ipa解压缩可以看到,一定要使用越狱过的包,可以从xx助手上下载越狱包,或者自己砸壳)也拷贝到同一目录下

使用下面代码注入(xxx.app/xxx指的是目标的二进制文件)

./insert_dylib @executable_path/xxx.dylib xxx.app/xxx

关于重签名的坑_第3张图片

全选n即可,完成后将xxx.dylib以及libsubstrate.dylib拷贝到xxx.app中,将.app中的xxx_patched改为xxx

4.打包

使用xcrun将其打包成ipa包

xcrun -sdk iphoneos PackageApplication -v xxx.app -o ~/xxx.ipa

5.重签名

这里我们使用的是iResign重签名

关于重签名的坑_第4张图片
iResign图形化工具

1.第一个就是我们的ipa包

2.第二个是我们的发布证书,我是用的个人开发者申请的adhoc证书(记得要将设备加进去),记得要将证书名改为embedded.mobileprovision(不能修改)

3.第三个是entitlements.plist文件,虽然网上说不需要选择,但是我不选择发现重签名会报错,只能自己写了个,格式如下

关于重签名的坑_第5张图片
entitlements.plist文件

xxx是自己的team id,可以到开发者中心查看,后面的为自己写的包名

4.第四个为创建证书时写的bundle id

5.选择证书

点击重签名,即可以在ipa包的位置找到同名+resigned的ipa包,在非越狱机上安装试试吧

特别鸣谢:

1.移动App入侵与逆向破解技术-iOS篇

2.如何安装Tweak动态生成的.dylib文件

3.iOSRE逆向论坛 

你可能感兴趣的:(关于重签名的坑)