iOS逆向学习笔记17(应用砸壳)

1.什么是应用砸壳

  应用脱壳,顾名思义,就是对软件加壳的逆操作,把软件上存在的壳去掉(解密)。
  提交给Appstore发布的App,都经过官方保护而加密,这样可以保证机器上跑的应用是苹果审核过的,也可以管理软件授权。经过App Store加密的应用,我们无法通过Hopper等反编译静态分析,也无法Class-Dump,在逆向分析过程中需要对加密的二进制文件进行解密才可以进行静态分析,这一过程就是大家熟知的砸壳(脱壳)。
应用砸壳又分为下面两种方式:

  • 静态砸壳:静态砸壳就是在已经掌握和了解到了壳应用的加密算法和逻辑后在不运行壳应用程序的前提下将壳应用程序进行解密处理。静态脱壳的方法难度大,而且加密方发现应用被破解后就可能会改用更加高级和复杂的加密技术。

  • 动态砸壳:动态砸壳就是从运行在进程内存空间中的可执行程序映像(image)入手,来将内存中的内容进行转储(dump)处理来实现脱壳处理。这种方法实现起来相对简单,且不必关心使用的是何种加密技术,我们逆向开发所采用的的就是这种砸壳方式。


    iOS应用运行原理

2.Clutch砸壳工具

2.1 Clutch简介

  Clutch是由KJCracks开发的一款开源砸壳工具。工具支持iPhone、iPod Touch、iPad,该工具需要使用iOS8.0以上的越狱手机应用,这个工具适合对完美越狱的iPhone设备中的应用进行砸壳。
Clutch Git地址

2.2 Clutch使用

进行端口映射


链接ssh服务器


将未砸壳的应用拷贝出来,默认是加密的


将从git官网下载下来的Clutch工程编译运行,将可执行文件拷贝到服务器/var/root中

scp -P 端口号 要拷贝的文件路径 用户名@IP地址:目标路径
//如果是拷贝文件夹中的所有文件,就加上一个-r参数

列出可以砸壳的应用列表


砸壳某个应用


成功之后会在下面的文件中生成相应的ipa包



然后使用scp命令将其从手机服务器中拷贝出来就可以了。

3. dumpdecripted插件砸壳

3.1 dumpdecripted插件简介以及原理演示

  Github开源工具。 dumpdecrypted这个工具就是通过建立一个名为dumpdecrypted.dylib的动态库,插入目标应用实现脱壳,这个也是一个比较老的插件了,在新版iOS设备中使用不了。

创建一个InjectDemo工程,添加一个InjectLibrary的framework,创建文件并编写如下代码:


链接越狱手机编译这个工程,进入到生成InjectLibrary动态库的目录,将这个动态库拷贝到手机中


查看这个文件


执行插入动态库的指令,遇到如下killed:9的信息:

DYLD_INSERTLIBRARIES=动态库名.framework/可执行文件名 进程路径

这是因为在iOS9.1以后的系统中mobile用户才能使用这个环境变量,所有首先切换成mobile用户


插入这个动态库到进程中:


3.2 dumpdecripted使用

进入dumpdecripted git地址主页之后,直接git clone,

通过make编译生成动态库


远程拷贝动态库到手机


切换成mobile用户(moblie没有权限在root目录下写数据),通过DYLD_INSERT_LIBRARIES环境变量插入动态库执行



查看结果我们可知:dumpcripted插件是在当前文件夹生成ipa包。

3. frida-ios-dump砸壳

3.1 frida-ios-dump介绍

  该工具基于frida提供的强大功能通过注入js实现内存dump然后通过python自动拷贝到电脑生成ipa文件,适合现iOS11版本之后的越狱手机使用。

3.2 frida-ios-dump环境安装

3.2.1 查看python3版本号

3

3.2.1 查看pip3版本


如果灭有pip3,可以使用下面的命令安装

sudo easy_install pip3

3.2.2 Mac安装frida

sudo pip3 install frida-tools

如果遇到下面的警告


image.png

需要加上-H参数(将HOME变量设置为目标用户的主目录),如下所示:


3.2.3 手机安装frida

3.2.4 Mac配置ios-dump

下载脚本

sudo git clone https://github.com/AloneMonkey/frida-ios-dump
下载脚本

进入目录安装依赖,执行如下命令

sudo pip3 install -r requirements.txt --upgrade

如下图所示:


image.png

执行完毕之后,就会出现一个dump.py的文件,修改这个文件,修改内容如下:



使用frida查看手机中运行的进程,找到微信进程的名字,如下图所示:


你可以根据这个进程名进入这个进程的调试界面,如下所示:


获取到进程名后,执行这个python脚本就可以了,结束之后就生成了一个脱壳的微信的ipa包了



查看这个ipa包是否加密了


4. SSH配置中文输入

配置文件 密码:me8h
下载这个文件后,我们可以查看其内容:


我们只需要使用scp命令将这个文件拷贝到手机的root目录下就可以输入中文了
拷贝文件到根目录

你可能感兴趣的:(iOS逆向学习笔记17(应用砸壳))