iOS安全:使用dumpdecrypted/Clutch 砸壳 / 2019-04-13

之前都是使用Clutch砸壳,今天在分析一问题时,发现Clutch砸壳失败,于是寻找其他的砸壳工具,选择了dumpdecrypted。这里简单记录下方便后续查询。

UPDATE:

Clutch和dumpdecrypted都有缺点,现在推荐使用 frida-ios-dump

dumpdecrypted砸壳

dumpdecrypted项目地址:

https://github.com/stefanesser/dumpdecrypted

dumpdecrypted项目只有一个C文件和一个Makefile,下载到本地(需要有xcode的编译环境)后直接解压执行make,会生成一个dumpdecrypted.dylib文件。

将dumpdecrypted.dylib上传到越狱手机待砸壳APP的文档沙箱目录,然后在沙箱根目录执行:

su mobile

DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib 砸壳APP的二进制文件目录

下面的问题就是怎么查找待砸壳APP的沙箱目录。

网络上很多资料都提到使用cycript -p的方式,但我使用该命令总是失败。于是想到了直接使用tweak注入的方式:

新建tweak项目,hook代码如下:

%hook UIViewController

- (void)viewDidLoad  {

    %orig;
		
	//往沙箱目录写一个文件
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documents = [paths objectAtIndex:0];
    //NSData *data =[documents dataUsingEncoding:NSUTF8StringEncoding];
    NSString *path = [documents stringByAppendingPathComponent:@"1.txt"];
    [path writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:NULL];
}

%end

并在tweak项目的plist文件中,增加待砸壳APP的bundle id.

make package install完成之后,运行待砸壳APP,此时会在待砸壳APP的沙箱目录生成1.txt的文件。

接着:

cd /var/mobile/Containers/Data/Application

find -name 1.txt

就可以查询砸壳APP的沙箱目录了。

Clutch 砸壳

clutch项目地址:https://github.com/KJCracks/Clutch 也可以直接从 https://github.com/KJCracks/Clutch/releases 下载编译好的二进制,然后通过ssh拷贝到越狱手机的/usr/bin目录下。

chmod 777 /usr/bin/Clutch

使用Clutch

Clutch -i会按顺序列出安装的app,然后根据选择的序号砸壳: Clutch -d --dump 3 砸壳正常则会提示砸壳之后的ipa下载路径,下载即可。

其它文章

iOS安全:修改Mach-O
iOS安全:LC_LOAD_DYLIB和LC_ID_DYLIB
iOS安全:iOS APP注入动态库重打包(非越狱)
iOS Sign With Apple实践
iOS安全:Tweak clang: warning: libstdc++ is deprecated