运行时工具基本原理

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那样,从而将动态分析转换成静态的文本分析。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,313评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,369评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,916评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,333评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,425评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,481评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,491评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,268评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,719评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,004评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,179评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,832评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,510评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,153评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,402评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,045评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,071评论 2 352

推荐阅读更多精彩内容

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