美文网首页iOS进阶
可执行文件的脱壳

可执行文件的脱壳

作者: Miss_QL | 来源:发表于2020-04-24 23:44 被阅读0次

大家知道,通常iOS中下载的ipa包可以通过解压缩,最后获得可执行的Mach-O文件。

一、判断可执行文件是否被加密
方法1:通过终端命令来查看
otool -l QQ | grep crypt

//class-dump出来的qqHeaders文件夹中头文件如果只有一个,通常也是被加密的
class-dump -H QQ -o qqHeaders
//输出的cryptid如果为0则未加密,为1则被加密
otool -l QQ | grep crypt
终端判断是否被加密.png

方法2:通过MachOView来查看

MachOView判断是否被加密.png

方法3:Hopper Disassembler解析不出来的,也是被加密的。

二、脱壳
一旦发现可执行文件是被加密过的,那就需要先进行脱壳操作,将原始的可执行文件给剥离出来。通常我们采用的都是硬脱壳方式,即暴力脱壳,也不需要将程序运行到内存中再进行操作。
硬脱壳是有工具的,一般用Clutch工具和dumpdecrypted工具,接下来我们逐个解释。

1、Clutch工具
Clutch下载地址
通过Clutch可以将装在手机上的应用进行脱壳操作,所以需要安装到手机上。为了方便在终端上直接操作,通常会将Clutch工具拖到/usr/bin目录下(建议给下载下来的Clutch后缀版本号去掉)。如果登录到手机后,在终端敲入Clutch出现权限不足的问题,可以给其添加可执行的权限chmod +x /usr/bin/Clutch即可。

Clutch操作.png

如上图箭头所指,成功脱壳后,会自动将文件打包成一个.ipa文件,终端里也会输出这个.ipa文件的具体路径,导出到电脑上即可使用 。这个.ipa里面包含的就是已经解密成功的可执行文件,即脱壳操作完成。我们可以通过前面所说的otool指令来验证一下,查看这个.ipa的crypt值是否真的为0。

验证脱壳结果.png

有图有真相,我没有胡说哈😁

2、dumpdecrypted工具
dumpdecrypted下载地址

下载的dumpdecrypted文件.png

(1)首先将dumpdecrypted.c编译成动态库
进入dumpdecrypted.c文件所在的目录,终端输入make指令进行编译,会自动执行其目录中的Makefile文件内部的指令,生成对应的动态库文件

动态库生成.png

(2)将生成的dumpdecrypted.dylib动态库文件拷贝到iPhone上(如果是root用户,建议放到/var/root目录)

拷贝动态库文件.png

(3)终端进入dumpdecrypted.dylib所在的目录,使用环境变量DYLD_INSERT_LIBRARIES将动态库注入到需要脱壳的可执行文件中(可执行文件的路径可以通过ps -A查看获取)
具体操作命令:DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib 可执行文件路径

DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib "/var/mobile/Containers/Bundle/Application/5A97A551-4E9B-4E57-B065-E1DC913B1FC9/Jiu_Kuai_Jiu copy.app/Jiu_Kuai_Jiu copy"

当前文件/var/root下新生成的Jiu_Kuai_Jiu copy.decrypted文件就是脱壳后的可执行文件,用otool指令验证一下就知道了。

相关文章

  • ios脱壳

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

  • 加壳脱壳

    脱壳存根(stub) 脱壳存根执行了以下三个步骤: (1)将原始程序脱壳到内存中 (2)解析原始可执行文件的所有导...

  • 加壳脱壳(04)

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

  • 可执行文件的脱壳

    大家知道,通常iOS中下载的ipa包可以通过解压缩,最后获得可执行的Mach-O文件。 一、判断可执行文件是否被加...

  • 判断一个ipa是否有壳

    把ipa解压拿到二进制可执行文件,终端操作 查看 cryptid 即可(有壳为1,已脱壳为0)

  • iOS应用之逆向防护

    iOS的逆向步骤一般为: 脱壳可执行文件 使用IDE或Hopper反编译分析代码逻辑 使用class-dump加l...

  • iOS逆向:脱壳

    目录一,加壳二,脱壳三,工具四,验证 一,加壳 1,介绍 App Store会对ipa包中的可执行文件进行加壳操作...

  • iOS越狱-脱壳

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

  • 12_脱壳

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

  • 越狱开发(六) —— 脱壳

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

网友评论

    本文标题:可执行文件的脱壳

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