IOS逆向(4)加壳、脱壳
加壳
class-dump 导出类信息头文件
常用格式:class-dump -H Mach-O文件路径 -o (文件名)
!!!!!!在使用class-dump如果不能正常dump出头文件,是因为旧版不支持swift,使用这个-class-dump
ios安装app流程如下图:
应用在上传App Store时,App Store会对应用进行加壳操作(这里有个坑,如果需要未加壳的App,推荐使用PP助手下载)。
原理:利用特殊的算法,对可执行文件的编码进行改变,比如雅俗、加密,以达到保护程序代码的目的。
加壳操作
加壳后的可执行文件不能直接运行,而壳程序能被ldyd文件识别运行后,最后将机密文件进行解密并运行。
脱壳
什么是脱壳?
- 摘掉壳程序,将为加密的可执行文件还原出来
- 脱壳有两种方法:硬脱壳、动态脱壳
查询是否加壳
首先在本地文件夹中找到项目文件,将后缀.ipa修改为.zip,然后解压得到文件夹
打开解压后的文件夹中的Payload:
右键点击ting显示包内容并找到可执行文件:
这里推荐使用命令行查壳: otool -l 文件路径 | grep crypt
如果出现cryptid字段值为1.则代表加壳了,0就代表为加壳这里是由于该app有两种架构,所以出现的结果有两个。
脱壳工具(以及遇到的坑和解决办法)
- Dumpdecrypted(链接中有各种问题的详细解决方式)
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib 文件路径(通过ps-A查看)
解密结果:
ls -l 查看文件
脱壳成功!
脱壳后路径:
IOS逆向(4)加壳、脱壳相关推荐
- 壳与加壳脱壳基础知识
在自然界中,我想大家对壳这东西应该都不会陌生了,由上述故事,我们也可见一斑.自然界中植物用它来保护种子,动物用它来保护身体等等.同样,在一些计算机软件里也有一段专门负责保护软件不被非法修改或反编译的程 ...
- PE结构详解(加壳脱壳必备知识)第二篇·存储地址介绍
昨天分享了一篇PE结构详解(加壳脱壳必备知识),本篇是上一篇续篇,主要介绍关于PE结构的三种存储地址 VA.RVA.FILEOFFSET及转换方式,希望对你有所帮助. 一.关于VA.RVA.FILEO ...
- 壳学习一:PECompact 2.x 加壳脱壳
壳学习一:PECompact 2.x 加壳脱壳 SkyJacker Http://blog.csdn.net/skyjacker Email:HeMiaoYu <At> gmail.com ...
- 吾爱软件加壳脱壳工具箱 v 1.0
集整理一些常用软件加壳脱壳工具制作成工具箱,希望大家喜欢. 下载地址 本文转自haiyang45751CTO博客,原文链接:http://blog.51cto.com/haiyang457/19288 ...
- PE结构详解(加壳脱壳必备知识)
近期太忙一直没有抽出时间来更新文章,周末抽空写一篇关于PE结构相关知识,PE结构是windows下的可执行文件的标准结构.可执行文件的装载.内存分步.执行等都依赖于PE结构.如果要掌握反病毒.免杀.权 ...
- 【Android 逆向】加壳技术简介 ( 动态加载 | 第一代加壳技术 - DEX 整体加固 | 第二代加壳技术 - 函数抽取 | 第三代加壳技术 - VMP / Dex2C | 动态库加壳技术 )
文章目录 一.动态加载 二.第一代加壳技术 ( DEX 整体加固 ) 三.第二代加壳技术 ( 函数抽取 ) 四.第三代加壳技术 ( Java 函数 -> Native 函数 ) 五.so 动态库 ...
- iOS逆向工程之App脱壳
本篇博客以微信为例,给微信脱壳."砸壳"在iOS逆向工程中是经常做的一件事情,,因为从AppStore直接下载安装的App是加壳的,其实就是经过加密的,这个"砸壳&quo ...
- 加固加壳脱壳分析(3)_实战手动脱壳某家加固
手动脱壳准备 一个加固的Apk文件 frida环境 一台Root手机 手动脱壳准备 本次的脱壳目标就是一个叫每日优先的软件 我在论坛里分析了很久 最后发现这个软件适合用来练手 目标就是脱出完整的dex ...
- 加固加壳脱壳分析(1)_加固加壳原理和几代壳
什么是加固加壳 对App资源代码进行保护,使其不容易被反编译工具解开. 加固的核心在于保证软件正常运行的同时又能保证源码的安全性. 为什么要加固加壳 若应用不做任何安全防护,极易被病毒植入.广告替换. ...
- 【Android 逆向】加壳技术识别 ( 函数抽取 与 Native 化加壳的区分 | VMP 加壳与 Dex2C 加壳的区分 )
文章目录 一.加壳特征识别 1.函数抽取 与 Native 化加壳的区分 2.VMP 加壳与 Dex2C 加壳的区分 一.加壳特征识别 1.函数抽取 与 Native 化加壳的区分 函数抽取 与 Na ...
最新文章
- 缓存成神路:Redis读写分离难以理解?一文解析Redis读写分离技术
- 形象的表述sigmoid的神经网络万能近似定理
- SLAM | 三维重建方法之KinectFusion与ElasticFusion详解
- jQuery中的事件冒泡、事件捕获和事件追加引发的问题
- 【ArcGIS遇上Python】窗体版Python批量处理地理数据--栅格裁剪
- arachni web mysql数据库_Web安全扫描工具Arachni
- js使用hover事件做一个“个人中心”的浮动层
- java 数据队列_Java 数据结构 - 队列
- java程序启动后就进行了7次younggc_程序员如何优化 Java GC
- 报错:error while loading shared libraries: libz.so.1: cannot open shared object file
- 用信号量及其PV操作处理实际问题
- 01 分布式系统架构的冰与火
- Outlook邮箱注册详解教程
- 蚁群算法(实验分析)
- java空气质量指数AQI换算
- Linux命令中的箭头符号总结
- MySQL学习笔记:全文本搜索
- static struct、typedef struct
- Devops之Gradle SpringBoot构建打包工程jar、搭建jenkins自动发布
- Python文本爬虫实战