接触了一个多星期的iOS逆向,决定花点时间写点东西来介绍一下入门的工具和记录一下学习过程中遇到的一些问题。
越狱
首先我们需要准备一个越狱的iPhone,iTouch或者iPad。我用的是iOS8.4的iPad。
越狱很简单,我们只需要下载一个比如PP助手,太极越狱等得第三方软件一键越狱就行了。我使用的是太极越狱。
Mac和iOS工具
iFunBox
这是一个再Mac上能查看iPhone文件内部文件结构的软件,借助这个软件我们可以轻易地查看文件,使得Mac和iPhone文件之间文件进行复制。
IDA
这是一个分析执行文件的工具很强大但也很贵,但是有32位的试用版只是不能保存数据而已。可是由于现在机器基本都是64位的,所以还是得买买买。我打算过几天去买个hopper毕竟ida还是比较贵
OpenSSH
这个是在iOS上的工具,主要可以让外部和iPhone进行ssh通信,直接在cydia里面搜索安装就行。
连接的命令是
ssh [email protected](iPhone的IP地址)
默认密码是alpine。
class-dump
主要是用来砸壳,将.h头文导出
class-dump -S -s -H XXX -o /path/headeres
这样就将头文件全部倒出来了。
但是因为appstore下载的app是进行过加密的,所以无法直接dump出来,需要用另外一个叫做dumpdecrypted的工具来进行砸壳才能dump。
dumpdecrypted
这个工具的话主要是用来对app进行砸壳,dumpdecrypted在github上开元的,必须编译后才能使用,这里就补详细介绍了,直接给一个编译后的链接。
如何使用它呢,就是先通过ssh连接到iOS上:
ssh [email protected]
然后通过命令打印出当前活动的app
ps -e | pre /
再通过cycript找出其路径
cycript -p XXXApp
[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]
然后将dumpdecrypted.dylib复制到获取到得目录中
scp /Users/.../dumppdecrypted.dylib [email protected]:/var/...
最后砸壳
先进入到APP的documents目录下,然后执行命令:
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/Contains/.../XXX.app/XXX
这样就完成了砸壳,然后就砸壳后获取的XXX.decrypted文件复制回Mac就可以进行dump了。
cycript
这是一个脚本再iPhone上使用的脚本语言,在上面已经介绍过它能够获取到App路径,它还有实时改变UI的功能。比如书上介绍的通过cycript来弹出一个alertView
cycript -p XXX
alertView = [[UIAlertView alloc]initxxxx] (这就跟iOS开发的一样但不需要引号
[alertView show]
这样就会显示一个alertView出来。它还通过#地址来获取对象:
[#address nextResponder] 就能够获取下一个对象的地址
LLDB和debugserver
这两个工具比较复杂,可以仔细阅读下《iOS应用逆向工程》以及一些相关资料。不过需要跟IDA或者Hopper配合使用。
Theos
这里就不介绍用法,主要强调一下,别去装最新版的!好多bug!
iOSOpenDev
这里主要讲 一下安装的方法,先在iOSOpenDev官网下载一个安装包,安装后一般都会提示失败。
然后到链接下载这个批处理文件。然后执行:
> sh sh 文件路径 base
这个应该是对iOSOpenDev修复,然后就可以看到Xcode里面装上了。
大致的应用工具都简单介绍了一下,有什么错误的希望指出。
参考资料:
《iOS应用逆向工程》第二版