运行时工具基本原理

IOS逆向工具大全里 总结了四种运行时工具:cycript、InspectiveC、introspy、Snoop-it。这几种工具功能大体相同(包含与被包含的关系)。

这些基本原理都是源自于ios的runtime特性,也称为运行时特性。

本文首先科普ios的runtime特性。

何为运行时呢。普通的语言,如C语言,一旦经过编译,则马上转换成可目标语言(汇编语言或机器语言),比如此时想要调用某个函数,则实际在内存中

就调用了某个函数。

然而OC语言却不是这样:OC语言除了编译器之外,还多了个运行时系统,经过编译之后,此时的函数在内存里并没有实际的地址,也即是此时无法调用该

函数,而只有等到实际运行的时候,这个函数或者类才在内存中实例化,被调用。

也正是因为如此,app每次运行的时候实际在内存中产生的地址都是不同的,这就给反汇编的代码阅读增加了困难,这个又称之为ios的app的ASLR特性。在

IOS逆向工具大全里有一种removePIE的工具,可以增加汇编代码的可读性,详见http://www.cocoachina.com/industry/20140310/7940.html

这个就称之为运行时机制。

OC语言在运行的时候都会被转换成runtime语言,苹果本身对runtime是完全开源的,换言之,苹果是允许去窥探已有app的内部结构的。通过runtime机制,

完全可以实现在app运行的时候,了解app实现的内部结构:某个界面的组成,某个类有什么属性方法,runtime甚至允许改变已有类的属性方法值,亦可以增加

一个类,这就使得hook成为可能。

然后依次介绍每个工具的各自特性。

1:cycript

关于cycript的介绍在Cycript 研发_陈旦中已经有了很详细的介绍。但是cyript还有另外一种特性:cyript允许OC代码和JS代码混合编写。

这种机制的原理源自于Objective-C与JavaScript交互

2:Snoop-it:https://wizardforcel.gitbooks.io/ios-sec-wiki/content/chapter4/issue4-6.html

Snoop-it有两个功能:运行时分析、对iOS应用进行黑盒安全评估。它有自己进行操作的web界面,这是它优于cycript的一个地方。

它还可用来分析网络流量:https://wizardforcel.gitbooks.io/ios-sec-wiki/content/chapter6/issue6-1.html

Snoop-it官网地址:https://code.google.com/archive/p/snoop-it/.值得注意的是,这个工具作者并没有放出源代码。

3:InspectiveC

InspectiveC是一个基于OC的库,它可以帮助查看类的详细信息:

某个类的所有方法调用情况、某个类的某个方法的调用情况、某个类的实例对象的所有方法的调用情况、某个类的实例对象的某个方法的调用情况、某个方法签名的调用情况

严格来说 它的功能很有限:http://iphonedevwiki.net/index.php/InspectiveC

4:introspy:http://wufawei.com/2013/11/ios-application-security-17/http://www.blogfshare.com/ioss-introspy.htmlhttp://ios.jobbole.com/58889/

Introspy由两个模块组成, 一个追踪器,一个分析器。我们可以用追踪器来对应用执行运行时分析。追踪器会把信息保存到sqlite文件中以便后续用分析器分析,

追踪器也可以把所有信息都输出到设备的控制台上。分析器可以用这个数据库文件生成一个详尽的HTML报告。

Introspy源码:https://github.com/iSECPartners/Introspy-Analyzer

因此在本次调研中 只有1、4两种工具,即cycript、introspy是开源的,而关于introspy的功能我有一个思路:通过动态运行工具对app进行追踪,可以对这些追踪行为进行

定义规则,而后,可以将这些追踪信息输出成静态文本,类似introspy那样,从而将动态分析转换成静态的文本分析。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,253评论 4 61
  • Swift版本点击这里欢迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh阅读 25,572评论 7 249
  • 差点忘了自己说好的一周一篇文章,可是自己好像写不出什么东西,唉,说明自己不热爱生活了…… 我所热爱的是写...
    苏璞阅读 604评论 0 1
  • 昨天晚上太困了。 01,10感恩张老师一步一步教我画曼陀。有一个好开头真不错。 感恩老爸让我来沧州。没有感觉什么情...
    瀞好如琳阅读 642评论 0 0
  • 打卡:每周读一本书 OK 以前看过一篇报道,中国人每年人均读书量不到两本,犹太人每年人均读书十五本… ...
    鑫鑫酱阅读 325评论 0 0