应用商店下载的app,都是进过加密过的,用hopper或者ida完全分析不了。那是不是就没办法了呢?
其实不然,解铃还须系铃人,要想得到解密后的文件,还是要依靠苹果爸爸啊!!!
首先,我们知道,加密后的应用,如果不解密的话,苹果自己都不知道怎么去解析可执行文件,所以当设备运行应用时,加载进内存中的数据,肯定是经过解密后的数据,因此咱们只需把内存里的对应的解密部分dump下来即可。
这里介绍一个砸壳工具:dumpdecrypted
该工具的原理就是在程序运行之后注入一个动态库,然在内存中dump下解密之后的部分。
原理和实现不赘述,想进一步了解,可以查看源码。
这里简单讲一下如何用该工具进行解密app:
1、运行源码,生成动态链接库。
解压下载下来的dumpdecrypted-master.zip
到当前目录;打开终端,cd
到该目录。
在该目录下直接运行make
。
如果运行不成功,报错找不到文件。运行xcode-select --print-path
,查看目录是否指向/Applications/Xcode.app/Contents/Developer
。如果不是,则用xcode-select -s /Applications/Xcode.app/Contents/Developer
修改一下。再执行make。
运行成功,会在当前目录生成dumpdecrypted.dylib
动态库。
2、注入动态库ssh
登录进手机,用ps
命令查看目标app所在的目录。
记住这个目录。待会儿有用。
再用cycript获取目标app的沙盒目录。
获取到目标app的沙盒目录之后,退出cycript
(control+D
),将第一步得到的dumpdecrypted.dylib
,导入到沙盒目录(导入方法有很多,scp、PP助手、ifiles等)。cd
到沙盒目录,运行DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/DDFA8DC8-F19A-4A6F-932B-22E8170BB22D/HDXinHuaDict.app/HDXinHuaDict
。
看到一系列的+
就说明运行成功,在沙盒目录下就会有被解密的二进制文件。
将该文件导出即可。