(6)脱壳

加壳

  • 什么是加壳?
    • 利用特殊的算法,对可执行文件的编码进行改变(比如压缩、加密),以达到保护程序代码的目的

脱壳

  • 什么是脱壳?
    • 摘掉壳程序,将未加密的可执行文件还原出来(有些人也称为“砸壳”)
  • 脱壳主要有2种方法:硬脱壳、动态脱壳

iOS中的脱壳工具

  • iOS中有很多好用的脱壳工具
    • Clutch:https://github.com/KJCracks/Clutch
    • dumpdecrypted:https://github.com/stefanesser/dumpdecrypted/
    • AppCrackr、Crackulous(基本不用,常用前两种)

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

  • 将可执行的Mach-o文件拖入Hopper Disassembler v4当中 查看Load Commands -> LC_ENCRYPTION_INFO -> Crypt ID的值,0代表未加密
  • 通过otool命令行也可以:otool -l 可执行文件路径 | grep crypt

Clutch - 配置

  • 下载最新的Release版: https://github.com/KJCracks/Clutch/releases
  • 建议去掉版本号,改名为Clutch
  • 将Clutch文件拷贝到iPhone的/usr/bin目录
  • 如果在iPhone上执行Clutch指令,权限不够,赋予“可执行的权限”

Clutch – 使用

  • 列出已安装的APP:Clutch -i
  • 输入APP序号或者Bundle Id进行脱壳操作:Clutch -d APP序号或BundleId

或者

  • 脱壳成功后会生成一个ipa文件

dumdecrypted

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

  • 将dylib文件拷贝到iPhone上(如果是root用户,建议放/var/root目录)
  • 终端进入dylib所在的目录
  • 使用环境变量DYLD_INSERT_LIBRARIES将dylib注入到需要脱壳的可执行文件(可执行文件路径可以通过ps -A查看获取)
  • .decrypted文件就是脱壳后的可执行文件

dumdecrypted – 细节

  • 在使用过程中,可能会遇到以下错误
  • 原因:对dylib所在的文件夹权限不够
  • 解决方案:将dylib放在用户所在文件夹,比如
    • 如果是root用户,请将dylib放在/var/root目录
    • 如果是mobile用户,请将dylib放在/var/mobile目录

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏分享达人秀

开发IDE大升级,终于迎来了Android Studio

通过前面几期的学习,我们知道了Android的前世今生,也了解了Android的系统架构和应用组件,也连续用了几期来学习Android开发环境的搭建,不...

24710
来自专栏我是攻城师

360开源的Qconf配置同步工具使用记录

3687
来自专栏Youngxj

安卓四大组件之Broadcast Receiver-广播接收者

1972
来自专栏nimomeng的自我进阶

简单免费的文档中心——dokuWiki搭建指南

首先去官网下载页面下载最新版本的Dokuwiki,根据自己需要动态打包,不需要安装:

5.6K3
来自专栏linux驱动个人学习

systemd的作用

早上群上讨论了一下systemd的作用,还导致了一个人的直接退群,出于求知心理,搜索了一些systemd,对此也作出了一些相应的整理; 一、systemd的诞生...

4387
来自专栏王清培的专栏

ElasticSearch大数据分布式弹性搜索引擎使用

阅读目录: 背景 安装 查找、下载rpm包 、执行rpm包安装 配置elasticsearch专属账户和组 设置elasticsearch文件所有者 切换到el...

77710
来自专栏云计算

Kubernetes的服务网格(第4部分):通过流量切换持续部署

除了服务发现,重要指标和TLS之外,linkerd还具有强大的路由语言,称为dtabs,可以用来改变请求的方式 - 甚至是单个请求 - 流经应用程序拓扑。在本文...

4487
来自专栏HTML5学堂

移动端及时调试工具 - weinre使用方法

HTML5学堂:在前一篇文章当中,我们借着weinre讲解了NodeJS中的一些简单命令,也讲解了weinre的安装方法,今天我们把weinre的使用“完结”掉...

2953
来自专栏北京马哥教育

【图文并茂】一步步带你了解Web站点架构

1.1 http反向代理服务器 在web站点前端,我们需要搭建一个反向代理服务器,用于负责接受用户的请求,请求包括动态和静态的内容请求。一般反向代理服务器的部署...

4828
来自专栏xcywt

《Linux命令行与shell脚本编程大全》 第八章管理文件系统

ext:最早的文件系统,叫扩展文件系统。使用虚拟目录操作硬件设备,在物理设备上按定长的块来存储数据。

1273

扫码关注云+社区

领取腾讯云代金券