前言:
为了伟大的装X,最近一直在研究iOS逆向工程,逆向工程可以做到很多事情也可以让你更好的了解iOS底层实现原理,玩别家的应用,么事做个自动抢红包?或者是为自己的应用进行相应的加固。所以脱壳/砸壳都是在iOS逆向开发中的必要工作,因为从AppStore直接下载安装的App是加壳的通俗的说就是加密的,我们无法做后续的各种分析工作,所以先要脱壳进行解密下面我会以微信应用为例子做一个脱壳处理,我会慢慢跟着我的学习线路更新博客和大家一起学习,废话就不多说了,兄弟们请往下看
应用脱壳所需要工具:
工具 | 下载地址 | 平台 |
---|---|---|
Openssh | Cydia | 移动端 |
dumpdecrypted | 下载地址 | Mac |
class-dump | 下载地址 | Mac端 |
Cycript | Cydia | 移动端 |
Openssh安装及使用
- 越狱移动端Cydia应用中搜索Openssh安装即可
dumpdecrypted安装及使用
- cd到dumpdecrypted目录下
- 运行make命令生成“dumpdecrypted.dylib”
class-dump安装及使用
- 前往usr/bin
- 将class-dump 拖到/usr/bin
需要注意:
问题1:class-dump无法拖入/usr/bin目录
原因:Mac当前系统为Mac OS X 10.11 El Capitan,对于Mac OS X 10.11 El Capitan用户,由于系统启用了SIP(System Integrity Protection), 导致root用户也没有权限修改/usr/bin目录。
解决办法:重启Mac,按住command+R,进入recovery模式。选择打开Utilities下的终端,输入:csrutil disable并回车,然后正常重启Mac即可。
问题2:使用class-dump权限问题
解决办法:sudo chmod 777
开始破壳
-
ssh登录移动端
ssh root@XX.XX.XX.XX //默认密码:alpine
-
查看进程
ps -e
-
获取应用进程
-
注入应用进程
cycript -p XXX //XXX:进程ID 1490
-
获取应用沙盒路径
[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]
-
退出ssh登录
logout //退出ssh登录
注意:退出ssh登录之前需要先退出cycript模式 退出方法:control+d
-
上传dumpdecrypted.dylib到目标程序沙盒
scp XXX/dumpdecrypted.dylib root@10.10.242.107:XXX //sap dumpdecrypted.dylib路径 root@10.10.242.107:目标应用沙盒路径
-
上传成功ssh登录移动端cd到沙盒目录进行脱壳
su mobile //防止报错 killed:9 DYLD_INSERT_LIBRARIES=XXX //目标应用进程路径
-
把脱壳后的包导出到Mac端
scp ssh root@172.20.10.4:XXX XXX // XXX:WeChat.decrypted路径 XXX:目标路径
- cd到WeChat.decrypted路径导出.h文件
class-dump -S -s -H WeChat.decrypted -o ./Headers
总结
- 获取进程前移动端先打开应用,最好是杀死所有进程只保留目标应用
- 获取到进程ID,进程路径,沙盒路径 记起来方便使用
- ssh登录首先是和Mac端使用同一网络