iOS逆向(一)

648 阅读3分钟

最近公司让我们搞逆向,我专门去学习了一下,在此记录一下自己的学习进程和碰到的一些坑。

一、逆向需要的工具

1.一台已经越狱的设备。

2.砸壳工具:dumpdecryptedClutch

3.查看头文件工具:class-dump

4.反汇编工具:Hopper, IDA Pro

5.调试器:Cycript, gdb

6.UI分析工具:Reveal

7.网络分析工具:Charles

二、砸壳

1.dumpdecrypted下载和安装。

App Store上的应用都使用了FairPlay DRM数字版权加密保护技术。IPA都是加密的,所以在逆向之前需要先砸壳。这里使用的是dumpdecrypted

dumpdecrypted下载地址:github.com/stefanesser…

下载解压后只有3个文件,cd进入这个目录,执行make指令,会多出两个文件,一个.dylib文件,一个.0文件,.dylib文件就是我们用来砸壳的锤子。

2.ssh链接到手机

这里有一个巨坑,我使用的手机是iOS10.1的。在 iOS 10 之前,越狱之后需要手动安装 OpenSSH,以此达到通过 ssh连接 iPhone 的目的。但是此次的越狱,作者竟然内置了 OpenSSH,所以就不需要再另外安装。但是小哥默认禁用了 ssh 连接,需要我们手动进行开启。下面说下怎么开启。

1).在 Cydia 中搜索 Filza 并安装,也可以在电脑端安装 iFunBox 工具。此步骤的主要目的是为了修改越狱工具中的一个文件。

2)用上述两个工具其中之一,进入以下路径:/private/var/containers/Bundle/Application/yalu102/yalu102.app/

3)用文本编辑器打开dropbear.plist文件。

4)替换127.0.0.1:2222

5)重启设备,重新使用越狱工具恢复越狱。

注意:在这一步的时候,一定不要再安装OpenSSH,已经安装的可以卸载掉,否则无法通过WIFI进行ssh连接。

3.把坑填完之后,开始真正的ssh连接

连接方法:ssh root@<#iPhone IP Address#>

第一次连接需要输入YES

默认密码:alpine

这个时候ssh连接就成功了。

修改密码:在终端输入:ru root ,然后按照提示输入当前密码,输入新密码,确认密码即可。

4.将砸壳工具拷贝到App的Documents的目录

1)打开你需要砸壳的APP,在终端输入ps -e

2)找到对应的app进程,记录下它的编号

3)输入cycript -p 编号

4)输入[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory                                          inDomains:NSUserDomainMask][0]得到Documents目录。

5)输入scp指令将dumpdecrypted.dylib 拷贝到App的Documents的目录

注意:这里又有一个坑,有可能会拷贝失败,在这里我们去Cydia安装OpenSSH,安装完之后就可以拷贝成功了。也就是说,在ssh连接时,卸载掉OpenSSH,scp时安装OpenSSH。

指令如下:

scp ~/dumpdecrypted.dylib root@10.10.242.107:/var/mobile/Containers/Data/Application/2B4C6281-C015-4FF3-A8EC-5E5C7554D447/Documents

5.砸壳

输入如下指令:

DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib/var/mobile/Containers/Bundle/Application/BFED82A3-3238-4F41-B797-C1CB584CBE05/qqlive.app/qqlive(这里就是之前的进程地址

砸壳成功后生成.decrypted文件,这就是我们需要的文件啦,通过scp指令或其他方式将它拷贝到电脑上。