一.脱壳原理
当appStore的app载入到内存的时候,是已经脱过壳的二进制数据,所以我们可以把内存中的二进制数据替换掉原始mach-o文件的数据,达到脱壳的目的.
- 注:苹果的加密算法,使得加密前和加密后的数据大小是一致的.
二.使用lldb脱壳抖音
- 抖音的bundleID:
com.ss.iphone.ugc.Aweme
包名:Aweme
- 使用usb连接手机,终端输入
scp -P 2222 root@localhost:/var/containers/Bundle/Application/62C2A04A-A391-4310-877E-E89E4621EF59/Aweme.app/Aweme ~/Desktop
-
otool -l Aweme |grep cry
查看mach-o信息
cryptoff 16384
cryptsize 53739520
cryptid 1
- 打开xcode, debug->attach by name,附加到抖音上
- lldb中
image list -o -f | grep Aweme
拿到偏移量
[ 0] 0x000000000491c000 /var/containers/Bundle/Application/62C2A04A-A391-4310-877E-E89E4621EF59/Aweme.app/Aweme(0x000000010491c000)
memory read --force --outfile ~/Desktop/out.bin --binary --count 53739520 0x0000000100d0c000+0x4000
0x4000 就是otool工具cryptoff 16384的头信息所占的大小
- 终端输入
dd seek=16384 bs=1 conv=notrunc if=./out.bin of=./Aweme
- dd : linux自带的写入工具
- seek : 从哪里开始
- bs : 写入的方式
- conv : 保留没有被替换的数据
- if : 输入文件
- of : 被写入的文件
- 将重写后的mach-o文件拖入到machoview中,将cryptid改为0并保存
修改0x00000为0x000001
- 使用
class-dump
导出头信息,脱壳成功.
网友评论