从之前的知识可知,通过class-dump或hopper就可以知道一个app的头文件信息。
加壳的app:
但如果是从《Appstore》上下载的,这class-dump或hopper两个工具都解析不出来,因为加了壳。
不加壳的app:
如果是从1、《pp助手》《Cydia》上下载的,2、XCode打包安装的,都是脱了壳的。
不加壳的app验证:从《pp助手》上下载的app导出Mach-O,可以dump出头文件
以『喜马拉雅』为例,从《pp助手》上下载好。
先确定在手机上的哪个位置?
1、连接登录手机;2、打开该app,ps -A
,找到该app进程名称即可知道路径
导出到Mac,用class-dump或hopper查看头文件
image.png加壳的app验证:从Appstore上下载《拼多多》
从手机中导出拼多多的Mach-O文件
导出拼多多Mach-O 导出头文件可以发现,并没有把头文件导出来,这是因为Appstore上的app加了壳。
苹果对上架的app做了加壳操作能否直接class-dump出头文件,就看是从哪里下载的,是否已经脱壳
自己来脱壳
1、先了解下加壳原理
已加密的可执行文件是无法运行的,壳程序会对已加密的可执行文件解密还原成无加密的可执行文件,这样可执行文件就可以运行了。
2、了解下脱壳原理
常用的iOS脱壳工具有哪些?
- Clutch:https://github.com/KJCracks/Clutch
- dumpdecrypted:https://github.com/stefanesser/dumpdecrypted/
- AppCrackr、Crackulous已经过时了
如何验证可执行文件是否已经脱壳?
方法一:—— LC_ENCYPTION_INFO
查看Load Commands -> LC_ENCRYPTION_INFO -> Crypt ID的值,0代表未加密,非0表示加了密。
MachOView工具方法二:
通过otool命令行也可以:otool -l 可执行文件路径 | grep crypt
脱壳工具01-Clutch
安装Clutch 使用Clutch脱壳工具02-dumpdecrypted
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib 可执行文件路径
执行完命令后,脱壳的.decrypted文件就在/var/root路径下,复制到Mac,pinduoduo.decrypted改名为pinduoduo_decrypted。
对比脱壳前后的信息:
实操2:脱壳成功
网友评论