iOS砸壳操作教程

以云看科技2024-04-28 11:05:19  63

在教程开始前,简单说下为什么要砸壳,砸壳后我们能做什么。

在 App Store 看到感兴趣的 APP ,我们会希望了解它是如何实现的,可以从技术角度进行源码剖析。比如研究该 APP 的优点、游戏是什么引擎开发的、编码风格如何、用到了哪些三方库等等。但从 App Store 获取的应用都是经过加壳保护的,要想着手进行分析,必须先跨过第一道门槛:砸壳。

所以说,砸壳是对 APP 脱壳的逆向操作。为了深入解析想了解的 APP ,让我们开始砸壳之旅吧。

一、第一步,为手机越狱

2、连接苹果手机,确保手机被识别后点击开始按钮

3、根据checkra1n的指示开始操作,越狱成功后,可以在手机上看到checkra1n的App(在越狱完成之前,不要断开手机与MAC的连接)

4、打开checkra1n,安装cydia

二、配置手机环境

在cydia中搜索并安装OpenSSH、Cycript,在cydia中搜索添加frida源(https://build.frida.re),并安装Frida插件,用于后续的砸壳(frida要根据手机系统选对应的版本)

四、关键操作,对APP砸壳

网上可以砸壳的库有好几个,下面介绍dumpdecrypted、frida这两个库

方法

优点

缺点

dumpdecrypted

环境配置简单

操作步骤较多,生成 .decrypted文件,需手动替换

frida

一键砸壳,生成ipa包

1、环境配置复杂

2、砸壳过程如果中断,需从头开始

【dumpdecrypted】方式介绍

下载地址:https://github.com/stefanesser/dumpdecrypted

(ps:源代码只脱壳包的可执行的文件,没有砸framework中的库,可参考这个版本修改代码https://github.com/AloneMonkey/dumpdecrypted.git)

1、生成dumpdecrypted.dylib并签名

(注意:生成的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

2、找到应用砸壳并保存到本地(步骤中需要输入密码地方,默认密码是alpine)

2.1连接iPhone(ip为手机链接的网络的ip)

ssh root@

2.2 iPhone启动“待砸壳应?用”,最大化终端窗?口,打印iPhone当前所有进程

ps -e

2.3找到“待砸壳应?”所在进程(自己安装的App路径一般以/var/开头)

以下图为例,可以看到,进程编号: 7219,应?路径为/var/containers/Bundle/Application/6F77740B-4DD3-4508-8F54-0F407B47EC8D/Strategy click ejection.app/Strategy click ejection

2.4根据进程编号找到应?沙盒路路径(快捷键"control+D"退出cycript)

cycript-p7219 #执?行行之后命令?行行会以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@:/var/mobile/Containers/Data/Application/64DA79D7-D0F3-4F67-B15D-328EE91EE64C/Documents/

2.6回到链接iPhone的终端,查看应?沙盒中是否存在dumpdecrypted.dylib文件

2.7使?dumpdecrypted.dylib动态库对应用进行破壳(若应用路径中有空格,需用双引号,否则会失败),破壳成功后,会在应?沙盒?目?生成.decrypted文件

DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/containers/Bundle/Application/6F77740B-4DD3-4508-8F54-0F407B47EC8D/"Strategy click ejection".app/"Strategy click ejection"

2.8拷?沙盒文件和应?文件?本地 (需新开一个窗口)

scp-r root@:/var/containers/Bundle/Application/6F77740B-4DD3-4508-8F54-0F407B47EC8D/* <存放应用文件的本地路径>

scp-r root@:/var/mobile/Containers/Data/Application/64DA79D7-D0F3-4F67-B15D-328EE91EE64C/* <存放沙盒文件的本地路径>

2.9拿到了ipa和已砸壳的xxx.decrypted文件,需手动替换掉ipa中Mach-O文件,生成新的ipa包

otool-l | grep cryptid #判断mach-O文件是否脱壳了,1代表有壳

【frida-ios-dump】方式介绍

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

1、电脑安装frida环境(安装的版本要和手机的对应)、安装frida-ios-dump所需的依赖

pip3instanll frida

sudopip3 install -r requirements.txt --upgrade

1.1根据手机连接的网络修改dump.py中的host和port

2、找到应用砸壳

2.1 显示手机上的应用

python3dump.py-l

2.2用应用的名字或者包名砸壳

python3dump.py[app name]/[app bundle]

四、Dump二进制文件

使?用class-dump提取破壳应?用Mach-O文件中存储的头文件信息。

1、安装class-dump,赋予class-dump执?权限

sudo chmod777 class-dump

2、提取头文件信息

class-dump -H -o <文件夹保存路径>

五、常见问题与解决方法

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、failedtogetthetaskforprocess <进程编号>

2、unabletoattachtothespecifiedprocess

原因:cydia没有安装frida或者安装的版本和手机版本不匹配

转载此文是出于传递更多信息目的。若来源标注错误或侵犯了您的合法权益,请与本站联系,我们将及时更正、删除、谢谢。
https://www.414w.com/read/415094.html
0
随机主题
难道不想看看房地产股票的业绩吗? 没有业绩涨上去, 也是空涨哦刘亦菲: 美得跟画一样山东青州: 小蜜蜂采蜜忙关爱老人 免费体检G1东欧爆种, 不然想晋级都难? 森林狼绅士横扫独行侠不在话下2024新鲜提案·黎里真实影像大会在苏州黎里开幕靴子落地,事关,低空经济、人工智能,今日市场行情预判百年红会, 等你续写! “我与红会的故事”征文活动来了!演训随时可能变实战!东部战区突然行动,毫无征兆却已包围台岛?布林肯喊话伊朗“莱希遇难会让你们日子更好”, 遭到伊民众愤怒反击武则天已经打算还政李唐, 为何张柬之等人还要发动神龙政变?同样面对权臣, 孙亮谨小慎微, 曹髦英勇无畏, 谁更值得称道?F1、F2、F3发布2025年赛历, 上海大奖赛为赛季第二站戏中戏负责看点, 真戏负责惊悚悬疑, 一片多吃泽连斯基乌克兰总统泽连斯基五周年之际,极力督促北约武器到位!困扰美国近百年的难题, 被中国攻克! 半年发电6.5亿度, 世界第一2024上半年值回票价的5部电影, 你要是一部都没看, 那就太遗憾了牟林: 美国悍然提出杀人双标, 国际刑事法院逮捕以总理博弈白热化谢晖死活不换人! 王禹李申圆跑拉胯了 贝里奇战犯级表现, 葛副总还是别上了据《华尔街日报》报道, 挪威在天然气管道破裂后追随新北极熊日产天籁2.0L自吸动力体验分享
最新回复(0)