热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

逆向工程_iOS逆向工程(十三)之加壳与脱壳

篇首语:本文由编程笔记#小编为大家整理,主要介绍了iOS逆向工程(十三)之加壳与脱壳相关的知识,希望对你有一定的参考价值。加壳:利用特殊算法,对可

篇首语:本文由编程笔记#小编为大家整理,主要介绍了iOS 逆向工程(十三)之加壳与脱壳相关的知识,希望对你有一定的参考价值。



加壳:利用特殊算法,对可执行文件的编码进行改变(压缩、加密),达到保护程序代码的目的

脱壳:去掉壳程序,将未加密的可执行文件还原出来,或者称砸壳

脱壳方式:硬脱壳、动态脱壳

脱壳工具:Clutch(弃用)、dumpdecrypted(弃用)、frida、crakerx、flexdecrypt、bagbak

手机安装App的ipa文件位置:/var/containers/Bundle/Application/

判断是否加密: otool -l  Mach-O文件名 | grep crypt

flexdecrypt安装:

下载地址:https://github.com/JohnCoates/flexdecrypt/releases/download/1.1/flexdecrypt.deb

 

安装方式一:

1.下载flexdecrypt.deb文件;

2.将flexdecrypt.deb 拷贝到手机的 /var/root/Media/Cydia/AutoInstall目录;

3.在手机上通过Filza资源管理工具定位到 /var/root/Media/Cydia/AutoInstall ,点击安装;

4.远程登录iPhone5s,输入 killall SpringBoard (重启手机桌面)回车;

5.登录手机终端条件下,输入 flexdecrypt 回车;

 

安装方式二:

1.登录手机终端后,直接输入 wget https://github.com/JohnCoates/flexdecrypt/releases/download/1.1/flexdecrypt.deb

2.输入安装指令 dpkg -i flexdecrypt.deb 回车;

 

脱壳/砸壳操作:

1.登录iPhone5s后,输入 ps -A 回车,寻找要脱壳的的软件;

2.输入指令 flexdecrypt /var/containers/Bundle/Application/1EB14B56-6B19-442F-8289-A7A5D8290E5E/MobileMail.app/MobileMail 回车;

3.将 /tmp/MobileMail 路径下的 MobileMail 拷贝到Mac 工作文件夹, 用Hopper Disassembler 查看脱壳后的Mach-O文件

a.在Mac终端输入 scp -P 10010 root@localhost:"/tmp/MobileMail" ~/Desktop/jail_work 回车

b.Hopper Disassembler 查看Mach-O文件

 

Tips:不是所有的App都能使用flexdecrypt脱壳:WeChat、Aweme、唱吧脱壳失败,后续查找原因

 

另一种脱壳方式:frida-ios-dump

涉及设备:MacBook、iPhone5s(越狱,A7处理器,ARM64)

下载地址:https://github.com/AloneMonkey/frida-ios-dump

安装步骤:

iPhone端准备:

1.打开Cydia 【软件源】-->【编辑】-->【添加】,输入 https://build.frida.re 完成;

2.在软件源下,点击 【bulid.frida.re 】-->【全部软件包(或者开发)】选择 【Frida for pre-A12 devices】(根据手机CPU型号选择,5s是A7小于A12) 安装;

3.安装完成后,在Mac终端登录iPhone端,输入 killall SpringBoard (重启手机桌面)回车

 

注意:不需要在手机终端输入frida-ps -U ,会报 -sh: frida-ps: command not found 错误,frida-ps -U 检查安装成功指令是在Mac终端使用的

 

Mac端准备:

1.在终端输入 sudo pip install frida 回车,安装完成后输入 frida-ps -U 回车检测;

 

2.下载 frida-ios-dump 到 /opt/dump/ 文件夹下,输入 sudo mkdir /opt/dump && cd /opt/dump && sudo git clone https://github.com/AloneMonkey/frida-ios-dump 回车;

 

3.添加firda-ios-dump 的依赖,输入 sudo pip install -r /opt/dump/frida-ios-dump/requirements.txt --upgrade 回车;

 

4.修改 dump.py 的iPhone端关于USB端口号(22)映射到Mac端的端口(10010)和登录用户名及密码,输入 vim /opt/dump/frida-ios-dump/dump.py 回车;

 

5.设置指令别名;

a.在终端输入 vim ~/.bash_profile 回车;

b.在 alias python 下面添加 alias dump.py="/opt/dump/frida-ios-dump/dump.py”,按 “:”键后 输入 wq 回车;

c.生效配置文件,输入 source ~/.bash_profile 回车

 

注意:在设置指令别名的时候,由于我的bash_profile 文件是指向python3版本,所以在使用dump.py 指令的时候会报 ModuleNotFoundError: No module named \'frida\' 错,python3 版本下 dump.py 依赖frida出了点问题(默认安装的是python2 版本的frida), 解决思路有两种:a.重新配置bash_profile 文件的Python 执行版本路径,b.使用python2 来执行dump.py

报错:

 

脱壳/砸壳操作:

1.在Mac终端输入 cd /opt/dump/frida-ios-dump/ 回车;

2.打开iPhone上需要脱壳的程序;

3.在终端输入 python2 dump.py 【App Name】回车

 

Hopper Disassembler 查看Mach-O文件:

 

注意:由于 frida-ios-dump 文件夹是readonly 属性,在脱壳后会报 zip I/O error: Permission denied 错误

 

Permission denied解决方式:

1.将 /opt/dump/frida-ios-dump/ 下文件 dump.py 的内容拷贝一份出来,新建一个dump.py文件并粘贴拷贝的内容;

 

2.新建一个保存路径放在43行后,内容为 SAVE_PATH = os.path.join(os.path.expanduser("~"), \'Desktop\') 将存储路径指向桌面;

 

3.修改生成ipa文件的路径为SAVE_PATH;

 

4.将新建的dump.py文件替换 /opt/dump/frida-ios-dump/ 下的dump.py文件

 



推荐阅读
  • 对象自省自省在计算机编程领域里,是指在运行时判断一个对象的类型和能力。dir能够返回一个列表,列举了一个对象所拥有的属性和方法。my_list[ ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
  • 本文详细介绍了 org.apache.commons.io.IOCase 类中的 checkCompareTo() 方法,通过多个代码示例展示其在不同场景下的使用方法。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 本文作者分享了在阿里巴巴获得实习offer的经历,包括五轮面试的详细内容和经验总结。其中四轮为技术面试,一轮为HR面试,涵盖了大量的Java技术和项目实践经验。 ... [详细]
  • 基于Node.js、Express、MongoDB和Socket.io的实时聊天应用开发
    本文详细介绍了使用Node.js、Express、MongoDB和Socket.io构建的实时聊天应用程序。涵盖项目结构、技术栈选择及关键依赖项的配置。 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 历经三十年的开发,Mathematica 已成为技术计算领域的标杆,为全球的技术创新者、教育工作者、学生及其他用户提供了一个领先的计算平台。最新版本 Mathematica 12.3.1 增加了多项核心语言、数学计算、可视化和图形处理的新功能。 ... [详细]
  • 远程过程调用(RPC)是一种允许客户端通过网络请求服务器执行特定功能的技术。它简化了分布式系统的交互,使开发者可以像调用本地函数一样调用远程服务,并获得返回结果。本文将深入探讨RPC的工作原理、发展历程及其在现代技术中的应用。 ... [详细]
  • 本文将详细介绍通过CAS(Central Authentication Service)实现单点登录的原理和步骤。CAS由耶鲁大学开发,旨在为多应用系统提供统一的身份认证服务。文中不仅涵盖了CAS的基本架构,还提供了具体的配置实例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • Asp.net MVC 中 Bundle 配置详解:合并与压缩 JS 和 CSS 文件
    本文深入探讨了 Asp.net MVC 中如何利用 Bundle 功能来合并和压缩 JavaScript 和 CSS 文件,提供了详细的配置步骤和示例代码,适合开发人员参考学习。 ... [详细]
  • 开发笔记:2020 BJDCTF Re encode
    开发笔记:2020 BJDCTF Re encode ... [详细]
  • 精选多款高效实用软件及工具推荐
    本文介绍并推荐多款高效实用的软件和工具,涵盖系统优化、网络加速、多媒体处理等多个领域,并提供安全可靠的下载途径。 ... [详细]
author-avatar
hola'thrme
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有