八、加壳脱壳

从之前的知识可知,通过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脱壳工具有哪些?

image.png


如何验证可执行文件是否已经脱壳?

方法一:—— 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 可执行文件路径

如何使用
使用过程中可能会遇到的问题
实操1

执行完命令后,脱壳的.decrypted文件就在/var/root路径下,复制到Mac,pinduoduo.decrypted改名为pinduoduo_decrypted。

对比脱壳前后的信息:

实操2:脱壳成功
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容