• iOS 逆向工程(十三)之加壳与脱壳/砸壳


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

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

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

    脱壳工具:Clutch(弃用)、dumpdecrypted(弃用)、frida、crakerx、flexdecrypt、bagbak

    手机安装App的ipa文件位置:/var/containers/Bundle/Application/

    判断是否加密: otool -l  Mach-O文件名 | grep crypt

    flexdecrypt安装:

    下载地址:https://github.com/JohnCoates/flexdecrypt/releases/download/1.1/flexdecrypt.deb

    安装方式一:

    1.下载flexdecrypt.deb文件;

    2.将flexdecrypt.deb 拷贝到手机的 /var/root/Media/Cydia/AutoInstall目录;

    3.在手机上通过Filza资源管理工具定位到 /var/root/Media/Cydia/AutoInstall ,点击安装;

    4.远程登录iPhone5s,输入 killall SpringBoard (重启手机桌面)回车;

    5.登录手机终端条件下,输入 flexdecrypt 回车;

    安装方式二:

    1.登录手机终端后,直接输入 wget https://github.com/JohnCoates/flexdecrypt/releases/download/1.1/flexdecrypt.deb

    2.输入安装指令 dpkg -i flexdecrypt.deb 回车;

    脱壳/砸壳操作:

    1.登录iPhone5s后,输入 ps -A 回车,寻找要脱壳的的软件;

    2.输入指令 flexdecrypt /var/containers/Bundle/Application/1EB14B56-6B19-442F-8289-A7A5D8290E5E/MobileMail.app/MobileMail 回车;

    3.将 /tmp/MobileMail 路径下的 MobileMail 拷贝到Mac 工作文件夹, 用Hopper Disassembler 查看脱壳后的Mach-O文件

    a.在Mac终端输入 scp -P 10010 root@localhost:"/tmp/MobileMail" ~/Desktop/jail_work 回车

    b.Hopper Disassembler 查看Mach-O文件

    Tips:不是所有的App都能使用flexdecrypt脱壳:WeChat、Aweme、唱吧脱壳失败,后续查找原因

    另一种脱壳方式:frida-ios-dump

    涉及设备:MacBook、iPhone5s(越狱,A7处理器,ARM64)

    下载地址:https://github.com/AloneMonkey/frida-ios-dump

    安装步骤:

    iPhone端准备:

    1.打开Cydia 【软件源】-->【编辑】-->【添加】,输入 https://build.frida.re 完成;

    2.在软件源下,点击 【bulid.frida.re 】-->【全部软件包(或者开发)】选择 【Frida for pre-A12 devices】(根据手机CPU型号选择,5s是A7小于A12) 安装;

    3.安装完成后,在Mac终端登录iPhone端,输入 killall SpringBoard (重启手机桌面)回车

    注意:不需要在手机终端输入frida-ps -U ,会报 -sh: frida-ps: command not found 错误,frida-ps -U 检查安装成功指令是在Mac终端使用的

    Mac端准备:

    1.在终端输入 sudo pip install frida 回车,安装完成后输入 frida-ps -U 回车检测;

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

    3.添加firda-ios-dump 的依赖,输入 sudo pip install -r /opt/dump/frida-ios-dump/requirements.txt --upgrade 回车;

    4.修改 dump.py 的iPhone端关于USB端口号(22)映射到Mac端的端口(10010)和登录用户名及密码,输入 vim /opt/dump/frida-ios-dump/dump.py 回车;

    5.设置指令别名;

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

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

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

    注意:在设置指令别名的时候,由于我的bash_profile 文件是指向python3版本,所以在使用dump.py 指令的时候会报 ModuleNotFoundError: No module named 'frida' 错,python3 版本下 dump.py 依赖frida出了点问题(默认安装的是python2 版本的frida), 解决思路有两种:a.重新配置bash_profile 文件的Python 执行版本路径,b.使用python2 来执行dump.py

    报错:

    脱壳/砸壳操作:

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

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

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

    Hopper Disassembler 查看Mach-O文件:

    注意:由于 frida-ios-dump 文件夹是readonly 属性,在脱壳后会报 zip I/O error: Permission denied 错误

    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文件

  • 相关阅读:
    Git:五、操作远程仓库
    Git:四、连接GitHub远程仓库
    Git:三、工作原理
    Git:二、本地文件操作
    Git:一、简介&安装Git 2.20.1——Mac&Win
    Web前端:博客美化:四、网易云音乐单曲播放器
    设计模式之代理模式(proxy pattern)
    OpenCC的编译与多语言使用
    唯一标识符漫谈
    vscode local attach 和 remote debug
  • 原文地址:https://www.cnblogs.com/akiha/p/13377935.html
Copyright © 2020-2023  润新知