美文网首页iOS逆向
IOS逆向_脱壳工具:caluth、dumpdecrypted;

IOS逆向_脱壳工具:caluth、dumpdecrypted;

作者: 一杯开水 | 来源:发表于2019-11-06 10:06 被阅读0次

1、 加壳;

2、 砸壳;

3、IOS逆向常见的砸壳工具;


1、 加壳;

        1.1 概念: 利用特殊的算法,对可执行文件的编码进行改变(比如压缩、加密),以达到保护程序代码的目; IOS系统的APP由App Store进行加壳操作。

IOS程序加壳

2、 砸壳;

        2.1 摘掉壳程序,将未加密的可执行文件还原出来(有些人也称为“砸壳”);

        2.2 脱壳主要有2种方法:

            ① 硬脱壳:通过第三方工具、直接将程序的“壳”摘除;IOS逆向采用了“硬脱壳”方式。

image

            ② 动态脱壳:将程序运行到内存中,再出内存中导出可执行文件。

image

3、IOS逆向常见的砸壳工具;

        3.1 判断一个APP可以执行文件是否加壳:

            ① 这里使用了MJ大大写的一个命令行工具“MJAPPTools”,列举出当前手机上所有加壳的APP:

image

            ② 可以通过MachO工具,查看Load Commands -> LC_ENCRYPTION_INFO -> Crypt ID的值,0代表未加密;

            ③ 也可以通过otool命令行也可以:otool -l 可执行文件路径 | grep crypt。

        3.2 使用caluth工具进行脱壳操作:

            ① 下载caluth文件并拷贝到iPhone的/usr/bin目录下:

image

            ② 如果在iPhone上执行Clutch指令,权限不够,赋予“可执行的权限”:

image

            ③ 列出已安装的APP:Clutch -i

iamge

            ④ 输入APP序号或者Bundle Id进行脱壳操作:Clutch -d APP序号或BundleId:

image

            ⑤ 脱壳成功后会生成一个ipa文件、可以在终端看到起对应的ipa存放路径:

image image

        3.3 使用dumpdecrypted工具进行脱壳操作:

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

image

            ② 将dylib文件拷贝到iPhone上(如果是root用户,建议放/var/root目录):

image

             ③ 终端进入dylib所在的目录, 使用环境变量DYLD_INSERT_LIBRARIES将dylib注入到需要脱壳的可执行文件(可执行文件路径可以通过ps -A查看获取);

            DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib  可执行文件路径

image

             ④ .decrypted文件就是脱壳后的可执行文件:

image

(PS : 其中有部分章节是从前人的文章中搬运过来整理而成,这些文章里已经对部分知识点解释的很清楚明了了,我也没有更好的表达方式,所以站在巨人的肩膀上,我只是一个整理者加了部分自己的理解。)

相关文章

网友评论

    本文标题:IOS逆向_脱壳工具:caluth、dumpdecrypted;

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