2020 iOS 逆向学习-砸壳(更新:20200408)

网上关于 iOS 应用砸壳相关的博客,非常多,但都存在一些问题。

  1. 年代久远,砸壳的方法早已过时
  2. 比较新的文档,不够完整,不够详细,对于一些过程都是一带而过,缺乏详细的描述,对小白来说非常不友好。

故,我将最近实践成功的经验详细地记录下来,希望对小白们有所帮助吧,如果文中有说得不对的地方,也希望大家能指出。

预备知识

教材:主要学习了一下庆哥(刘培庆)的书《iOS应用逆向与安全》,小伙伴们可以去买一本正版纸书,支持一下~

越狱设备

本次学习,选择的是 iOS 13.3.1 的 iPad mini4, A8 芯片 ARMv8 架构

iOS12-13越狱教程

其中要注意两点

  1. checkra1n 属于不完美越狱,与完美越狱的区别是如果设备重启了,将会回到未越狱状态,需要重新越狱。
  2. 注意越狱成功后,在手机上使用 checkra1n app下载 cydia 时,可以使用 4G 网络,可以大幅加快下载速度。

frida 砸壳

为什么要砸壳?

这是因为应用上传至App Store后,苹果会对应用的代码部分进行加密,当应用运行时才会动态解密, 在这样的情况下是无法直接使用后面讲到的class-dump和IDA进行分析的。所以,在分析应用之前,要把应用加密的内容解密,然后把应用和解密后的可执行文件导出到计算机中。

这里我不会使用网上经常出现的 dumpdecryptedClutch,而是使用了 frida

1 iOS 端配置

  1. 在越狱设备上,打开 cydia,添加源 https://build.frida.re
  2. 打开添加的源,找出 frida 进行安装,其中会列出 3 个软件,分别是 Frida for 32-bit devicesFrida for A12+ devicesFrida for pre-A12 devices 三个,请根据越狱设备的实际 CPU 类型,进行选择,本文中使用的 iPad mini 4 是 A8 芯片,所以安装了第三项
  3. 安装完成后,可在ssh终端运行 frida-ps -U 查看,是否成功(实测,command not found 应该也不影响后续的使用)

2 MAC 端配置

Anaconda

这个软件的主要作用是可以配置多种不同的 Python 环境,避免在 MAC 上安装多个 Python 版本,导致的管理混乱,其他功能可以自己去了解一下。

这里采用 Anaconda 的原因是,在用普通方式(在自己的 mac 下安装不同版本的 Python,并安装依赖库)踩了很多坑,实在趟不过了......

  1. 搜索并安装 Anaconda 软件
  2. 安装完成后,建议不使用软件自带的 Python,而是自己 create environment,这里配置环境 Python 3.7,并为环境取名 zyy
  3. 配置完成后,点击对应 zyy 环境的三角箭头,打开终端,这个终端就会有你安装的 Python 版本

安装 frida-ios-dump

  1. 克隆庆哥(刘培庆)改造过的仓库,代码如下
git clone https://github.com/AloneMonkey/frida-ios-dump
  1. 使用前面提到的 Anaconda 打开的终端, cd 到前一步下载的目录 frida-ios-dump
  2. 安装需要的依赖
sudo pip install -r requirements.txt --upgrade
  1. 如果在上一步出现 six 导致的问题,请忽略 six 这个库
sudo pip install six --upgrade --ignore-installed six
  1. 如果安装的过程比较慢,可以切换成清华源进行安装 (如果存在因为这个源而导致某些库安装不成功,可以通过修改 requirements.txt 中的依赖库名单来分批下载,使用原本的源下载不成功的库)
sudo pip install -r requirements.txt --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple

电脑和 iOS 设备的端口映射

  1. 使用 USB 将设备与电脑相连
  2. 进行映射,在终端输入 iproxy 2222 22(其中 2222 代表电脑端的端口,22 是 iOS 设备的端口号,如果发现电脑端端口号已被占用,可以使用新的端口号进行映射,打开在 frida-ios-dump 目录下的 dump.py,并将 2222 修改为新的端口号,端口号注意不要超过四位数)
  3. 终端显示 waiting for connection,看到这儿,抓紧时间看下一步的砸壳喔,否则连接就会超时

砸壳

  1. 确保 iOS 设备一直保持 USB 连接,并将想要砸壳的应用打开,保证显示在前台,否则可能出现找不到应用,导致砸壳失败
  2. 使用 Anaconda 的 zyy 环境另开一个新的终端
  3. cd 到之前下载的 frida-ios-dump 目录
  4. 执行 ./dump.py 微信(这里将微信改成你想砸壳的应用名即可)
  5. 如果发现应用名称重复了怎么办?终端执行 ./dump.py -l 可以查看已安装的应用名称和对应的 bundle Id
PID  Name                       Identifier
-----  -------------------------  ----------------------------------------
 9661  App Store                  com.apple.AppStore
16977  Moment                     com.kevinholesh.Moment
 1311  Safari                     com.apple.mobilesafari
16586  信息                         com.apple.MobileSMS
 4147  微信                         com.tencent.xin
10048  相机                         com.apple.camera
 7567  设置                         com.apple.Preferences
    -  CrashReporter              crash-reporter
    -  Cydia                      com.saurik.Cydia
    -  通讯录                        com.apple.MobileAddressBook
    -  邮件                         com.apple.mobilemail
    -  音乐                         com.apple.Music
  1. 执行如下命令,对指定的 bundle id 应用进行砸壳,./dump.py -b com.tencent.xin
  2. 砸壳成功,可以在 frida-ios-dump 目录下找到 xxx.ipa

如何判断 ipa 是否有壳

  1. 将 ipa 文件后缀改为 zip 进行解压
  2. 找到 xx.app 包内容下的 xx 二进制可执行文件(abc 是我随便取的)
  3. 在终端执行 otool -l xx | grep crypt
  4. 找到 cryptid 这一行,有壳为 1,已脱壳为 0

如果能成功走到这一步,恭喜,砸壳成功啦。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容