hooker

iOS逆向与安全8.1:砸壳、初识Theos

2019-06-28  本文已影响0人  looha

砸壳

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

砸壳原理

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

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

应用运行原理

砸壳工具

1、Clutch

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

Clutch使用

安装

使用

完成

2、dumpdecrypted

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

安装

生成动态库 DYLD_INSERT_LIBRARIES脱壳

DYLD_INSERT_LIBRARIES 脱壳得到可行性文件 xxxx.decrypted 文件

DYLD_INSERT_LIBRARIES 使用
查看当前进程

ps -A
image.png

插入进程
DYLD_INSERT_LIBRARIES=动态库文件 进程

DYLD_INSERT_LIBRARIES=xxxx.framework/xxxx /var/mobile/Containers/Bundle/Application/XXXXX.app/XXXMacho
进入执行

3、frida-ios-dump

该工具基于frida提供的强大功能通过注入js实现内存dump然后通过python自动拷贝到电脑生成ipa文件。

安装frida

Mac电脑安装方式:

查看python版本,Mac都是自带的


image.png

查看pip版本


image.png

安装frida $sudo pip install frida-tools


image.png

*目录不归当前用户所有。请检查该目录的权限和所有者.需要sudo的-H标志。
sudo -H 。set-home 将 HOME 变量设为目标用户的主目录
$sudo-H pip install frida-tools

安装完成查看应用

iOS安装方式:
1、添加源 https://build.frida.re

2、安装Frid

image.png
frida -U XXX
frida -U 微信 附加到微信进程

image.png
$ ObjC 
image.png image.png

Mac配置ios-dump
下载脚本
$sudo git clone https://github.com/AloneMonkey/frida-ios-dump
dump.py配置登录

vi dump.py
dump.py配置登录

进入目录安装依赖

$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.
降低 prompt-toolkit 版本
卸载


$ sudo pip uninstall prompt-toolkit

安装指定版本

$ sudo pip install prompt-toolkit==1.0.6

dump.py 砸壳

登录后 dump.py砸壳
./dump.py 应用名或者bundle id

./dump.py 微信

查看砸壳的文件


image.png

配置全局运行环境
复制frida文件到LHShell

编辑脚本

vi dumpIPA.sh 

使用
sh dumpIPA.sh XXX应用

sh  dumpIPA.sh 微信
image.png image.png

4 LLDB砸壳 手动砸壳

otool -l | Wechat | grep cryp

cryptoff 加密开始位置
cryptsize 加密模块
cryptid 1 加密算法 标识
Macho加密信息

原理:Macho header + lldb解密的Macho加密部分,即为完整的解密的Macho文件

memory read --fore --outfile 目标路劲 --binary --count 数量 开始地址+加密开始偏移地址

memory read --fore --outfile ./decrpyted.bin --binary --count 10000  0x0000011323+1230
解密开始
解密完成

完成后,在./目录下,decrpyted.bin文件即为解密后的Macho加密部分文件,


完成目录
dd seek=cryptoff  bs=1 convc=notrunc if=./decrpyted.bin of=./Wechat
写入完成

写入后查看macho文件,依然显示加密


写入完成查看macho文件

此时,实际已经解密了,只是加密标识字段cryptid未变而已,手动改成0即可


image.png

注意:macho文件加密后加密前文件一样大,主要因为内核加载位置和加载大小,所以采用的加密方式不会改变文件大小

Cycript使用

解决
.inputrc 文件登录手机后的不能输入中文的问题,运行向终端输入中文

vi .inputrc

拷贝到手机

scp -p port .inputrc root@127.0.0.1:~

登录手机使用vim
安装Vi IMproved(vim) 和 adv-cmds(命名行支持工具)插件 以及Cycript(使用Cycript)插件

Cycript 使用

登录 ps -A查看进程,然后用cycript -p 附加到应用进程

cycript -p 微信
cycript附加成功

导入cy文件
登录手机后

cd /usr/bin

拷贝cy脚本(封装的cycript命名脚本)到/usr/bin/cycript0.9 目录下


image.png

然后登录手机 cycript附加应用 引入脚本即可


image.png

为了避免命令重复,可以cy脚本放到/usr/bin/cycript0.9.com文件夹下


image.png

Theos

Theos,强大越狱开发工具。最初由DHowett进行开发,后面有Adam Demasi 维护并加了很多全新功能。

官网https://github.com/theos/theos
安装方法https://github.com/theos/theos/wiki/Installation-macOS

安装目录 ~/theos 可以自己修改
echo "export THEOS=~/theos" >> ~/.profile

使用
执行
cd 到Theos安装目录下

$ THEOS/bin/nic.pl 
image.png

配置全局环境变量 配置到PATH中
base_profile中修改


image.png

theos创建项目 写插件

nic.pl

makefile 配置连接ip和端口

makefile 配置连接ip和端口

在xm文件中写插件实现

make编译 写完make编译


image.png

打包make package
安装 make install

或者 make package; make install

总结

011--越狱砸壳

上一篇 下一篇

猜你喜欢

热点阅读