概述

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

iOS逆向系列-脱壳的更多相关文章

  1. iOS逆向系列-逆向APP思路

    界面分析 通过Cycript.Reveal. 对于Reveal安装配置可参考配置iOS逆向系列-Reveal 通过Reveal找到内存中的UI对象 静态分析 开发者编写的所有代码最终编译链接到Mach ...

  2. iOS逆向系列-tweak补充

    tweak加载资源 开发自己的deb插件需要加载自己的资源,比如图片资源.iOS中常用的两种加载图片资源的方式: + (nullable UIImage *)imageNamed:(NSString ...

  3. iOS逆向系列-Mach-O文件

    概述 Mach-O是Mach object的缩写,是Mac\iOS上用于存储程序.库的标准格式. 常见的Mach-O文件 属于Mach-O格式的文件类型有. 可以在xnu源码中,查看到Mach-O格式 ...

  4. iOS逆向系列-Reveal

    概述 Reveal是一款调试iOS程序UI界面的神器. 官网地址:https://revealall.com 下载:https://revealapp.com/download/ 建议下载Reveal ...

  5. iOS逆向系列-Cycript

    概述 Cycript 是Objective-C++.ES(JavaScript).Java等语法的混合物. 可以用来探索.修改.调试正在运行的Mac\iOS App. 通过Cydia安装Cycript ...

  6. iOS逆向系列-动态调试

    Xcode调试App原理 Mac安装了Xcode Xcode的安装包中包含了debugserver 可执行类型的Mach-O文件,iPhone第一次连接Xcode调试会将Xcode中的debugser ...

  7. iOS逆向系列-theos

    概述 theos是GitHub开源的一个项目,通过nic.pl创建tweak项目.通过编写我们注入代码,然后执行编译.打包.安装等操作将代码注入iPhone安装的制定程序. theos环境配置 安装签 ...

  8. 我的iOS开发系列博文

    之前目录性的总结了发表过的关于OC方面的文章,今天在目录性的总结一下有关iOS开发的文章.走过路过不要错过哦,今天的博文也全都是干货.写技术博客与大家交流一下思想也是不错的. 下面是我的技术博客中有关 ...

  9. iOS 逆向之ARM汇编

    最近对iOS逆向工程很感兴趣. 目前iOS逆向的书籍有: <Hacking and Securing IOS Applications>, <iOS Hacker's Handboo ...

随机推荐

  1. 暴力模拟——cf988E

    很简单的题,就是模拟一下 #include<bits/stdc++.h> using namespace std; #define ll long long ll n,a[],len; i ...

  2. 常用Git命令以及出现的状况ing

    (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 我的GitHub: Cwolf9 下面是我学习Git时了解到的一些命令和状况经验. 把它们记下来免得忘了.就算忘了也有地方看... 状 ...

  3. mysql复制以及一主多从等常见集群概述

    1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的 数据复制到其它主机(slaves)上,并 ...

  4. 实战CGLib系列之proxy篇(一):方法拦截MethodInterceptor

    实战CGLib系列文章 本篇介绍通过MethodInterceptor和Enhancer实现一个动态代理. 一.首先说一下JDK中的动态代理: JDK中的动态代理是通过反射类Proxy以及Invoca ...

  5. 剑指offer——27二叉树的镜像

    题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ ...

  6. 2018湘潭大学程序设计竞赛【C】

    题目链接:https://www.nowcoder.com/acm/contest/105/C 题意:给你几个矩形的左上角和右下角的坐标,让你算有几个矩形相交. 题解: 每次都暴力标记一下炸弹区域里的 ...

  7. table 单列宽度设置

    参考:https://blog.csdn.net/lunhui1994_/article/details/81120579 效果: html: <!DOCTYPE html> <ht ...

  8. Navicat Premium_11.2.7 安装及破解,连接Oracle数据库

    下载Navicat Premium_11.2.7简体中文版, 安装 Navicat 11 for Windows 系列原版程序.Navicat | 下载 Navicat 14 天 Windows.Ma ...

  9. Java 基础 - 基本类型和引用类型

    ref: https://www.cnblogs.com/ysocean/p/8482979.html#_label2 ------------------ 这里再给大家普及一个概念,在 Java 中 ...

  10. 那些年,我们见过的 Java 服务端“问题”

    导读 明代著名的心学集大成者王阳明先生在<传习录>中有云: 道无精粗,人之所见有精粗.如这一间房,人初进来,只见一个大规模如此.处久,便柱壁之类,一一看得明白.再久,如柱上有些文藻,细细都 ...