可执行文件的脱壳

大家知道,通常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指令验证一下就知道了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 加壳 通常我们从App Store下载的应用,拿到安装包之后,通过class-dump导出头文件的时候,会发现无法...
    Andres工坊阅读 1,646评论 0 3
  • 加壳 什么是加壳? 利用特殊的算法,对可执行文件的编码进行改变(比如压缩、加密),以达到保护程序代码的目的 脱壳 ...
    e297b14c9e53阅读 410评论 0 0
  • 我们日常开发提交给Appstore发布的App,都经过官方保护而加密,这样可以保证机器上跑的应用是苹果审核过的,也...
    妖精的菩萨阅读 18,671评论 1 14
  • 为什么需要脱壳?是因为我们在上传app到苹果商店的时候AppStore已经是帮我们加壳的了,如下图: 什么又是加壳...
    coder_feng阅读 404评论 0 0
  • 打卡日期:2018年03月29日 打卡累计天数:25/30 #宣言(你什么都会,只是需要被唤醒!)# �孩子第一个...
    静雪恋阅读 142评论 0 0