越狱调试

2019-08-04  本文已影响0人  喵喵粉

从内存中dump出IPA包

  1. 砸壳工具:Clutch
  2. 砸壳工具:dumpdecrypted
  3. 砸壳工具:frida-iOS-dump
  4. theos
  5. Reveal
  6. debugserver
  7. 手动砸壳

1. 砸壳工具:Clutch

scp Clutch-2.0.4 root@192.168.2.141:/usr/bin
Clutch 哔哩1/2 哔哩2/2
//拷贝失败的话,可以修改IPA名字先(iFunBox工具)
scp -P 12345 root@localhost:/private/var/mobile/Documents/Dumped/tv.danmaku.bilianime-iOS9.0-(Clutch-2.0.4).ipa ./
导出bili IPA包 查看MachO签名
class-dump -H bili-universal -o biliheaders

2. 砸壳工具:dumpdecrypted

AloneMonkey的改进版dumpdecrypted

make编译生成dumpdecrypted.dylib文件,copy到iPhone

dumpdecrypted.dylib
ps -A | grep renren
renren
5s:~ root# DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/C373317E-85C5-409F-88A5-3DECDE96BDA8/renren.app/PUClient
image.png
5s:~ root# sh dump5s.sh /var/mobile/Containers/Bundle/Application/09567720-35AC-4540-AB78-C906FE131C08/PUClient.app/PUClient

3. 砸壳工具:frida-iOS-dump

非完美越狱可以使用openSSHfrida砸壳
下载文件放置目录/Users/zz/ZZShell

dump.py 端口设置
sudo -H pip install frida-tools
sudo pip install six --upgrade --ignore-installed six
sudo pip install -r /Users/zz/ZZShell/frida-ios-dump/requirements.txt --upgrade

遇到错误❌
File "/Users/zz/ZZShell/frida-iOS-dump/dump.py", line 19, in <module>
import paramiko
ImportError: No module named paramiko

安装paramiko

pip install paramiko
set convert-meta off
set output-meta on
set meta-flag on
set input-meta on

先执行sh usbConnect.sh,映射端口

dump.py 哔哩哔哩
脚本dumpIPA.sh
sh dumpIPA.sh 哔哩哔哩
dumpIPA.sh 砸壳成功

4. theos

存放至/opt/theos

nic.pl
export THEOS=/opt/theos
export PATH=$THEOS/bin:$PATH

#Theos连接手机环境变量
export THEOS_DEVICE_IP=localhost
export THEOS_DEVICE_PORT=12345
nic.pl

案例. 分析界面,点击登录时拿到手机号、验证码

哔哩的登录页面

bilibili
5s:~ root# cycript -p 1073
cy# @import mjcript
{}
cy# MJFrontVc()
#"<BBPhoneNumLoginVC: 0x137353200>"
cy# #0x137353200.view.recursiveDescription() .toString ()
验证登录对象
cy# #0x1396e2730.allTargets()
[NSSet setWithArray:@[#"<BBPhoneNumLoginVC: 0x137353200>"]]]
cy# #0x1396e2730.allControlEvents()
64
cy# [#0x1396e2730 actionsForTarget: #0x137353200 forControlEvent: 64]
@["loginClick:"]

登录的方法是类BBPhoneNumLoginVCloginClick:

loginClick方法声明 2个textfield控件 nic.pl 终端执行nic.pl,生成目录 tweak.x 打包deb插件 安装插件 make 错误 make 错误修正 bilidemo插件 image.png

5. Reveal

scp -P 12345 -r RevealServer.framework root@localhost:/var/root/Library/RHRevealLoader/libReveal.dylib
Reveal RevealServer.framework

6. debugserver

由于使用的5s是9.1系统,需要在xcode包里找到对应的debugserver版本。打开/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/9.1/DeveloperDiskImage.dmg,将usr/bin下的debugserver拷贝到iPhone端/usr/bin目录

映射端口
debugserver *:12346 -a PUClient
debugserver
(lldb) lldb
(lldb) process connect connect://localhost:12346
lldb
(lldb) process interrupt
(lldb) pviews
(lldb) c
image.png

7. 手动砸壳进行class-dump

可以使用scp命令将iPhone的MachO拷贝出来,otool查看cryptid的值
1表示未脱壳的,用class-dump导出头文件会失败
0表示已经砸壳了

由于iPhone运行的时候MachO是解密了的,这里可以从内存中读取解密的数据覆盖原来的MachO对应位置的数据,再修改cryptid0,完成手动砸壳,即可class-dump

列出5s当前运行的进程

ps -e 
 7483 ??         0:06.62 /var/mobile/Containers/Bundle/Application/DB89222B-666A-4D8E-BE7E-441F5BB181CD/PUClient.app/PUClient

拷贝到mac

scp -P 12345 root@localhost:/var/mobile/Containers/Bundle/Application/DB89222B-666A-4D8E-BE7E-441F5BB181CD/PUClient.app/PUClient ./

查看cryptid

otool -l PUClient| grep cr
//
zz  ~/Desktop/demo/Theos/人人Payload  otool -l PUClient| grep cr
      locreloff 0
        nlocrel 0
     cryptoff 16384:加密的数据偏移量
    cryptsize 27099136 :加密的数据大小
      cryptid 1
scp拷贝MachO
5s:~ root# debugserver *:12346 -a PUClient
开启debugserver

Mac端进入lldbprocess附加到PUClient进程

zz  ~  lldb
(lldb) process connect connect://localhost:12346
process

image list读取MachO的内存地址0x000000010008c000

image list

memory读取解密数据,需要用process interrupt'断住进程,否则报错:error: Process is running. Use 'process interrupt' to pause execution.

(lldb) process interrupt
(lldb) memory read --force --outfile decrypted.bin --binary --count 27099136 0x000000010008c000+16384
memory read
// seek:偏移 
// bs:每次1个byte 
// conv:文件没有替换的部分不要截断
// if/of:输入输出文件
dd seek=16384 bs=1 conv=notrunc if=decrypted.bin of=PUClient
seek比较耗时 image.png
class-dump -H PUClient -o PUClientHeaders
上一篇下一篇

猜你喜欢

热点阅读