概述

通过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后缀名去掉。

最新文章

  1. JS作用域及call
  2. centos6升级python2.7
  3. git代码库误操作还原记录
  4. python AES 双向对称加密解密
  5. JDK中常见的package
  6. Differential Geometry之第三章曲面的局部理论
  7. .NET操作JSON
  8. VS2010与QT的集成开发环境
  9. 『重构--改善既有代码的设计』读书笔记----Introduce Foreign Method
  10. 微信企业号 出现redirect_uri unauthorized 50001 解决办法
  11. CentOS 通过yum安装web环境
  12. vue-router.esm.js:1905 TypeError: Cannot convert undefined or null to object
  13. poj 3080 Blue Jeans (暴力枚举子串+kmp)
  14. 小程序升级实时音视频录制及播放能力,开放 Wi-Fi、NFC(HCE) 等硬件连接功能
  15. [UE4]结构体
  16. KubeletNotReady runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
  17. node模块加载机制。
  18. Java编程思想学习笔记——接口
  19. Codeforces Round #426 (Div. 2)A B C题+赛后小结
  20. Zeal - 开源离线开发文档浏览器

热门文章

  1. thinkphp 标签扩展
  2. 38 ubuntu/windows双系统安装
  3. 双目立体匹配经典算法之Semi-Global Matching(SGM)概述:视差计算、视差优化
  4. dajian
  5. Funcation:Object
  6. JavaScript笔记 - Object对象特性的应用
  7. KEIL, MDK 关于C99结构体变量初始化
  8. 剑指offer——18打印从1到最大的n位数
  9. Mybatis 使用的 9 种设计模式,真是太有用了~
  10. jmeter接口测试(基础)