introspy使用方式以及具体原理

introspy的官网地址以及deb包地址:https://isecpartners.github.io/Introspy-iOS/

在官网https://github.com/iSECPartners/Introspy-iOS/releases中 该工具仅仅放出支持IOS7的版本,IOS8,IOS9均未放出deb安装包。

所以,我下载了源码,试图在IOS9上编译一份,结果如下


查阅原因发现 是我安装的theos安装版本太高了 把theos安装低版本 可安装

结果又发现如下


这就没有办法了,这个工具的源码不支持IOS9。

这里会感觉到很奇怪,这个工具关theos什么事。

关联如下

1:这个工具本身的作用 就是针对一些私有API进行监控,并将日志输出到xcode自己的log中。

2:这个工具采取的监控的原理 就是使用theos编写tweak API,从外部进行插入dylib的原理,只不过它已经将一个已有的tweak拆分成很多不同种类监控的文件。如下图



比如其中的NSData的tweak是这样的


完全就是theos中 tweak hook的语言组织 而且hook的即是IOS私有类NSData中的关键函数 与之前对theos中的调研一致

而之外的一些类文件 则是为不同类型的hook提供工具类,如上图的CallTracer类

此处的Tweak起着一个总的调度的作用,makefile打包安装成最终的deb形式。

如下图tweak调用各种不同类型的hook


在IOS7中,追踪的信息会被保存成一个数据库introspy-com.XX.XX.db 这个数据库存放在 ./private/var/mobile/Applications/E5DF194C-0B29-4211-B243-68DBA847DCDE/Library/introspy-com.XX.XX.db里面

Introspy-Analyzer直接将这个数据库直观的解析出来,当然在xcode的log上也会有显示

在总的调度tweak中 有这个路径的数据库的初始化和写入



此为我们记录分析提供了很好的工具和思路

虽然现在未能使用这个工具 但是这个工具给我们研发工作一个很好的范例,它本身已经解决了如下问题

1:很多私有API的检测问题,证实了通过外部插入dylib是目前最好的hook方式

2:它已经解决了通过一个插件就能自动开关所有应用的hook的问题 这是在IOS6上的使用状况(官网的图)

因为现在无法使用,所以仅仅看这个图的话,这个工具已然满足多样本实时监控


这种即是IOS上 setting bundle的一种机制 为插件单独添加preferences 还有一种解决方案:FLEX嵌入:https://yohunl.com/ios-yue-yu-de-tweakkai-fa/

在源码中找到了 Preferences中plist文件 这个在theos创建工程的时候选择创建application就能生成settings。

tweak中调度的代码中,对开启了监控的app的bundle ID进行了过滤:即开启了的,为其创建DB,没有开启的便不为其创建DB。

但为何能实现在不用重新加载tweak的前提下就能实现多APP的监控??

这里我找到一种解决多样本控制的办法 在原创建的工程文件里 有一个plist存放的是有效bundle ID。


发现其中的bundle ID是可以添加很多的,只要这个app满足 则对这个app生效


测试结果发现只要原始的tweak插件生成过程中,有这个bundle ID的,则hook一律有效,不必重新生成插件。

所以,我猜想,introspy是将这个bundle ID的选择权利通过setting bundle的添加交给了用户,让用户手动输入是否支持监控,从而在手机插件的内部操作了这个plist文件,来实现多样本监控。

在introspy的源码处 tweak总调度插件处找到了证明我猜想的代码



theos tweak实现多样本自动支持的问题得到解决


这个图说明了tweak的bundle ID的生效过程,也是introspy能动态监控的原理。

但是基于本项目动态养殖涉及到的问题,需要找到tweak存放bundle ID的plist文件的位置,由于越狱系统仅仅开放部分文件权限,所以目前并不知道这个plist文件存放的位置,如能找到这个

则有如下的流程

样本静态分析得出app的bundle ID—>找到tweak在iphone中存放plist的文件,并将bundle ID添加到其中--->tweak对这个app生效—>app安装,监控目的达到

发现可以找到这个文件


这个文件的路径是: //Library/MobileSubstrate/DynamicLibraries

由此 只需编写shell命令来写入这个文件即可

3:这个工具 为输出监控日志提供了很好的思路 可以使用syslogd这个插件 也可以使用xcode自动log工具 如下图


还可以使用IOS的DB数据库操作,每一个app单独为其创建一个DB。introspy则是使用的这样方式的输出。

4:同时这个工具 为我们写自动化工具监测 提供了良好的模板框架的借鉴。

综上所述 IOS下的hook有两种方式:

1:采用外部加载插入dylib的方式,这种以theos tweak工具为代表,并进一步演化出了introspy的监控输出日志的工具。

2:采用内部method swizzling来hook,代表工具即是cycript。这种工具需要采用句柄来一步步获取目标函数所在对象的指针,达到hook的目的。

第一种方式与我们预期的相匹配。

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

推荐阅读更多精彩内容