热门标签 | 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文件

 



推荐阅读
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
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社区 版权所有