iOS脱壳技术

作者: hj的简书 | 来源:发表于2019-09-26 16:44 被阅读0次
文章结构

前言

在iOS开发中,经常遇到需要去对别人的app做一些参考或者修改。在app被打包到 app store后,ipa可执行文件会被加密并加壳,那么我们如何解密并脱壳已达到使用 class-dump 命令或者 Hopper 软件查看ipa文件的结构呢?下面我将介绍两个开源库。

Clutch工具

安装方法

进入 github 下载最新的插件,我这里以 2.0.4版本号为例

image.png

将下载后的文件拖到Mac桌面并重命名为 Clutch (方便后续的更新)。将Clutch文件放入到 iPhone => user/bin 目录下,这样做的目的是为了在iPhone终端中直接敲出 Clutch 命令

Clutch存放路径

如果在输入 Clutch 命令后提示 Permission denied,可以使用如下命令

权限不足解决方法

使用方法

iPhone:~ root# Clutch
Usage: Clutch [OPTIONS]
-b --binary-dump <value> Only dump binary files from specified bundleID
-i --print-installed     生成安装后未破解的序号
-d --dump <value>        输入序号或者BundleID开始破解
   --clean               Clean /var/tmp/clutch directory
   --version             Display version and exit
-? --help                Display this help and exit
-n --no-color            Print with colors disabled

1.使用Clutch -i查看未脱壳的app,并生成序号
2.使用Clutch -d 加上序号或者BundleID开始脱壳

脱壳成功后保存的路径
3.将脱壳成功后生成的ipa保存到Mac本地,方便后面使用

对比是否脱壳成功

查看未脱壳mach-o文件

找到在iPhone中安装好后未脱壳的app mach-o 文件(可执行文件)。

iPhone:~ root# ps -A | grep WeChat
  942 ??         0:43.14 /var/mobile/Containers/Bundle/Application/DCBB48DF-CD56-4B2E-ACAB-1941FEF8FBE5/WeChat.app/WeChat

将文件拖拽到Mac桌面,用于对比


未脱壳 mach -o

使用MachOView库或者otool查看cryptid

查看cryptid

如果cryptid值大于0就表示改mach-o未脱壳

查看已脱壳mach-o文件

将保存到Mac本地并且已经脱壳成功后的ipa解压,将其中的可执行mach-o文件拖到桌面

找到 mach-o 文件

使用MachOView库或者otool查看cryptid

查看cryptid

可以看到,脱壳成功后,改cryptid值已经变成0。这样在使用class-dump或者Hopper时,就没有任何障碍了。

dumpdecrypted工具

安装方法

进入 github,下载后解压,并使用make命令进行编译

make命令生成的动态库

可能产生的报错和解决方法:

报的错:
xcrun --sdk iphoneos --find gcc  "iphoneos" cannot be located
解决方法:
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer/

将生成的dumpdecrypted.dylib文件传入到iPhone => /var/root下(方便在root根环境下使用)

使用方法

1.终端进入root目录
2.使用DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib 手机端mach-o文件地址
3.生成的WeChat.decrypted会在保存在/var/root目录下

生成的mach-o文件

ps:可以使用ps -A | grey 查询的关键字来进行app运行期间的进程模糊搜索

相关文章

  • iOS脱壳技术

    前言 在iOS开发中,经常遇到需要去对别人的app做一些参考或者修改。在app被打包到 app store后,ip...

  • iOS逆向工程之给App脱壳

    iOS逆向工程之给App脱壳 iOS逆向工程之给App脱壳

  • iOS应用程序的脱壳实现原理浅析

    iOS应用程序的脱壳实现原理浅析 iOS应用程序的脱壳实现原理浅析

  • 反编译-脱壳

    iOS 中普遍采用硬脱壳的方式,iOS中很好用的脱壳工具Clunch和dumpdecrypted。 如何验证可执行...

  • ios脱壳

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

  • iOS脱壳

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

  • IOS脱壳

    01.安装class-dump02.脱壳

  • iOS脱壳

    加壳 App Store会对ipa包进行加壳操作。 加壳:利用特殊的算法,对可执行文件的编码进行改变(比如压缩、加...

  • iOS逆向工具01-frida-ios-dump

    一.简介 鉴于Clutch在iOS上无法脱壳,那么我们换frida-ios-dump上场吧. 二.安装 iOS端配...

  • 通过xposed脱壳APK

    通过xposed脱壳APK 在看到VirtualApp的RDM上,说可以用于脱壳APK,但是技术不公布,想了想,确...

网友评论

    本文标题:iOS脱壳技术

    本文链接:https://www.haomeiwen.com/subject/dkxxyctx.html