当前位置:网站首页>04-加壳和脱壳
04-加壳和脱壳
2022-07-30 05:48:00 【大黄_黄】
何为加壳?
如前面所介绍的,拿到一个App的ipa包可以通过class-dump、 Hopper Disassembler等工具进行分析,然而当我们利用这些分析手机里从App Store下载的App安装包时,会发现都是一些经过加密的文件,无法进行分析
这是因为App Store对我们上传的App进行了加壳操作,那么何为加壳呢?其实是利用特殊的算法,对可执行文件的编码进行改变(比如压缩、加密),以达到保护程序代码的目的
- 加壳前,App可执行文件中的代码会被装载到内存中
- 加壳后,App可执行文件进行加密,其外部会包一层壳程序。由于壳程序本身也是Mach-O文件,程序执行时,就会将壳程序装载到内存中。紧接着壳程序会使用解密算法对App可执行文件进行解密操作,解密完成之后就会去执行文件,将代码装载进内存中

如何判断App可执行文件是否加壳?
想要判断App可执行文件是否加壳,主要是通过Crypt ID(App可执行文件加密类型)是否为0判断,如果为0则代表未曾加密、反之非0就代表加密
可以使用以下两种方式进行判断:
- 使用otool命令行
# 搜索Load Commands中的crypt关键字
otool -l 可执行文件名称 | grep crypt

- 利用MachOView查看可执行文件

脱壳
既然无法分析加壳后App可执行文件,那么就需要对程序进行脱壳操作
脱壳方式有两种,硬脱壳和动态脱壳:
- 硬脱壳,直接将壳程序通过执行解密算法得到解密后的可执行文件(iOS通常做法)
- 动态脱壳,程序运行之后,可执行文件已经被解密,然后从内存中导出
脱壳工具
clutch
首先下载该工具(点击下载),然后分别执行以下步骤
- 利用iFunBox将Clutch文件拷贝到手机的/usr/bin目录
- SSH登录手机,执行Clutch命令,若显示
Permission denied,则输入以下命令获取权限
chmod +x /usr/bin/Clutch
- 执行以下命令,列出当前手机可以脱壳的App
Clutch -i

- 通过
序号或者bundle ID进行脱壳操作(注意:不完美越狱iOS12以上不可用)
Clutch -d 2
Clutch -d com.netease.cloudmusic

dumpdecrypted
- 下载源代码,然后在源代码目录执行make指令进行编译,获得dylib动态库文件


- 将dylib文件拷贝到iPhone上(如果是root用户,建议放/var/root目录)
- 终端进入dylib所在位置,使用环境变量DYLD_INSERT_LIBRARIES将dylib注入到需要脱壳的可执行文件(
通过ps -A查看可执行文件的完整路径)
# 此路径就是ps -A指令打印出来的
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/containers/Bundle/Application/992C4ACA-4B99-4FC2-8BEE-11A3BDA1E9D0/neteasemusic.app/neteasemusic

- 执行完成之后,在/var/root目录下会生成neteasemusic.decrypted文件,这就是脱壳之后的可执行文件,然后使用otool命令查看Load Commands可以发现Crypt ID为0

dumpdecrypted脱壳时可能出现的错误
dumpdecrypted.dylib未签名错误:
dyld: warning: could not load inserted library 'dumpdecrypted.dylib' into hardened process because no suitable image found. Did find:
dumpdecrypted.dylib: code signature in (dumpdecrypted.dylib) not valid for use in process using Library Validation: mapped file has no cdhash, completely unsigned? Code has to be at least ad-hoc signed.
2020-12-15 22:30:03.444 neteasemusic[3758:559109] [OTRLocation: ../Tweak/Tweak.xm:121] ERROR: logos: nil class SpringBoard
2020-12-15 22:30:03.811 neteasemusic[3758:559109] [SnowBoard Launcher] Loader check passed. Loading SnowBoard...
2020-12-15 22:30:03.859 neteasemusic[3758:559132] [SnowBoard] reloadWithoutExtensions (0) took 0.000333 s
[2020/12/15 22:30:04:035] [NMLLogger:26] ---------- application start, version: 7.3.01 ----------
[2020-12-15 22:30:04:070] file:NELPLocationManager.m line:76)<<<<[NELPLocationManager authorizationStatus] = 0
Abort trap: 6
解决办法就是给dumpdecrypted.dylib签名,输入以下指令(前提在dumpdecrypted.dylib目录下)
ldid -S dumpdecrypted.dylib
边栏推荐
猜你喜欢

sizeof和strlen最全区别,以及指针和数组运算解析

IEEE在指定期刊下搜索相关论文

This beta version of Typora is expired, please download and install a newer; workaround

THREEJS导入外部OBJ+MTL后内存优化

Explore the efficiency of make_shared

【Exhibition of some projects】

VSCode hides the left activity bar

基于STM32F103的消防系统之火焰传感器

led闪烁

Biotin-SS-NHS ester|生物素-二硫键-活性酯|CAS:122266-55-1具有良好的水溶性
随机推荐
PC DBCO-PEG3-Biotin|PC-生物素-PEG3-DBCO可用于使用无铜点击化学
The IEEE under the specified journal search related papers
DADPS-生物素-炔基_CAS:2241685-22-1试剂反应原理
Unity Gizmos扩展:线框圆
Unity Shader的结构与语义
D-Desthiobiotin|D-脱硫生物素|CAS:533-48-2用于蛋白质和细胞的标记
Comparison of advantages and disadvantages of VsCode and Sublime editors
关于memcache内核,全网最通俗的讲解
vscode 设置 sublime 的主题
单片机之流水灯
led闪烁
C 语言之学生管理系统-多文件编程
陕西Biotin-LC_CAS:72040-64-3_N-生物素氨基己酸供应商价格
antd table Summary总结栏置顶
vscode set sublime theme
爬楼梯C语言
力扣题解
GadgetInspector原理分析
Biotin-SS-NHS ester|生物素-二硫键-活性酯|CAS:122266-55-1具有良好的水溶性
藏不住了,我要揭露云原生的那些不好