iOS逆向工程中一项重要环节就是导出app所有类的.h文件,由此查看所有类及类的方法。所使用到的就是class-dump.但是在此之前我们需要得到所逆向的app凿壳后的二进制可执行文件。那么我们凿壳的工具之一dumpDecrypted。下面来介绍使用方法
前往 https://github.com/stefanesser/dumpdecrypted 下载并解压,终端cd进目录后make一下,同目录下即可生成dumpdecrypted.dylib
第二步,需要将此dumpdecrypted.dylib拷贝到所逆向app的沙盒文件中,那么我们先来寻找所逆向app的沙盒路径。在iOS设备中,app的沙盒文件放在目录var/mobile/Containers/Data/Application下如图所示
每个文件夹对应一个app的沙盒文件夹。那么怎么找出你所逆向app是哪个文件夹呢。我们先回忆一下,平时我们做正向开发的时候,是如何得知沙盒路径的呢,ok,就是NSHomeDirectory()函数,那么结合我们前面使用的SSH+Cycript让对应进程执行此函数,不就可以知道对应app的沙盒路径了吗。下面我们以迅雷app为例。
ssh登录我们的iOS设备,ps -e打印我们的所有进程名,保证iOS设备前台运行迅雷app,cycript -p iThunder注入到迅雷进程。输入函数NSHomeDirectory()即可得到迅雷的沙盒路径。如图
最终得到沙盒路径/var/mobile/Containers/Data/Application/6045B9FB-9FC9-42CD-97FA-623CE57F1B24,同时我们记下迅雷app可执行文件的地址,后面会用到。
使用scp命令将我们的dumpdecrypted文件拷贝到沙盒Documents文件目录下
接下来就是凿壳了,先cd到dumpdecrypted所在目录
cd /var/mobile/Containers/Data/Application/6045B9FB-9FC9-42CD-97FA-623CE57F1B24/Documents/
执行凿壳命令DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib 被凿壳的二进制文件,例如下
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/889381C7-A8C8-49CF-8C39-E0B055C5AD53/iThunder.app/iThunder
等待命令执行完成后,会在Documents目录下生产同名的iThunder.decrypted文件,最后我们使用scp命令将凿壳后的二进制文件拷贝mac端,等待class-dump或是使用IDA or Hopper等工具进行反汇编
领取专属 10元无门槛券
私享最新 技术干货