浅谈iOS安全与入侵(逆向工程)
文档更新说明
- 2016年04月11日 完成2~5节
- 2016年04月9日 初稿
前言
安全问题向来都是非常重要的,所以一直都对安全方面的知识感兴趣.清明小长假刚过不久,本文将整理我这段时间学习的iOS hacking方面的知识,介绍一下清明节写的一个微信越狱插件.相信很多同学对这方面的知识都挺感兴趣的,不过由于门槛稍微有那么一点点高而且各方面的知识都不是很齐全,想必在不看书的情况下学习起来还是比较困难.一开始接触逆向开发时走了不少坑,也可以说是一些概念上的问题由于没有接触过,所以理解起来费力一些,当然最后还是都能解决的.接下来我会对这一过程做一个总结,再通过几篇不同的文章详细讲述这个过程,最后再把我写的越狱插件实现原理分享给大家,希望能对后来者有所帮助.
iOS很安全?
说起iOS的安全问题,大家一定会认为iOS相当安全,比安卓要安全很多.很多人的印象中,安卓很容易中毒,甚至点击短信里的链接就可能中毒,而iOS就是百毒不侵的样子.所以使用iOS系统的用户往往很容易忽略安全问题最后给自己带来大麻烦,特别是越狱的设备.最近一段时间不知道谁公布了微信抢红包的逆向分析结果,导致网上有大量的iOS自动抢红包插件被植入恶意代码,只要你安装这些插件,你的微信帐号密码,支付密码,聊天隐私等都很容易被盗取.我将通过本文和相关入侵文章,暴力清晰的讲述如何黑进一台越狱设备的微信进程,到达为所欲为地得到你的任何数据,让你明白iOS越狱之后乱安装插件的严重后果,希望读完后你能够有所震撼,也能提高自己的安全意识.
入侵思路
iOS和安卓有很多不同之处,比如通过反编译iOS应用只能得到汇编代码,iOS的沙箱机制对应用的约束很大等,但是从入侵iOS应用的方向上看,思路应该是大同小异的.无非就是先确定你要入侵的功能,然后反编译程序,看看程序的实现方法,最后使用hook方法对原来的应用下手,把自己写的代码注入到里面,这样你就可以为所欲为了.这个过程说起来简单,直接到具体的工作上可能还是有难度的.幸好经过了无数大神的努力,开发出大量的逆向工具,使得我们只要遵循一定的方法论,也能完成这一艰难的任务.
工具
本文不会对工具的使用方法做详细说明,在这里先介绍一些这几个必备工具的作用,等到讲解插件实现原理的时候再一起详细说明.
- class-dump-z和dumpdecrypted dumpdecrypted用于解密从AppStore上下载的App,俗称砸壳.砸壳后,使用class-dump-z获取OC编写的程序头文件(Swift编写的程序暂时无解),有了头文件,我们可以看到类名属性和方法,为我们入侵工作奠定基础.下载class-dump-z下载dumpdecrypted
- Cycript Cycript是一款运行在iOS设备上强大的命令行工具,可以使用OC和JS语法直接在程序运行时操作程序,可以像浏览器的控制台一样轻松地得到程序界面,执行即时代码等.(直接在Cydia上面搜索就有)
- OpenSSH OpenSSH也是一个安装在iOS设备上的工具,可以让你的iOS设备支持远程SSH链接,链接后的效果就是,你可以在自己电脑的终端上操作iOS设备.上面的Cycript就是要电脑通过OpenSSH链接到手机才能操作的.(直接在Cydia上面搜索就有)
- IDA IDA是一款很出名的反编译工具,反编译成的汇编代码会带上注释和流程图,很方便查看.Mac电脑的同学,如果你电脑性能足够强大你可以选用试用版,否则建议你自己在Windows上想办法,我用的最新MacBook Pro要反编译完微信二进制文件需要半个多小时,而且试用版每次打开都要重新反编译😏.还有一个类似的软件Hopper Disassembler,有兴趣可以找找.本文用的IDA6.6,下载地址就自己在百度找吧.
- Theos Theos是一个iOS的越狱开发环境,提供一些宏替换和编译配置,有了它,你就可以很方便的编写代码让后编译然后安装.下载地址
- ldid ldid是用来给deb包签名的工具,deb就是你越狱插件最后编译生成的包,可以用来提交到Cydia上的,也可以直接拿给别人安装.ldid可以直接放到Theos里面,这样编译的时候就顺便签好名了.
- lldb lldb是一个强大的调试工具,平时你在xcode中遇到断点后,在控制台就可以看到了.
- debugserver debugserver是一款Xcode附带的远程调试工具,它运行在iOS上,可以执行你在lldb输入的指令同时返回执行结果到lldb上.你可以通过lldb远程链接iOS设备,从而对设备上的程序进行调试.debugserver和lldb这两个工具直接可以在Xcode环境下获取到.
.