前言

上一篇介绍了用dumpdecrypted砸壳方法,觉得超级麻烦有没有?难道没有更方便的操作吗?嘻嘻,我们要感谢这位大佬,同时他也是MonkeyDev的作者,他弄了个工具,让我们可以一键砸壳,执行一个命令,便可以得到ipa包,进而用class-dump导出头文件,是不是很爽?废话不多说,直接进入主题,第三种方式-Frida

准备

  1. 越狱的iPhone

  2. 电脑安装usbmuxd,class-dump,python,wget,pip

    • usbmuxd可通过下面命令安装,前提是你Mac装了Homebrew

      1
      brew install usbmuxd
    • 如果你安装了或者打算装 Monkey Dev 的,就可以不用装 class-dump,因为它里面已经自带了。自己安装 class-dump 可以通过此地址下载,下载后打开,把里面的 class-dump 复制到 /usr/local/bin 路径下,打开终端,执行:

      1
      class-dump

      成功安装好class-dump~
      dumpdecrypted/class-dump命令成功.png)

    • 使用命令安装python

      1
      brew install python

      如果你之前装过python,要把python切换到2.7,因为frida是在2.7环境下运行的。

    • 使用命令安装wget

      1
      brew install wget
    • 使用命令安装pip

      1
      2
      3
      4
      # 先执行
      wget https://bootstrap.pypa.io/get-pip.py
      # 然后再执行
      sudo python get-pip.py

过程

安装Frida

  1. 安装 frida for mac

    终端执行:

    1
    sudo pip install frida

    如果报了个错误含有six报错的,例如

    1
    Uninstalling a distutils installed project (six) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.

    执行下面命令解决(网上好多都是一个 -,其实是两个 -):

    1
    sudo pip install --upgrade frida --ignore-installed six
  2. 配置 frida-ios-dump 环境

    • 执行下面命令下载安装:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      # 创建文件夹
      sudo mkdir /opt/dump
      # 到此目录下
      cd /opt/dump
      # git下载下来
      sudo git clone https://github.com/AloneMonkey/frida-ios-dump
      # 安装
      sudo pip install -r /opt/dump/frida-ios-dump/requirements.txt --upgrade
    • 因为这是和iOS建立连接用的,所以修改 dump.py 的一些ssh参数

      到这个目录(/opt/dump/frida-ios-dump/)下打开dump.py这个文件,修改里面参数:

      1
      2
      3
      4
      User = 'root'
      Password = 'alpine'
      Host = '127.0.0.1'
      Port = 12345
  3. 为了方便输入命令,我们给dump设置别名

    终端输入:

    1
    2
    3
    4
    vim ~/.bash_profile
    # 按e选择编辑,然后再按i,你才能修改内容,在最后添加
    alias dump.py="/opt/dump/frida-ios-dump/dump.py"

    然后按esc键,输入保存命令:

    1
    :wq

    然后我们要使别名生效:

    1
    source ~/.bash_profile

砸壳

  1. 链接手机

    usb插上iPhone,终端输入:

    1
    iproxy 12345 22

    这里切记端口号要和你上面dump.py里面设置的端口号一致

  2. 保持你要砸壳的app在前台,终端执行:

    1
    dump.py -l

    找到你想要砸壳的app,执行:

    1
    dump.py WeChat

    你会看到屏幕会一直在跳动,直到出现

    1
    0.00B [00:00, ?B/s]Generating "微信.ipa"

    砸壳后的ipa包就已经在你运行命令的目录下了,你可以执行ls查看,并且用mv命令移到你想放的地方:

导出头文件

  1. 拿到可执行文件

    从上面砸壳我们已经成功得到砸完壳的ipa包了,右键解压,然后你会发现一个Payload文件夹,右键显示包内容,在里面找到 WeChat 这个文件,把它复制出来放到你喜欢的路径下,这就是微信的可执行文件啦,我们要利用这个文件来导出头文件。

  2. 导出头文件

    用class-dump导出头文件,到终端执行:

    1
    class-dump -H <你放WeChat可执行文件的路径> -o <你打算放导出的头文件的文件夹路径>

    是不是很舒服,用frida,论站在巨人的肩膀能省多少事。

总结

至此,三种方法砸壳&获取头文件演示完毕,个人非常推荐最后这一种方式砸壳,简单快捷,省下来的时间用来分写他们的代码好过。最后希望文章能帮到各位读者,有错欢迎指教,砸壳获取头文件这只是个开始,接下来的逆向之路还很长,笔者继续潜心修炼去了。