最新版的越狱砸壳动态调试

目前针对iOS14,checkra1n能做到最简洁的一键不完美越狱。

ios手机端配置

  1. 手机端cydia 添加源:https://build.frida.re
  2. 搜索Frida,进行安装
  3. 安装成功验证
iPhone:~ root# ps -ax | grep frida    
  409 ??         0:00.89 /usr/sbin/frida-server
 2050 ttys000    0:00.01 grep frida

ps -ax | grep frida 为执行命令,看到如上打印即可

Mac端

我们需要安装python ,pip ,frida ,frida-tools。由于Mac自带的Python版本为2.7.x.不建议使用了,因此安装了Python3.7.7版本。如下:

  1. brew install wget //安装wget
  2. wget https://bootstrap.pypa.io/get-pip.py
  3. sudo python3 get-pip.py
  4. sudo pip3 install frida //安装frida
  5. sudo pip3 install frida-tools //安装frida

配置frida-ios-dump环境

  1. 从github下载代码命令: sudo mkdir /opt/dump && cd /opt/dump && sudo git clone https://github.com/AloneMonkey/frida-ios-dump
  2. 根据插件文档equirements.txt安装依赖 :sudo pip3 install -r /opt/dump/frida-ios-dump/requirements.txt --upgrade
  3. dump.py 中默认参数第35行的User,Password,Host,Port可按需进行修改

连接iPhone设备

brew安装usbmuxd,usbmuxd自带工具iproxy,iproxy可以快捷连接iPhone操作

iproxy 2222 22  //执行如下命令把当前连接设备的22端口(SSH端口)映射到电脑的2222端口,那么想和设备22端口通信,直接和本地的2222端口通信就可以

Cydia 安装 openSSH,另开终端进程

ssh -p 2222 root@127.0.0.1

砸壳

  1. python3 dump.py -l           //查看所有app获取对应bundleID
    
  2. python3 dump.py bundleID  //执行完成在当前目录生成ipa
    
  3. otool -l XXX | grep crypt //查看是否脱壳,该信息在LC_ENCRYPTION_INFO_64 Segment中
    

class-dump

  1. 下载对应版本:http://stevenygard.com/projects/class-dump/
  2. open /usr/local/bin 打开终端,将class-dump文件复制到/usr/local/bin
  3. 更改权限 sudo chmod 777 /usr/local/bin/class-dump
  4. 使用:class-dump -H app文件路径 -o 头文件保存路径
  5. 只能针对纯OC,对于Swift 混编代码则会提示:Error: Cannot find offset for address XXX in stringAtAddress:

Reveal

  1. Cydia安装Reveal2Loader
  2. 在设置中允许需要调试的App
  3. Mac端安装Reveal
  4. 在Help-Show Reveal Library in Finder中找到对应版本的RevealServer,复制到设备中: scp -r /Users/XXX/RevealServer.xcframework/ios-arm64_i386_x86_64-simulator/RevealServer.framework root@127.0.0.1:/Library/Frameworks 或者通过其他助手复制到Library/Frameworks中都是可以的

动态调试

手机端App通过debugserver与Mac端的LLDB经过USB进行数据传输

这里有两种方式:一种是用Xcode来进行调试,因为Xcode只能调试开发者自己证书的应用,所以需要重签名App;另一种是命令行调用lldb来调试,需要对 debugserver 赋予更高的权限,因为默认的 debugserver 也只能调试自己证书的App

通过Xcode:

  1. 打开 Xcode ,新建一个 demo, 并插上真机,完成 demo 在真机的调试
  2. ls ~/Library/MobileDevice/Provisioning\ Profiles 找到demo的描述文件
  3. 下载重签名软件 iReSign
  4. 重签名,分别填入砸壳后的ipa,demo的描述文件,demo的BundleID,勾选修改ID,对应的证书
  5. 原路径下生成重签包,如果包含appex,需要针对每一个ID进行修改;或者暴力一点直接删除 Plugins 文件夹和 Watch文件夹
  6. 把重签名的App安装到手机上并运行
  7. Xcode - Debug - Attach to Process by PID or Name 输入进程ID或者名称即可进入调试

通过debugserver + lldb:

  1. 使用iproxy将接设备的端口(SSH)映射到电脑端口 iproxy 2222 22

  2. SSH到USB设备 ssh -p 2222 root@127.0.0.1

  3. 将设备的debugserver拷贝到电脑端 scp -P2222 root@127.0.0.1:/Developer/usr/bin/debugserver ~/Desktop

  4. 安装ldid brew install ldid

  5. 拷贝如下代码,保存成ent.xml,放到同一级目录下,该xml实际上就是给debugserver添加了task_for_pid权限

    <plist version="1.0">
    <dict>
    <key>com.apple.springboard.debugapplications</key>
    <true/>
    <key>get-task-allow</key>
    <true/>
    <key>task_for_pid-allow</key>
    <true/>
    <key>run-unsigned-code</key>
    <true/>
    </dict>
    </plist>
    
  6. 执行 ldid -Sent.xml debugserver 进行签名

  7. 将增加权限的debugserver拷贝回设备 scp -P2222 ~/debugserver root@127.0.0.1:/usr/bin/debugserver

  8. ps -ef 查看当前的进程列表

  9. 执行 debugserver *:1234 -a prossesname/pid 将debugserver附加到进程,并开启1234端口,等待来自IP的LLDB接入

  10. 在Mac系统执行 iproxy 1234 1234 将本地端口映射到手机端口

  11. 在Mac系统启动lldb然后执行 process connect connect://localhost:1234

  12. image list -o -f 找到对应进程的基地址,再配合静态分析获取到的偏移地址就可以动态调试了

  13. 如遇到error: rejecting incoming connection from ::ffff:127.0.0.1 (expecting ::1)报错,则可将第9步改为debugserver 127.0.0.1:1234 XXX

  14. 如遇到error: failed to get reply to handshake packet 报错,则可将第9步把debugserver启动试设置的监听 *:1234 改成 localhost:1234


    另附上 设备文件结构

  • ./Applications:存放系统默认预装的应用,不包括从App Store下载安装的应用
  • ./Developer:存放与开发调试相关的文件和工具二进制文件,当设备连接Xcode时选择了“Use for Development”才会被创建
  • ./Library:存放系统应用数据、帮助文件、文档等
    • ./Library/Keychains:设备系统级密码等存放目录
    • ./Library/Logs:系统日志存放目录,./var/logs也指向此目录
    • ./Library/Logs/CrashReporter:系统进程崩溃日志目录
  • ./System:只包含一个名为Library的目录,这个子目录中存放了系统的绝大部分组件,如各种framework,内核模块,字体文件等
    • ./System/Library/LaunchDaemon:系统启动进程plist文件存放目录,若想不启动某进程,删除该目录下对应的plist的文件(操作需慎重,删除之前先备份)
    • ./System/Library/Frameworks:公有框架(开发者可使用)存放目录
    • ./System/Library/PrivateFrameworks:私有框架(开发者不可使用)存放目录
    • ./System/Library/CoreServices/SpringBoard.app:桌面管理器应用,用户与系统交互的中介
  • ./User:用户目录,存放用户的个人资料和配置,iOS中实际指向/var/mobile
  • ./bin:“binary”的简称,存放传统Unix命令(用户级基础功能二进制文件)
  • ./boot:存放能使系统成功启动的所有文件,iOS中此目录为空
  • ./cores:内核转储文件存放目录,当一个进程崩溃时,如果系统允许则会产生转储文件
  • ./dev:“device”的简称,存放BSD设备文件。每个文件代表系统的一个块设备或字符设备
  • ./etc:“Et Cetera”的简称,存放系统脚本及配置文件,如passwd、hosts等。iOS/OS X中/etc实际指向./private/etc
  • ./lib:存放系统库文件、内核模块及设备驱动等,iOS中此目录为空
  • ./mnt:“mount”的简称,存放临时文件系统挂载点,iOS中此目录为空
  • ./private:存放/etc、/var,/sustem_data,/xarts四个链接目录的目标目录
  • ./sbin:“system binaries”的简称,存放Unix管理类命令(系统级基础功能的二进制文件),如netstat、reboot、fdisk、ifconfig等
  • ./tmp:存放临时文件目录,其权限为所有人任意读写,在OS X中实际指向./private/tmp
  • ./usr:存放大量工具和程序,第三方程序安装目录,其中./usr/lib中存放了动态链接库
  • ./var:“variable”的简写,存放一些经常更改的文件,如日志、用户数据、临时文件等,iOS/OS X中./var实际指向./private/var。某些文件在./Library./var都存在,比如Keychains数据、系统日志等
    • ./var/wireless/Library/CallHistory:存放通话记录,网络流量,使用时间等记录
    • ./var/mobile/Containers:存放App Store应用相关文件,其中,子目录/Bundle存放应用可执行文件,子目录/Data存放应用数据
    • ./var/mobile/Library/AddressBook:存放联系人数据
    • ./var/mobile/Library/Calendar:存放日历及提醒事项记录文件
    • ./var/mobile/Library/SMS:存放短信
    • ./var/mobile/Library/Safari:存放Safari保存的书签等
    • ./var/mobile/Media/PhotoStreamsData:存放照片流
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,290评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,399评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,021评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,034评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,412评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,651评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,902评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,605评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,339评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,586评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,076评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,400评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,060评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,851评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,685评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,595评论 2 270