0. 扫盲
0.1 加壳
利用特殊的算法,对可执行文件的编码进行改变(比如压缩、加密),以达到保护程序代码的目的。
0.2 砸壳
摘掉壳程序,将未加密的可执行文件还原出来(有些人也称为“砸壳”)
0.3 砸壳方法
-> 硬脱壳:直接对已加密的可执行文件进行解密,iOS中,大多采用硬脱壳
-> 动态脱壳:从内存中提取可执行文件
0.4 砸壳工具
-> Clutch:https://github.com/KJCracks/Clutch/releases
-> dumpdecrypted:https://github.com/stefanesser/dumpdecrypted/
-> 不常用:AppCrackr、Crackulous
0.5 判断app是否砸壳
-> 查看Load Commands -> LC_ENCRYPTION_INFO -> Crypt ID的值,0代表未加密
-> 通过otool命令行也可以:otool -l 可执行文件路径 | grep crypt
1. Clutch
1.1 准备
—> 下载完成后,将Clutch拷贝到手机中的“/usr/bin”目录
—> 出现如下错误时,需要赋予“可执行的权限”
zl:~ root# Clutch
-sh: /usr/bin/Clutch: Permission denied
zl:~ root# chmod +x /usr/bin/Clutch
1.2 使用
// 列出已安装的,可砸壳的文件(未砸壳)
Clutch -I
// 砸壳:生成的文件在“/private/var/mobile/Documents/Dumped/”下
Clutch -d APP序号或BundleId
2. dumpdecrypted(iOS 10 以上)
2.1 准备
->1. 编译
->2. 拷贝文件到iPhone:建议放到用户目录下(如:root用户就放在”/var/root")
2.2 使用
->1. iOS 9
// 砸壳:ting.decrypted为砸壳结果
zl:~ root# DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/C5159624-4F84-417A-A399-42DB1127AD0A/ting.app/ting
->2. iOS 10
// DYLD_INSERT_LIBRARIES=进程目录 安装目录
// 需要拷贝“dumpdecrypted.dylib”到目标app的Document目录
// MyTSEMusicPlayer.decrypted为砸壳结果
zlde-iPhone:~ root# cd /var/mobile/Containers/Data/Application/83C9607D-84E1-45F7-B12C-A2E55B425445/Documents/
zlde-iPhone:/var/mobile/Containers/Data/Application/83C9607D-84E1-45F7-B12C-A2E55B425445/Documents root# su mobile
zlde-iPhone:~/Containers/Data/Application/83C9607D-84E1-45F7-B12C-A2E55B425445/Documents mobile$ DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/containers/Bundle/Application/859CAA86-7627-4671-8D5B-AFD957550881/MyTSEMusicPlayer.app/MyTSEMusicPlayer
2.3 错误解决
错误:
原因:对dylib所在的文件夹权限不够
解决方案:将dylib放到用户所在的文件夹
网友评论