image
软件脱壳 -- 顾名思义,就是对软件加壳的逆操作,把软件上存在的壳去掉(解密)。
-
应用加壳(加密)
提交给App Store发布的APP,都经过官方保护加密,这样可以保证机器上运行的应用都是苹果审核过的,也可以管理软件权限。经过App Store加密的应用,我们无法通过Hopper
等反编译工具静态分析,也无法Class-Dump
。
在逆向分析过程中,需要对加密的二进制文件进行解密才可以进行静态分析,这一过程就是大家熟悉的砸壳(脱壳)。
静态砸壳
静态砸壳就是在已经掌握和了解了壳应用
的加密算法和逻辑之后,在不运行壳应用
的前提下将壳应用
程序进行解密处理。静态砸壳的方法难度大,而且加密方法发现应用被破解后可能会改用更加高级和复杂的加密技术。动态砸壳
动态砸壳就是从运行在进程内存空间中的可执行程序镜像(image)
入手,来将内存中的内容进行转储(dump)
处理来实现脱壳处理。这种方法实现起来相对简单,而且不必关心使用的是哪种加密技术。
我们通过下图来大致了解一下iOS应用的运行原理:
image
砸壳工具 frida-iOS-dump
该工具是基于frida
提供的强大功能,通过注入js
实现内存dump
,然后通过python
自动拷贝到电脑生成ipa文件
。
在安装砸壳工具的时候,我也遇到了很多问题。在这里跟大家分享一下。
- pip 的安装
这里我们要检测我们当前的环境中是否有pip
。一般情况下有安装Xcode的话,就会有pip3
(我新下载的Xcode,里面是有的,Python3.8),这个也是可以使用的。注意:pip版本跟Python是要匹配的。
如果没有就要手动安装pip
:
// Python2
$sudo easy_install pip
// Python3
$sudo easy_install pip3
- 安装Frida
安装指令如下:
// 同样的,如果是`pip3`,下面的也要改成`pip3`
$sudo pip install frida-tools
如果安装的过程中遇到问题,其中有这样一段提示:
you may want sudo`s -H flag
那就执行下面两句指令:
// -H: set-home 将HOME变量设为目标用户主目录
$ sudo-H pip install frida-tools
// 如果下面的指令报错,改成'$ sudo pip install frida --upgrade --ignore-installed six'
$ sudo pip install frida –upgrade –ignore-installed six
- 配置iOS-dump
首先向frida-ios-dump
clone下来:frida-ios-dump
image
此时要注意文件夹本身和里面文件的权限问题,因为后面会因为权限问题,失败。之后后面会提到。
下载了frida-ios-dump
之后,进入该文件夹,执行下面的命令:
sudo pip3 install -r requirements.txt -upgrade
上面的指令如果执行不成功的话,将
-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
那就降低
prompt-toolkit
版本
卸载:$ sudo pip uninstall prompt-toolkit
安装指定版本:$ sudo pip install prompt-toolkit==1.0.6
这些都做完之后,我们可以使用一下friba
指令:
image
可以看到当前连接的手机里面的所有进程。
- 手机安装 Frida(注意:使用的是越狱手机)
- 在
Cydia
里面添加源:https://build.frida.re -
安装Frida
image
- 在
接下来就到了重点了!!!
-
砸壳生成IPA包。
- 端口映射
- USB连接
- 使用
dump.py
从内存中,拷贝并生成需要的APP包。指令如下:
/// APP的进程名,可以用`$ frida-ps -U`指令查看 $ ./dump.py <APP进程名>
- 这里可能会遇到问题:
image
这个时候,需要修改一下dump.py
文件,如果使用的Python3
就改成Python3
;如果是Python2
就改成Python2
。修改下面位置内容:
image
修改的时候,如果遇到权限问题,请修改该文件权限。
- 修改完之后,再次执行
$ ./dump.py <APP进程名>
这个时候,还有可出现一个问题:
image
这也是一个权限问题,frida-ios-dump
这个文件夹权限的问题,别人无法去修改这个文件夹;去修改一下文件夹权限,然后再次去执行上面的指令,就可以了。