iOS应用砸壳

概述

软件脱壳,顾名思义,就是对软件加壳的逆操作,把软件上存在的壳去掉(解密)。

砸壳原理

  • 应用加壳(加密)
    提交给Appstore发布的App,都经过官方保护而加密,这样可以保证机器上跑的应用是苹果审核过的,也可以管理软件授权。经过App Store加密的应用,我们无法通过Hopper等反编译静态分析,也无法Class-Dump,在逆向分析过程中需要对加密的二进制文件进行解密才可以进行静态分析,这一过程就是大家熟知的砸壳(脱壳)
  • 应用砸壳(解密)
    • 静态砸壳
      静态砸壳就是在已经掌握和了解到了壳应用的加密算法和逻辑后在不运行壳应用程序的前提下将壳应用程序进行解密处理。静态脱壳的方法难度大,而且加密方发现应用被破解后就可能会改用更加高级和复杂的加密技术
    • 动态砸壳
      动态砸壳就是从运行在进程内存空间中的可执行程序映像(image)入手,来将内存中的内容进行转储(dump)处理来实现脱壳处理。这种方法实现起来相对简单,且不必关心使用的是何种加密技术。

iOS应用运行原理

iOS应用砸壳_第1张图片
iOS应用运行原理

砸壳方式

砸壳有多种方法,可以用多种途径实现。比如Clutchdumpdecryptedfrida-ios-dump手动砸壳等等

利用Clutch砸壳

Clutch是由KJCracks开发的一款开源砸壳工具。工具支持iPhone、iPod Touch、iPad,该工具需要使用iOS8.0以上的越狱手机应用。
Clutch安装

  • 可以在 这里下载Clutch
  • 找到发布版本
    release
  • 下载最新版本
    iOS应用砸壳_第2张图片
    最新版本

    Clutch使用
  • 映射端口
sh usbConnect.sh
  • 拷贝工具到手机/usr/bin目录下
scp -P 1234 Clutch-2.0.4 root@localhost:/usr/bin
  • openssh连接手机查看/usr/bin目录是否存在,改名为‘ Clutch’


    /usr/bin目录下Clutch
  • 列出可以砸壳的应用列表 $Clutch -i

Clutch -I

iOS应用砸壳_第3张图片
可以砸壳的应用列表
  • 砸壳 $Clutch –d 应用ID或bundleID
Clutch –d 2

砸壳后的ipa保存在var/mobile/Documents/Dumped/目录下,可以把它拷贝到电脑上使用。

dumpdecrypted

Github开源工具。 dumpdecrypted这个工具就是通过建立一个名为dumpdecrypted.dylib的动态库,插入目标应用实现脱壳。


  • 官网 :https://github.com/stefanesser/dumpdecrypted 直接Git Clone

  • 通过Make命令 编译生成动态库

  • 远程拷贝到手机

  • 通过DYLD_INSERT_LIBRARIES 环境变量插入动态库执行

dumpdecrypted.dylib使用可能会遇到的问题

如果你的手机是非完美越狱可能会遇到一些问题比如kill 9
可按照以下方法解决:

  1. 将dumpdecrypted.dylib复制到/ usr / lib中。确保它具有适当的权限,以便用户移动设备可以读取和执行它

-rwxr-xr-x

  1. 将用户更改为手机:
su mobile
  1. 将目录更改为移动设备可以写入的位置:
cd / var / mobile / Documents
  1. 使用绝对路径执行命令:
DYLD_INSERT_LIBRARIES = / usr / lib / dumpdecrypted.dylib /var/containers/Bundle/Application/59CEB222-4C4D-4A34-BC0F-8D38B9E3853D/MyApp.app/MyApp
  1. 然后,您将在当前目录中拥有MyApp.decrypted文件

获得的.decrypted文件便是解密后的MachO文件

frida-ios-dump

该工具基于frida提供的强大功能通过注入js实现内存dump然后通过python自动拷贝到电脑生成ipa文件。
准备
使用frida-ios-dump必须是电脑上已安装pythonpip,frida作者建议python版本是python3

安装
安装frida

 $sudo pip install frida-tools

可能会遇到警告

警告

意思是:目录不归当前用户所有。请检查该目录的权限和所有者.需要sudo的-H标志
可以使用 sudo -H 。set-home 将 HOME 变量设为目标用户的主目录

sudo-H pip install frida-tools

可能又会报错误Uninstalling a distutils installed project (six)
使用命令

sudo pip install frida-tools –-upgrade –-ignore-installed six

即可。
iOS端安装frida

然后在iOS端也需要安装frida
1、添加源 https://build.frida.re
2、安装Frida
Mac配置ios-dump

  • 下载脚本
$sudo git clone https://github.com/AloneMonkey/frida-ios-dump
  • 进入目录安装依赖
$sudo pip install -r /opt/dump/frida-ios-dump/requirements.txt –upgrade

有可能报错:

frida-tools 1.2.2 has requirement prompt-toolkit<2.0.0,>=0.57, but you'll have prompt-toolkit 2.0.7 which is incompatible.
解决方案1 降低 prompt-toolkit 版本
卸载

$sudo pip uninstall prompt-toolkit

安装指定版本

$sudo pip install prompt-toolkit==1.0.6

继续执行

$sudo pip install -r /opt/dump/frida-ios-dump/requirements.txt –upgrade

若不生效用方案2
解决方案1 降低 prompt-toolkit 版本后修改requirements.txt文件
安装上面的方法安装低版本的prompt-toolkit后,删除requirements.txt文件中的prompt-toolkit字段。这样就不会在后续操作中prompt-toolkit就不会又被升级
然后继续执行

$sudo pip install -r /opt/dump/frida-ios-dump/requirements.txt –upgrade

OK。
然后映射端口
cd到frida-ios-dump目录通过命令砸壳

./dump.py 微信

砸壳后的ipa保存在当前目录下

你可能感兴趣的:(iOS应用砸壳)