在教程开始前,简单说下为什么要砸壳,砸壳后我们能做什么。
1、先下载一个checkra1n,下载链接:https://checkra.in/
2、连接苹果手机,确保手机被识别后点击开始按钮
3、根据checkra1n的指示开始操作,越狱成功后,可以在手机上看到checkra1n的App(在越狱完成之前,不要断开手机与MAC的连接)
4、打开checkra1n,安装cydia
二、配置手机环境
在cydia中搜索并安装OpenSSH、Cycript,在cydia中搜索添加frida源(https://build.frida.re),并安装Frida插件,用于后续的砸壳(frida要根据手机系统选对应的版本)
三、下载需要的APP
去App Store下载你看好的,美丽的APP,并且启动它
网上可以砸壳的库有好几个,下面介绍dumpdecrypted、frida这两个库
方法 | 优点 | 缺点 |
dumpdecrypted | 环境配置简单 | 操作步骤较多,生成 .decrypted文件,需手动替换 |
frida | 一键砸壳,生成ipa包 | 1、环境配置复杂 2、砸壳过程如果中断,需从头开始 |
下载地址:https://github.com/stefanesser/dumpdecrypted
(ps:源代码只脱壳包的可执行的文件,没有砸framework中的库,可参考这个版本修改代码https://github.com/AloneMonkey/dumpdecrypted.git)
(注意:生成的dylib要匹配手机的系统版本,否则会砸壳失败。 直接在终端make,会根据电脑上的xcode版本生成对应版本的dylib;若是要生成其他版本,可以用源代码新建动态库,自定义最低版本。)
1.1打开终端,进⼊dumpdecrypted目录,输入make,生成dumpdecrypted.dylib
1.2 获取电脑上的签名证书,对dumpdecrypted.dylib进⾏签名
securityfind-identity -v -p codesigning
codesign--force --verify --verbose --sign "iPhone Developer: xxxxxxx" dumpdecrypted.dylib
ssh root@
ps -e
以下图为例,可以看到,进程编号: 7219,应⽤路径为/var/containers/Bundle/Application/6F77740B-4DD3-4508-8F54-0F407B47EC8D/Strategy click ejection.app/Strategy click ejection
2.4根据进程编号找到应⽤沙盒路路径(快捷键"control+D"退出cycript)
cycript -p 7219 #执⾏行行之后命令⾏行行会以cy#开头
cy# [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]
找到沙盒路径: /var/mobile/Containers/Data/Application/64DA79D7-D0F3-4F67-B15D-328EE91EE64C/Documents/
2.5新建终端窗⼝,将dumpdecrypted.dylib拷⻉至应⽤沙盒中
scpdumpdecrypted.dylib root@
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/containers/Bundle/Application/6F77740B-4DD3-4508-8F54-0F407B47EC8D/"Strategy click ejection".app/"Strategy click ejection"
scp-r root@
scp-r root@
otool-l <Mach-O文件> | grep cryptid #判断mach-O文件是否脱壳了,1代表有壳
下载地址:https://github.com/AloneMonkey/frida-ios-dump
1、电脑安装frida环境(安装的版本要和手机的对应)、安装frida-ios-dump所需的依赖
pip3 instanll frida
sudo pip3 install -r requirements.txt --upgrade
1.1根据手机连接的网络修改dump.py中的host和port
2、找到应用砸壳
2.1 显示手机上的应用
python3 dump.py -l
2.2用应用的名字或者包名砸壳
python3 dump.py [app name]/[app bundle]
使⽤用class-dump提取破壳应⽤用Mach-O文件中存储的头文件信息。
下载地址:http://stevenygard.com/projects/class-dump/
1、安装class-dump,赋予class-dump执⾏权限
sudo chmod 777 class-dump
2、提取头文件信息
class-dump -H
1、连接手机时报错
原因:known_hosts是记录远程主机的公钥的文件,之前重装个系统,而保存的公钥还是之前系统的系统公钥,在ssh链接的时候首先会验证公钥,如果公钥不对,那么就会报错
解决:使用shh-keygen 命令把对应的ip公钥信息清除
ssh-keygen-R
2、dumpdecrypted砸壳时报错Abort trap: 6
原因:dumpdecrypted.dylib版本跟手机系统版本不匹配
解决:用dumpdecrypted源码新建动态库,自定义最低版本
3、安装frida依赖报错
解决:在pip命令中加入–use-feature=2020-resolver参数就可以了, 比如
pip3install xxx --use-feature=2020-resolver
4、frida执行dump.py报错
(1)报错1
needgadget to attach; its default location is: .cache/frida/gadget-ios.dylib
解决:下载对应版本的dylib放到缓存位置(https://github.com/frida/frida/releases/)
mkdir -p ~/.cache/frida
cp <下载的dylib> ~/.cache/frida/gadget-ios.dylib
(2)报错2
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/frida/core.py", line 383, in _on_message
callback(message,data)
File"dump.py", line 119, in on_message
scp.get(scp_from,scp_to)
......
解决:修改dump.py脚本
- #!/usr/bin/env python
+ #!/usr/bin/env python3
#-*- coding: utf-8 -*-
(3)报错3
1、failed to get the task for process <进程编号>
2、unable to attach to the specified process
原因:cydia没有安装frida或者安装的版本和手机版本不匹配
来源-微信公众号:三七互娱技术团队
出处:https://mp.weixin.qq.com/s/--DG1-Gk_ppi0KjTSbYwIg
页面更新:2024-05-03
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号