iOS完美脱壳

article/2025/9/17 7:28:04

iOS端IPA脱壳

背景:在软件安全领域中,我们与黑产做对抗时,不是被动防守,自己也可以做攻击方,来验证我方软件是否安全。

关于iOS端逆向分析如:虚拟定位、虚拟设备、修改内存等,始终离不开脱壳。脱壳是第一步,也是必要的一步,下面就说下如何脱壳。

一、什么是加壳

应用在上传App Store时,App Store会对应用进行加壳操作,就是利用加密算法对可执行文件的编码进行改变。经过App Store加密的应用,我们无法通过Hopper等反编译静态分析,也无法进行Class-Dump。

这里就要区分个人、企业不同账号打的安装包。个人账号打的包只能上传到App Store由苹果进行加签认证,在发布到App Store供用户下载。企业账号打的包是由企业密钥加签认证,不能发布到App Store。

有兴趣的可以解压一下IPA,如果解压出来里面没有embedded.mobileprovision文件文件说明是在App Store下载的,如果有embedded.mobileprovision文件文件说明是企业账号打的包。
如图:

在这里插入图片描述

这是因为苹果在加壳的过程中,不会产生embedded.mobileprovision文件。只有非苹果加壳的IPA才会产生embedded.mobileprovision文件。此文件的作用就是我们安装完成后,需要在设置-通用-设备管理(描述文件)里面认证,在App Store下载的则不要要认证。

在这里插入图片描述

二、什么是脱壳

在逆向分析过程中需要对加密的二进制文件进行解密才可以进行静态分析,这个过程就是脱壳。

脱壳出来的ipa文件是不可以安装的,报错:DeviceNoSupportedByThinning。

这个时候就需要二次签名打包才能安装;或者使用三方调试工具(MonkeyDev、yololib等)间接加载程序,达到使用效果。

脱完壳可以干什么?

1、我们知道同一包名(Bundle ID)在手机上只能安装一个,这样苹果手机就不能像Android那样做到多开。但是在IPA脱完壳后可以修改包名(Bundle ID),此时就可以安装相同的App了。

2、逆向分析App,向App注入自己的Framework,动态调试。

三、如何脱壳

摘掉壳程序,将加密的可执行文件还原出来
脱壳有两种方法:硬脱壳、动态脱壳

在这里插入图片描述
硬脱壳:需要知道Apple的私钥解密,要破解苹果加密算法难度还是很大的。

动态脱壳:我们知道在程序启动时系统会将下载的IPA加载到内存,再由壳程序对可执行程序解密,系统才能识别并执行。此时可以通过内存Dump将解密后的可执行程序保存下来。

四、动态脱壳

网上存在很多中脱壳方式,包括Clutchdumpdecryptedfrida-ios-dump等,这里只对frida-ios-dump方式介绍,亲历测试完美脱壳微信,美团等。

此外学会frida方便其他操作,内存修改、动态库注入、动态调试等。

感兴趣的同学可以尝试下其他方式。

五、frida-ios-dump

源码地址:GitHub

下载源码,目录介绍:

1、dump.py主要功能文件,可查询手机安装软件;程序脱壳;

2、requirements.txt需要的所有Python库。

5.1 安装Frida

PC端配置Frida环境

首先保证已安装Python3、pip3,然后执行

sudo pip3 install frida-tools

如果在安装过程中出现错误或异常,可升级下pip

python3 -m pip install --upgrade pip 

越狱手机配置Frida环境

5.1.1 如何越狱

自行下载爱思助手,一键越狱,简单方便。

5.1.2 安装iproxy

使用mac brew工具

brew install iproxy

然后运行iproxy命令,出现help则说明安装成功。

在这里插入图片描述

5.1.3 安装openssh

打开手机上的cydia,搜索OpenSSH,点击安装

在这里插入图片描述

验证:

确保手机与电脑在同一局域网内
ssh root@内网IP
密码:alpine

在这里插入图片描述

5.1.4. 安装frida

打开手机上的cydia,添加软件源,地址: https://build.frida.re
然后搜索:Frida,点击安装

在这里插入图片描述

验证

frida-ps -U

在这里插入图片描述

5.2 安装其他配置

进入刚下载的frida-ios-dump文件目录,执行:

pip3 install -r requirements.txt --upgrade

安装完成,验证

python3 dump.py -l

在这里插入图片描述

5.3 dump前准备

1、打开dump.py,并且修改里面的内容找到里面的这4行,分别输入你自己的用户名,密码,内网IP,端口。

确保手机与电脑在同一局域网内
User = 'root'
Password = 'alpine'
Host = '内网IP'
Port = 22
KeyFileName = None

2、启动要脱壳的APP,保证APP此时运行在内存。

5.4 脱壳

python3 dump.py 应用名或bundle id

在这里插入图片描述

等待1~2分钟(与IPA大小有关),成功以后会在dump.py文件所在目录生成一个ipa包。

使用otool工具查看,此时加壳状态为0

otool 文件 -l | grep crypt

在这里插入图片描述

恭喜你,脱壳完成!!!

六、后续

脱壳只是逆向中的前提,我们首先拿到脱壳的IPA,然后再通过静态或动态注入的方式对程序进行逆向分析、HOOK操作。

后面文章对脱壳后的ipa程序进行重打包。
《iOS重打包之MonkeyDev》
《iOS重打包之脚本替换》


http://chatgpt.dhexx.cn/article/5GuYkLT6.shtml

相关文章

脱壳工具:Youpk的使用详解

一. Youpk概述 Youpk基于ART的主动调用的脱壳机,主要针对dex整体加固和各式各样的dex抽取加固。 目前 Youpk 只支持 pixel 1代。所以必须需要 pixel 1代手机,而且需要刷入对应的系统。 Youpk可以处理大部分的加固,一些企业版的加固也能处理…

使用upx脱壳工具脱壳

使用upx脱壳工具脱壳(攻防世界新手第七题为例simple-unpack) 查壳工具链接:https://www.52pojie.cn/thread-437586-1-1.html 脱壳工具链接:https://github.com/upx/upx/releases 先查壳 一般做到逆向的部分题的时候&#xff0c…

脱壳工具:反射大师的使用详解

一. 反射大师概述 一个脱壳插件工具,需要在 Xposed 环境中使用,支持市面上大多数加密壳。 反射大师简单容易使用,能脱掉大多数壳,很值得使用 二. 下载Xposed和反射大师 Xposed ,一款可以在不修改 Android APK 的情…

逆向工具之脱壳神器反射大师(附脱壳环境搭建、脱壳实战)

相信点击进入这篇博客的小伙伴都知道并且搞过App逆向,不过有时候会遇到各种加壳的App,不让你反编译。但是道高一尺,魔高一丈,有正向加密,就有逆向解密。此篇博客博主带大家搭建脱壳环境,并且手动脱一个加了…

手动脱壳教程

一、什么是壳? 壳是指在一个程序的外面再包裹上另一段代码,保护里面的代码不被非法修改或反编译的的程序。它们一般先于程序运行,拿到控制权,然后完成它们保护软件的任务。 二、壳的加载过程 1、保存程序入口参数 …

简单脱壳教程笔记

文章目录 1、手脱UPX壳简介:脱壳:笔记:方法1:单步跟踪(需要有耐心)一、使用ODE插件二、tools按钮选择LordPE进行脱壳(提前在SETUP PATHS里添加好) 方法2:ESP定律法方法3&…

常用编程语言开发工具

编程语言开发工具可分为文本开发工具 和 集成开发工具。 文本开发工具的特点是 体积小,功能也不弱。 集成开发工具的特点是 体积大,功能强大。 1.文本编辑器 widows 下的 notepad(记事本) Unix下的 vim ,这两个工具系…

开发工具:2022个人开发工具清单

目录 ​编辑 1、谷歌浏览器 2、腾讯文档 3、Notepad 4、IntelliJ IDEA 5、VisualStudio 6、VSCode 7、微信开发者工具 8、Navicat 9、PDManer 10、Git/Tortoise Git 11、Axure 12、NxShell 13、ApiPost 14、Xmind 15、Everything 16、WizTree 17、猿如意 …

开发工具推荐

1.前言 俗话说:“工欲善其事,必先利其器”。 为了助力大家的学习和进阶,本小节介绍几个对 Java 学习非常有帮助的 IDEA 插件,代码反编译和反汇编工具,以及非常不错的网站等。 2. IDEA 插件 首先不必多说&#xff0c…

【高效开发工具系列】开发工具

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

Linux--开发工具

前言: 是不是看见10月24日有种莫名的亲戚,在信息技术行业,由于2101024,所以1GB 1024MB,1MB 1024KB,1KB 1024B。于是1024是程序员们最为敏感的数字,那么今天祝所有铁子们节日快乐!…

开发工具入门

配置SublimeText的编译 工具->编译系统->新建编译系统 修改如下代码到新建文件内,CtrlS保存内容到 “SublimeText安装目录下的\Data\Packages\User” # 配置文档 { "cmd": ["软件名如:php", "$file"], &qu…

开发工具的使用

git git管理你的项目 进入项目----》右键----》git bash here--->输入git init---->该文件夹和子文件夹都会被git管理 写项目.,...... 头部完成 头部完成想形成一个版本号(形成一个版本号目的是后期可以切换回来), 有以下几个步骤 git add . git commit -m …

【开发工具系列】猿创征文|有了这8个开发工具,程序员可以早点下班了

📣📣📣📣📣📣📣 🎍大家好,我是慕枫 🎍前阿里巴巴高级工程师,InfoQ签约作者、阿里云专家博主,一直致力于用大白话讲解技术知识 &#x…

开发工具使用

一、markdown 1、MarkDown语法 Markdown 语法手册 (完整整理版)【Markdown语法】字体颜色大小及文字底色设置 二、IDEA工具 1.1 IDEA相关插件 idea插件下载地址:https://plugins.jetbrains.com/ 开发必装插件: (1…

程序员常用开发工具盘点

优秀的程序员优秀的原因不一定是他敲代码比别人快,但他解决事情的效率一定比别人都要高,往往都会利用工具提升自己的效率,下面给大家分享几个程序员常用的开发工具。 1.浏览器插件FeHelper FeHelper插件支持Chrome、Firefox、MS-Edge浏览器…

15个程序员实用的开发工具,你有用过几个呢?

分享一些日常工作中比较实用的软件和网站,这些网站你平时工作中大概率是会用到的,感觉不错的话可以点赞收藏 1. GitHub Desktop 对于新手来说,要记住那么多git命令可能有点困难,建议新手使用git可视化工具,会方便很多…

13个程序员常用开发工具用途推荐整理

作为一名刚入门的程序员,选择合适的开发工具可以提高工作效率,加快学习进度。在本文中,我将向您推荐10个常用的开发工具,并通过简单的例子和代码来介绍它们的主要用途。 1. Visual Studio Code Visual Studio Code(V…

我常用的15 款开发工具!

上一篇:从零开始搭建公司后台技术栈,这套架构绝了... 作者:爱马仕_人员链接:https://www.jianshu.com/p/4d1a4606ef61 从人工到自动化,从重复到创新,技术演进的历程中,伴随着开发者工具类产品的…

在 Windows 下关闭135/139/445端口的图文方法

135端口主要用于使用RPC(Remote Procedure Call,远程过程调用)协议并提供DCOM(分布式组件对象模型)服务。 端口说明:135端口主要用于使用RPC(Remote Procedure Call,远程过程调用&…