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

一、逆向需要的工具

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:22为22。
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指令或其他方式将它拷贝到电脑上。