dumpdecrypted砸壳高版本iOS(如iOS12)的正确姿势
目录
引言
几年前用dumpdecrypted砸过iOS10系统中应用的壳,最近又有砸壳的需求,不过是iOS12系统。于是完全按照当年在iOS10中的砸壳步骤在iOS12中砸壳,遇到了种种错误。求助于百度和谷歌,用关键字"dumpdecrypted iOS12"搜索,得到的结论全部是dumpdecrypted在iOS12及其更高版本的iOS系统中不行了,然后就介绍其他的砸壳工具,如CrackerXI 。
本人试了一下CrackerXI砸壳确实简单易用,但dumpdecrypted为什么不行却没有找到答案,而且由于dumpdecrypted的砸壳原理是注入动态库dylib进目标进程来dump相关解密数据,难道意味着在高版本的iOS中,也无法注入dylib做点其他事情了吗? 本着探索的精神在经过多次研究实验后,最后成功用dumpdecrypted砸出iOS12.1应用的壳。由于网上并没有看到dumpdecrypted砸高版本iOS系统中应用的壳的文章,故花点时间写个分享献给有需要的人。
dumpdecrypted砸壳高版本iOS过程
砸壳系统环境介绍
类别
值
电脑系统
macOS Catalina 版本10.15.6(19G20201)
手机环境系统
iphone 6 Plus 版本12.1.2(16C101) 已越狱并通过Cydia安装cycript、OpenSSH
Xcode版本
Xcode 12.1 对应的iOS SDKs版本号iOS 14.2
dumpdecrypted在高iOS系统中砸壳的正确步骤
(1) 源码下载:从如下地址下载源码 bceK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6K6N6r3g2X3j5h3&6W2M7%4y4W2M7W2)9J5c8X3c8#2L8i4m8V1k6h3y4J5P5i4m8@1k6h3b7`.
(2) 修改Makefile文件:
GCC_UNIVERSAL=$(GCC_BASE) -arch armv7 -arch armv7s -arch arm64
改成 GCC_UNIVERSAL=$(GCC_BASE) -arch arm64
CFLAGS =
改成CFLAGS = -target arm64-apple-ios12.1
(3) 直接make编译生成dumpdecrypted.dylib
输出如下所示:
1
2
3
4
jay@MacBook
-
Pro dumpdecrypted
%
make
`xcrun
-
-
sdk iphoneos
-
-
find gcc`
-
Os
-
target arm64
-
apple
-
ios12.
1
-
Wimplicit
-
isysroot `xcrun
-
-
sdk iphoneos
-
-
show
-
sdk
-
path`
-
F`xcrun
-
-
sdk iphoneos
-
-
show
-
sdk
-
path`
/
System
/
Library
/
Frameworks
-
F`xcrun
-
-
sdk iphoneos
-
-
show
-
sdk
-
path`
/
System
/
Library
/
PrivateFrameworks
-
arch arm64
-
c
-
o dumpdecrypted.o dumpdecrypted.c
`xcrun
-
-
sdk iphoneos
-
-
find gcc`
-
Os
-
target arm64
-
apple
-
ios12.
1
-
Wimplicit
-
isysroot `xcrun
-
-
sdk iphoneos
-
-
show
-
sdk
-
path`
-
F`xcrun
-
-
sdk iphoneos
-
-
show
-
sdk
-
path`
/
System
/
Library
/
Frameworks
-
F`xcrun
-
-
sdk iphoneos
-
-
show
-
sdk
-
path`
/
System
/
Library
/
PrivateFrameworks
-
arch arm64
-
dynamiclib
-
o dumpdecrypted.dylib dumpdecrypted.o
ld: warning: directory
not
found
for
option
'-F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.2.sdk/System/Library/PrivateFrameworks'
(4) 用codesign和个人调试证书给dumpdecrypted.dylib签名:
security find-identity -v -p codesigning
查找可用的证书,然后用找到的证书签名
codesign --force --verify --verbose --sign "找到的可用证书名称" dumpdecrypted.dylib
本机输出如下所示:
1
2
3
4
5
6
jay@MacBook
-
Pro dumpdecrypted
%
security find
-
identity
-
v
-
p codesigning
1
)
3A1B91863D16D2B252A346CDB242AF451A73DEA1
"Apple Development: xx@qq.com (UN84ST6FLY)"
1
valid identities found
jay@MacBook
-
Pro dumpdecrypted
%
codesign
-
-
force
-
-
verify
-
-
verbose
-
-
sign
"Apple Development: xx@qq.com (UN84ST6FLY)"
dumpdecrypted.dylib
dumpdecrypted.dylib: signed Mach
-
O thin (arm64) [dumpdecrypted]
jay@MacBook
-
Pro dumpdecrypted
%
(5)签过名的dumpdecrypted.dylib上传iphone手机的/usr/lib/目录:scp -r dumpdecrypted.dylib root@10.0.52.63:/usr/lib/
(6)iphone运行要脱壳的应用,ssh root@10.0.52.63 连上手机,用ps -e | [grep -i xxx]
查看进程id和进程名
(7)cycript注入进程查看应用对应的Documents目录:
cycript -p 进程id值pid 注入进程 (待机等状态有时会导致注入卡主,可以iphone上随便动一下应用)
URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]
本机输出如下所示:
1
2
3
4
5
6
shangshuhede
-
iPhone:~ root
12255
??
0
:
04.09
/
var
/
containers
/
Bundle
/
Application
/
35992D04
-
EB51
-
4A84
-
8F95
-
D9495004933E
/
YYReader.app
/
YYReader
12484
ttys002
0
:
00.01
grep
-
i reader
shangshuhede
-
iPhone:~ root
cy
PS: 如果不确定进程是否正确,可以cycript中运行:[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"];
查看应用名称,输出16进制字符串,将16进制字符串直接放到python里print("\xaa\xbb"')一下即可输出中文。
(8)cd到应用的Documents目录下,su mobile
切换到mobile账户下,然后用如下命令开始砸壳
DYLD_INSERT_LIBRARIES=/usr/lib/dumpdecrypted.dylib 进程名
[招生]科锐逆向工程师培训(2025年3月11日实地,远程教学同时开班, 第52期)!
最后于 2020-12-1 18:08
被cjycjw编辑
,原因: