iOS重打包之MonkeyDev
一、MonkeyDev环境搭建
MonkeyDev 是一款非越狱插件开发工具。
优势:
1、使用 Xcode 开发,运行,调试。
2、将脱壳后的应用(见 iOS 脱壳)或企业级账号应用重签名,直接运行到手机。
3、支持动态库注入宿主App。
4、支持通过 CocoaPods 安装三方集成 SDK。
二、Mac安装MonkeyDev
macOS Monterey 12.5.1
Xcode版本 13.4.1
1.1 官网安装教程
外网下载常见各种各样的问题阻塞安装流程,可参考手动安装。
1.2 手动安装
①下载工程:MonkeyDev工程下载;
②终端进入MonkeyDev/bin目录,执行md-install文件
cd MonkeyDev/bin
sudo ./md-install
③执行大概率会报错,此时需要修改md-install文件
打开xxx/MonkeyDev-master/bin/md-install ,注释下面代码
#下载一些基础文件和模板文件
#downloadGithubTarball "https://codeload.github.com/AloneMonkey/MonkeyDev/tar.gz/$branch" "$MonkeyDevPath" "MonkeyDev base"
#downloadGithubTarball "https://codeload.github.com/AloneMonkey/MonkeyDev-Xcode-Templates/tar.gz/$branch" "$MonkeyDevPath/templates" "Xcode templates"
#下载frida-ios-dump
#echo "Downloading frida-ios-dump from Github..."
#downloadFile "https://raw.githubusercontent.com/AloneMonkey/frida-ios-dump/3.x/dump.py" "$MonkeyDevPath/bin/dump.py"
#downloadFile "https://raw.githubusercontent.com/AloneMonkey/frida-ios-dump/3.x/dump.js" "$MonkeyDevPath/bin/dump.js"
④下载frida-ios-dump,找dump.py与dump.js文件
手动下载frida-ios-dump
下载完成后,手动拷贝文件frida-ios-dump/dump.py和frida-ios-dump/dump.js,粘贴到/opt/MonkeyDev/bin/文件夹中,并赋予文件权限
//赋予执行权限
chmod +x /opt/MonkeyDev/bin/dump.py
⑤回到下载MonkeyDev工程,继续执行安装
//继续安装
sudo ./md-install
⑥如果报错关于Xcode问题,需指定Xcode
// 选择xcode
sudo xcode-select -s /Applications/Xcode.app
继续修改md-install(下载的MonkeyDev工程中)
// 修改md-install
# macosxSDKSpecificationsPath=$macosSdkPlatformPath/Developer/Library/Xcode/Specifications
# packageTypesForMacOSXPath="$macosxSDKSpecificationsPath/MacOSX Package Types.xcspec"
# productTypesForMacOSXPath="$macosxSDKSpecificationsPath/MacOSX Product Types.xcspec"
改为
macosxSDKSpecificationsPath=$macosSdkPlatformPath/Developer/Library/Xcode/PrivatePlugIns
packageTypesForMacOSXPath="$macosxSDKSpecificationsPath/IDEOSXSupportCore.ideplugin/Contents/Resources/MacOSX Package Types.xcspec"
productTypesForMacOSXPath="$macosxSDKSpecificationsPath/IDEOSXSupportCore.ideplugin/Contents/Resources/MacOSX Product Types.xcspec"
⑦ 上面配置好后,执行安装
sudo ./md-install
到此 【进程已完成】,查看Xcode。
此时可以创建MonkeyApp工程。
2. Xcode编译报错
创建工程后选择真机编译工程。
2.1 创建MonkeyApp编译报错
报错①:Embedded-Device.xcspec文件报错,xcode clould not initialize core
解决:
/Applications/Xcode.app/Contents/PlugIns/IDEiOSSupportCore.ideplugin/Contents/Resources/Embedded-Device.xcspec
修改上述文件,文本编辑,删除标签内中的起始的两个空的,即 ,保存,即可。
报错②:Signing for “MonkeyDemoDylib” requires a development team. Select a development team in the Signing & Capabilities editor.
解决:Targets(Dylib)->Build Settings-> ➕-> 添加 CODE_SIGNING_ALLOWED = NO;
2.2 编译缓存报错
清理,移除DerivedData
移除DerivedData,建议定期清理,会重新生成
~/Library/Developer/Xcode/DerivedData
此文件夹内是模拟器运行每个APP生成的缓存文件,删除之后只是再重新运行APP时会重新编译耗时较长,并再次生成缓存文件。
3.重打包运行IPA
需要提前准备好ipa包。(自签名构建、分发平台下载、手机助手或砸壳等渠道)
3.1 导入IPA包
把准备好的ipa包导入MonkeyDevDemo/TargetApp文件内,其它文件无需删除改动。
3.2 运行工程报错
报错①: file not found: /usr/lib/libstdc++.dylib
Xcode 10之后删除的libstdc++库
先下载下来这个项目,然后打开终端cd到libstdc–master文件夹;
如果你使用的是 Xcode 10,则将install-xcode_10.sh拖到终端中执行即可;
Xcode 11 之后的版本则将install-xcode_11+.sh拖到终端中执行。
下载libstdc库解决
报错②: Executable Not Found
运行前先Product->Clean.
此时Xcode运行成功,IPA重打包环境构建完成。
三、后续
除了MonkeyDev重打包外,还有直接通过壳工程,使用脚本在启动时替换app,欺骗系统需启动的app。
下一篇文章介绍下另一种重打包方式:
《iOS重打包之脚本替换》