美文网首页
iOS逆向实操笔记4-app脱壳

iOS逆向实操笔记4-app脱壳

作者: 水煮杰尼龟 | 来源:发表于2020-12-25 07:58 被阅读0次
    发布到appstoreapp是经过苹果做了加壳处理的,即做了加密处理的。

    这样我们通过appstore下载的app,是无法导出头文件,或者反编译分析的。
    所以需要对app进行脱壳处理。
    我这里采取了常规的2种方式(Clutchdumpdecrypted

    1. Clutch
    • 这里下载最新的release版本
      image.png
    • 重命名去掉后缀,把它放到手机的/usr/bin目录。通过命令chmod +x /usr/bin/Clutch增加权限
      image.png
    • Clutch -i展示安装的app,Clutch -d 进程即开始脱壳。
      image.png
      image.png
      image.png
    • 脱壳完成,.ipa地址也给了
      image.png
      这样可以导出头文件,查看反编译代码了
      不过Clutch对于带AppExtentionapp会脱壳失败,而目前的主流app,大部分都带AppExtention,所以我多数采用dumpdecrypted 脱壳
    2. dumpdecrypted
    • 去下载dumpdecrypted,在目录下,通过make指令 生成dylib库。
    • 将生成的dylib库 拷贝到手机目录/var/root
      image.png
    • 启动某个app,通过ps -A查看app路径
    • 通过DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib app路径命令进行脱壳
      image.png
      image.png
    • 如上2图,则成功了。
    这里可能会遇到的问题
    image.png
    上图的解决办法:需要重新给dumpdecrypted库签一下名
    • security find-identity -v -p codesigning 查看电脑可用证书
    • codesign --force --verify --verbose --sign "iPhone Developer: xxx xxxx (xxxxxxxxxx)" dumpdecrypted.dylib 通过codesign重签名 即可
    其他错误
    • 还可能出现dyld: Symbol not found: ___chkstk_darwin Referenced from: dumpdecrypted.dylib Expected in: /usr/lib/libSystem.B.dylib in dumpdecrypted.dylib错误

    • 原因是Xcode 版本与越狱手机版本不匹配导致(我使用的越狱手机版本是iOS 10.3.3、本机的Xcode版本是Xcode 11)。
      所以我下载了一个老版本的Xcode10。然后打开终端执行如下命令sudo xcode-select -s Xcode10路径
      然后在dumpdecrypted 文件夹重新make,生成dumpdecrypted.dylib
      最后可以切换回原来的Xcode了,sudo xcode-select -s /Applications/Xcode.app
      接下来就可以正常脱壳了

    PS:判断app是否脱壳
    1. 通过MachOView
    • 通过这个软件打开可执行文件,查看Load Commands 中的LC_ENCRYPTION_INFO_64,如果是armv7,则看LC_ENCRYPTION_INFO,里面有一个Crypt ID1就是未脱壳,0表示已脱壳,例如下图
      image.png
    1. 通过命令行 (更方便)
    • otool -l xxxxx | grep crypt
      image.png

    相关文章

      网友评论

          本文标题:iOS逆向实操笔记4-app脱壳

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