逆向之路

砸壳

2019-12-22  本文已影响0人  smile丽语

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放到用户所在的文件夹

上一篇 下一篇

猜你喜欢

热点阅读