美文网首页
越狱调试

越狱调试

作者: 喵喵粉 | 来源:发表于2019-08-04 18:45 被阅读0次

    从内存中dump出IPA包

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

    1. 砸壳工具:Clutch

    • 将Clutch-2.0.4拷贝到iPhone
    scp Clutch-2.0.4 root@192.168.2.141:/usr/bin
    
    • Clutch-2.0.4 -i 查看可以砸壳的APP
    Clutch
    • Clutch-2.0.4 -d 4 哔哩哔哩APP砸壳
    哔哩1/2 哔哩2/2
    • 砸壳OK,将IPA包拷贝到Mac, scp命令在Mac目录下执行
    //拷贝失败的话,可以修改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签名
    查看MachO签名
    • 砸壳的MachO可以dump出头文件
    class-dump -H bili-universal -o biliheaders
    

    2. 砸壳工具:dumpdecrypted

    AloneMonkey的改进版dumpdecrypted

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

    dumpdecrypted.dylib
    • 查看APP renren的进程信息,iPhone终端执行
    ps -A | grep renren
    
    renren
    • 通过DYLD_INSERT_LIBRARIES 环境变量插入动态库进行砸壳,生成PUClient.decrypted文件,去掉后缀是MachO文件
    5s:~ root# DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/C373317E-85C5-409F-88A5-3DECDE96BDA8/renren.app/PUClient
    
    image.png
    • 将砸壳写成sh脚本,+x权限
      dump5s.sh: DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib $1
    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 端口设置
    • 安装 frida
    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
    
    • 允许终端输入中文需要在iPhone家目录新建.inputrc文件,添加下面4行代码
    set convert-meta off
    set output-meta on
    set meta-flag on
    set input-meta on
    
    • 用dump.py砸壳生成IPA包

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

    dump.py 哔哩哔哩
    
    • 可以将砸壳写成脚本dumpIPA.sh
      /Users/zz/ZZShell/frida-iOS-dump/dump.py $1
    脚本dumpIPA.sh
    • 脚本砸壳
      先执行sh usbConnect.sh,映射端口
    sh dumpIPA.sh 哔哩哔哩
    
    dumpIPA.sh 砸壳成功

    4. theos

    存放至/opt/theos

    nic.pl
    • 配置环境变量.zshrc文件
    export THEOS=/opt/theos
    export PATH=$THEOS/bin:$PATH
    
    #Theos连接手机环境变量
    export THEOS_DEVICE_IP=localhost
    export THEOS_DEVICE_PORT=12345
    
    • 使用theos
    nic.pl

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

    哔哩的登录页面

    bilibili
    • cycript附加进程,找到验证登录按钮
    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:

    • 使用Clutch-2.0.4砸壳拿到MachO文件,class-dump出头文件
    loginClick方法声明
    • 找到手机号、验证码的控件
    2个textfield控件
    • 编写插件
      终端执行nic.pl,生成文件目录
    nic.pl 终端执行nic.pl,生成目录
    • 使用logos语法hookBBPhoneNumLoginVCloginClick:方法
    tweak.x
    • make编译 -> make package打包生成deb插件->make install安装插件,手机kill掉哔哩进程
    打包deb插件 安装插件
    • make编译出错,将Tweak.x后缀修改为xm
    make 错误 make 错误修正
    • iPhone打开cydia可以看到安装了bilidemo这个插件了
    bilidemo插件
    • 打开哔哩验证登录,在控制台可以看到输出了手机号、验证码
    image.png

    5. Reveal

    • iPhone新建文件夹/var/root/Library/RHRevealLoader
    • RevealRevealServer.framework/RevealServer重命名libReveal.dylib,拷贝到iPhone的RHRevealLoader
    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目录

    • 修改脚本,添加12346端口映射
    映射端口
    • 5s开启debugserver附加到进程,提供端口12346
    debugserver *:12346 -a PUClient
    
    debugserver
    • 启动lldb
    (lldb) lldb
    (lldb) process connect connect://localhost:12346
    
    lldb
    • 断住程序,执行lldbs命令
    (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

    • scp拷贝MachO

    列出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开启debugserver
    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
    • 将读取的数据覆盖到MachO的对应位置
    // seek:偏移 
    // bs:每次1个byte 
    // conv:文件没有替换的部分不要截断
    // if/of:输入输出文件
    dd seek=16384 bs=1 conv=notrunc if=decrypted.bin of=PUClient
    
    seek比较耗时
    • MachOView修改cryptid为0
    image.png
    • class-dump导出头文件
    class-dump -H PUClient -o PUClientHeaders
    

    相关文章

      网友评论

          本文标题:越狱调试

          本文链接:https://www.haomeiwen.com/subject/bwiydctx.html