iPhoneCake 上提供的砸壳 IPA 只对启动时加载的 Framework 进行了 dump,导致在使用某些功能时可能因为 Framework 未找到而 crash,我给他们提过这个问题和解决方法,但一直都没有解决。

所以每次想在 IPAPatch 上使用最新版 Facebook 时,只能自行进行砸壳:

环境

  • 越狱的 64位 iOS 设备 (iPhone 5s 或以上)
  • Facebook 目前要求 iOS 8 以上

过程

  1. iPhone 在 Cydia 安装 openssh 等常用工具,在 AppStore 安装最新版本 Facebook,并运行一下
  2. 编译 https://github.com/Naituw/dumpdecrypted ,该版本会自动 dump 动态链接库

    1
    $ make
  3. 通过 ssh/scp 将 dumpdecrypted.dylib 文件传输到 iPhone 上

    1
    $ scp dumpdecrypted.dylib root@123.123.123.123:/usr/lib/
  4. 进行砸壳

    1. 定位 Facebook 二进制文件路径

      1
      ps -e | grep Facebook
    2. 注入 dumpdecreypted.dylib 并导出砸壳文件

      1
      2
      3
      4
      # su root
      $ cd /private/var
      $ chmod a+rx /usr/lib/dumpdecrypted.dylib
      $ DYLD_INSERT_LIBRARIES=/usr/lib/dumpdecrypted.dylib /var/containers/Bundle/Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Facebook.app/Facebook
    3. 打包输出文件

      1
      $ zip -r facebook.zip Facebook.decrypted Frameworks/
  5. 将砸壳输出的文件通过 ssh/scp 传输到 Mac 上

    1
    $ scp root@123.123.123.123:/private/var/facebook.zip ~/Downloads/facebook.zip
  6. 解压原始 Facebook ipa 文件,用砸壳文件替换 bundle 内对应文件

    原始 IPA 文件可以通过 Apple Configurator 2 下载: https://emm.how/t/downloading-ipa-file-from-app-store-onto-a-mac/525

  7. 打包 Payload 文件夹生成最终 IPA 文件