概念
加壳:利用特殊算法,对可执行文件的编码进行改变(压缩、加密),达到保护程序代码的目的
脱壳:去掉壳程序,将未加密的可执行文件还原出来,或者称砸壳
脱壳方式:硬脱壳、动态脱壳
脱壳工具:frida-ios-dump
判断是否加密:通过MachOView查看Load Commands -> LC_ENCRYPTION_INFO -> Crypt ID的值,0代表未加密
或者通过终端命令: otool -l Mach-O文件名 | grep crypt
frida-ios-dump安装
下载地址:https://github.com/AloneMonkey/frida-ios-dump
安装步骤:
1. iPhone端准备:
1.打开Cydia 【软件源】-->【编辑】-->【添加】,输入 https://build.frida.re 完成;
2.在软件源下,点击 【bulid.frida.re 】-->【全部软件包(或者开发)】选择 【Frida for pre-A12 devices】(根据手机CPU型号选择,6是A8小于A12) 安装;
3.安装完成后,在Mac终端登录iPhone端,输入 killall SpringBoard (重启手机桌面)回车
注意:不需要在手机终端输入frida-ps -U ,会报 -sh: frida-ps: command not found 错误,frida-ps -U 检查安装成功指令是在Mac终端使用的
2. Mac端准备:
-
在终端输入 sudo pip3 install frida 回车,安装完成后输入 frida-ps -U 回车检测;
ps: 使用使用Python3 来操作 如果是Mac自带的Python 输入 sudo pip install frida 回车
2021-02-01 5.12.15.png 下载 frida-ios-dump 到 /opt/dump/ 文件夹下,输入 sudo mkdir /opt/dump && cd /opt/dump && sudo git clone https://github.com/AloneMonkey/frida-ios-dump 回车;
-
添加firda-ios-dump 的依赖,输入 sudo pip3 install -r /opt/dump/frida-ios-dump/requirements.txt --upgrade 回车;
2021-02-01 5.27.43.png -
修改 dump.py 的iPhone端关于USB端口号(22)映射到Mac端的端口(10010)和登录用户名及密码;
a. 由于/opt/dump/frida-ios-dump/dump.py是只读文件
2021-02-01 5.35.38.png
b. 需要将 /opt/dump/frida-ios-dump/ 下文件 dump.py 的内容拷贝一份出来,新建一个dump.py文件并粘贴拷贝的内容;在新建的dump.py文件修改内容;
2021-02-01 5.42.39.pngc. 替换原dump.py文件,查看修改内容; 输入 vim /opt/dump/frida-ios-dump/dump.py 回车;
设置指令别名;
a.在终端输入 vim ~/.bash_profile 回车;
b.在 alias python 下面添加 alias dump.py="/opt/dump/frida-ios-dump/dump.py”,按 “:”键后 输入 wq 回车;
c.生效配置文件,输入 source ~/.bash_profile 回车
脱壳/砸壳操作:
1.在Mac终端输入 cd /opt/dump/frida-ios-dump/ 回车;
2.打开iPhone上需要脱壳的程序;
3.在终端输入 python3 dump.py 【App Name】回车
- 用Hopper Disassembler 查看脱壳后的Mach-O文件
Permission denied解决方式:
1.将 /opt/dump/frida-ios-dump/ 下文件 dump.py 的内容拷贝一份出来,新建一个dump.py文件并粘贴拷贝的内容;
2.新建一个保存路径放在43行后,内容为 SAVE_PATH = os.path.join(os.path.expanduser("~"), 'Desktop') 将存储路径指向桌面;
3.修改生成ipa文件的路径为SAVE_PATH;
4.将新建的dump.py文件替换 /opt/dump/frida-ios-dump/ 下的dump.py文件