iOS 12.2 脱壳/砸壳(使用frida-ios-dump)

概念

加壳:利用特殊算法,对可执行文件的编码进行改变(压缩、加密),达到保护程序代码的目的

2021-01-22 3.58.12.png

脱壳:去掉壳程序,将未加密的可执行文件还原出来,或者称砸壳

脱壳方式:硬脱壳、动态脱壳

2021-01-22 3.58.28.png

脱壳工具:frida-ios-dump

判断是否加密:通过MachOView查看Load Commands -> LC_ENCRYPTION_INFO -> Crypt ID的值,0代表未加密

2021-01-22 4.17.14.png

或者通过终端命令: otool -l Mach-O文件名 | grep crypt


2021-01-22 4.11.32.png

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端准备:

  1. 在终端输入 sudo pip3 install frida 回车,安装完成后输入 frida-ps -U 回车检测;
    ps: 使用使用Python3 来操作 如果是Mac自带的Python 输入 sudo pip install frida 回车

    2021-02-01 5.12.15.png

  2. 下载 frida-ios-dump 到 /opt/dump/ 文件夹下,输入 sudo mkdir /opt/dump && cd /opt/dump && sudo git clone https://github.com/AloneMonkey/frida-ios-dump 回车;

2021-02-01 5.17.08.png
  1. 添加firda-ios-dump 的依赖,输入 sudo pip3 install -r /opt/dump/frida-ios-dump/requirements.txt --upgrade 回车;


    2021-02-01 5.27.43.png
  2. 修改 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.png

    c. 替换原dump.py文件,查看修改内容; 输入 vim /opt/dump/frida-ios-dump/dump.py 回车;

  3. 设置指令别名;

a.在终端输入 vim ~/.bash_profile 回车;

b.在 alias python 下面添加 alias dump.py="/opt/dump/frida-ios-dump/dump.py”,按 “:”键后 输入 wq 回车;

c.生效配置文件,输入 source ~/.bash_profile 回车

2021-02-01 5.30.04.png

脱壳/砸壳操作:

1.在Mac终端输入 cd /opt/dump/frida-ios-dump/ 回车;


2021-02-01 5.32.13.png

2.打开iPhone上需要脱壳的程序;

3.在终端输入 python3 dump.py 【App Name】回车

2021-02-01 5.34.02.png

2021-02-01 5.54.02.png
  1. 用Hopper Disassembler 查看脱壳后的Mach-O文件
2021-01-22 5.00.49.png

Permission denied解决方式:

1.将 /opt/dump/frida-ios-dump/ 下文件 dump.py 的内容拷贝一份出来,新建一个dump.py文件并粘贴拷贝的内容;

2.新建一个保存路径放在43行后,内容为 SAVE_PATH = os.path.join(os.path.expanduser("~"), 'Desktop') 将存储路径指向桌面;


2021-02-01 5.36.33.png

3.修改生成ipa文件的路径为SAVE_PATH;

i2021-02-01 5.42.13.png

4.将新建的dump.py文件替换 /opt/dump/frida-ios-dump/ 下的dump.py文件

参考资料

iOS 逆向工程(十三)之加壳与脱壳/砸壳(https://www.cnblogs.com/akiha/p/13377935.html)