• iOS逆向系列-脱壳


    概述

    通过iOS逆向系列-逆向App中使用class-dump工具导出App的Mach-O文件所有头文件、Hopper工具分析App的Mach-O文件代码大概实现。但是这些前体是App的Mach-O没有被加壳的。通过pp助手下载安装的App都是经过脱壳的如果我们从Appstore下载安装的App都是苹果加壳的。
    加壳就是利用特殊的算法,对可执行文件的编码进行改变(比如压缩、加密),以达到保护程序代码的目的。
    我们编写的程序的Mach-O文件上传到苹果后台,苹果会对我们的程序的Mach-O文件进行做加密处理并且外部添加一个壳程序。
    机加载App时外部的课程序会对加密的应用的Mach-O文件进行解密,然后执行。

    判断程序是否加壳

    • 通过otool命令:otool -l 可执行文件 | grep crypt

    • 查看Load Commands -> LC_ENCRYPTION_INFO-> Crypt ID的值,0代表未加密

    脱壳方式

    "脱壳"就是摘掉壳程序,将未加密的可执行文件还原出来(有些人也称为“砸壳”)。
    脱壳主要有2种方法:硬脱壳动态脱壳
    动态脱壳的原理:是当程序加载进内从外部的壳程序会对加密的执行文件解密,这个时候我们从内从导出这个解密的执行文件。这个比较复杂,我们下面介绍通过硬脱壳的方式。
    硬脱壳就的原理:是直接就是通过解密算法进行解密。

    iOS中有很多的脱壳工具AppCrackr、Crackulous都已经过时了,下面我们使用最新的常用脱壳工具Clutchdumpdecrypted

    Clutch方式脱壳

    • 下载最新的ClutchRelase版本:https://github.com/KJCracks/Clutch/releases
    • 将下载下来的Clutch的文件名版本号去掉。将Clutch拷贝到IPhone的/usr/bin/目录下。可以行命令拷贝scp -P 端口 Clutch文件路径 root@localhost:/usr/bin/Clutch。
    • 最好在IPhone上给Clutch添加权限 chmod +x /usr/bin/Clutch
    • 列出手机当前安装的需要脱壳的应用
    • 输入APP序号或者Bundle Id进行脱壳操作:Clutch -d APP序号或BundleId

    dumpdecrypted方式脱壳

    • GitHub下载dumpdecrypted源码。然后在源代码目录执行make指令进行编译,获得dylib动态库文件
    • 将dylib文件拷贝到iPhone上(如果是root用户,建议放/var/root目录
    • 使用环境变量DYLD_INSERT_LIBRARIESdylib注入到需要脱壳的可执行文件(可执行文件路径可以通过ps -A查看获取)
      DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib  可执行文件路径

    生成的脱壳的可执行文件在dumpdecrypted.dylib所在的目录下,也就是/var/root

    可将生成脱壳的.decrypted后缀名去掉。

  • 相关阅读:
    常见正则总结
    word 操作教程
    word调整技巧
    关于如何自定义handler
    html 处理
    iis 导入和导出配置——iis管理
    前端学习
    动态添加js的方法
    jquery学习笔记
    php学习笔记
  • 原文地址:https://www.cnblogs.com/CoderHong/p/8953521.html
Copyright © 2020-2023  润新知