iOS测试软件砸壳,iOS 逆向工程(十三)之加壳与脱壳/砸壳

本文详细介绍了iOS应用的加壳、脱壳原理,以及使用flexdecrypt和frida-ios-dump工具进行脱壳的步骤。通过Mac和越狱iPhone,演示了如何在终端中操作,包括安装工具、查找目标应用、执行脱壳命令,并针对可能出现的问题提供了解决方案。最后,提到了使用HopperDisassembler分析Mach-O文件的方法。
摘要由CSDN通过智能技术生成

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

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

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

脱壳工具: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文件;

b1b5d912c838be90cb1a8f02fd37af76.png

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

ee3bf13e9fe18b4f8e3a9e7642b282f2.png

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

d5f06dbe7d572ad9e54c74ad58b13470.png

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

53279bb8e7d511df8905c8f16c03d03c.png

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

7bd8fe0d164efcd2da06f1ee01e65f0c.png

安装方式二:

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

8db1babd0ed993fe214999372c866eb9.png

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

09518d5fbaab7f7e733d4277afa1389d.png

脱壳/砸壳操作:

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

f48e6aaa11a2a995003fd46579427434.png

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

63e3a273ffc4e9a3765cebcbcad36d18.png

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

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

36da562c52e1d358977d33ed9edc746a.png

b.Hopper Disassembler 查看Mach-O文件

00c1927687a52ad323735a0edddd11cb.png

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

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

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

安装步骤:

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 回车检测;

e26a07caf6eb00039722f41154bf1db4.png

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

4fbde3000047e37a90083e29bff98e2c.png

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

dcb4ff7f4e0d605864fd9901fe2774c1.png

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

f38a04127ac99783dc5ad891832b5b20.png

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

报错:

8bc9e8f2226d9fc7c8b708a6272f59ed.png

脱壳/砸壳操作:

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

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

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

774c54507e7580f30d4f4379c9a7a280.png

Hopper Disassembler 查看Mach-O文件:

ff995a26bff6db7485e7ab64f99653de.png

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

36c9916ebcfb85b7265815afc16f33db.png

Permission denied解决方式:

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

5c2e80eefe58d173e1dfff66a7fd9df2.png

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

03b0f52295d35cf12cb776492f5a186a.png

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

5153aeebf0915addf707d27cfb9bf31c.png

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

来源:https://www.cnblogs.com/akiha/p/13377935.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值