iOS逆向实践记录-让非6s机型在SpringBoard拥有3DTouch

首先先给我这困难的语言表达能力道个歉哈,真的尽力了。

最近才接触不久的逆向工程,刷夜,爆肝,把《iOS应用逆向工程》这本书的工具,全部看了一遍,并且尝试了一遍,感觉需要点什么。 那就是实践!  最近6s手机出了3DTouch,无奈手中没有这款机型,恰好最近对逆向小有心得,又听说过已经有插件能实现同样的需求,证明确实有可行性,于是开动。根据点击的判断和出现,初步感觉,这应该不需要多少行代码就能搞定,应该只要添加一个手势,或者是更改一个手势的点击事件,让系统认为发生了3DTouch点击事件,就可以了。

在这里我还是要推荐下我自己建的iOS开发学习群:680565220,群里都是学ios开发的,如果你正在学习ios ,小编欢迎你加入,今天分享的这个案例已经上传到群文件,大家都是软件开发党,不定期分享干货(只有iOS软件开发相关的),包括我自己整理的一份2018最新的iOS进阶资料和高级开发教程

所需工具: cycript,openSSH,class-dump

测试环境:iOS9.0.2,iPhone5s

备注:因为自身没有3DTouch,所以需要下载一个插件,让机器拥有3DTouch功能,我使用的是forcy,通过覆盖长按手势,实现

通过查阅官方文档,得到关键词  Shortcut Menu peek pop

这个词将来就是要在找关键方法时刻所要用到的

现在开始!

通过ssh连接到手机,然后将cycript注入到SpringBoard

huangjipingde-iPhone:~ root# cycript -p SpringBoard

首先 先隆重介绍1个方法,2个函数

1方法 [view recursiveDescription]  该方法可以当做是Reveal的文字版,用来查看当前页面的布局

2函数,原理均是runtime,但是第二个没有怎么看懂。。。

1. printMethods 打印出该类所有的方法,后边接的是实现的地址,在这儿补充一下,如果想对某个方法打断点,但是又不想使用ida查看方法偏移,可以直接在这实现的地址处,添加断点,虽然不知道断在什么地方,但是可以肯定一定是在执行该方法的时候。效果如下图:

iOS开发学习群:680565220

2. tryPrintIvars打印出对象所有的属性,效果如下图:


准备工作都做好了,将两个函数都先输入进去

因为最后的目标是应用图标,所以,现在我们从主界面开始着手打印它的UI布局

1    [[UIApplication sharedApplication].keyWindow.rootViewController.view recursiveDescription]

iOS开发学习群:680565220

然后出来了一大片,红呦呦的代码,看着都眼睛疼,4点钟时看得眼睛都瞎了啊。此时应想,主界面可以滚动,是一个scrollView,是scrollView就得有contentSize,然后一看手机的页面,总共有5页,由于5s机型的宽度是320,所以这时候可以大胆猜测它的contentSize的最大宽度是1600,然后commond+F大法

准确命中,同时,还注意到,它的contentOffset是960又此时我的页面正是第4页,基本锁定目标,查找frame的坐标是960,0的view,此时可以得到大量信息了,SBRootIconListView,这个就是用来装一页所有图标的View,SBIconListModel这个里边,我猜是装了该view里边的模型信息,注意,11 icons,正好是我们页面所有的图标数,此时再看后边SBIconView的size 62,62  这和图标尺寸的差距只有2个点,基本锁定,它就是我们要找的目标

此时,让我们找到是什么在处理SBIconView的事件,我们所知道的,view一般是用来展示的,事件的发生一般都会交给代理来负责。让我们使用nextResponder,或者寻找他们的代理,来定位到一个controller文件,很幸运,直接一步就找到了,就是它:SBIconController!

此时,我们可以class-dump出SpringBoard的头文件了,去查看一下它的里边都有些什么方法和属性,如果想偷懒,去github直接搜索也行。。。

根据关键词和方法名译的意思大致锁定出来以下几个方法

ps:  这儿的char 是BOOL类型

自己写一个tweak,hook所有的这些函数,给他们所有的实现之前加上一个NSLog(),查看调用的顺序,和传进来的值的类型。 以及一次Peek事件所关联到了哪些方法。


此时我们拿手机进行一次长按操作,使其弹出ShotcutMenu菜单,然后在openSSH中查看系统日志grep ZZT3D /var/log/syslog查看一下,该事件处理分别使用了那几个方法。

因为是要欺骗系统,所以方法应该是在前方,初步定位到这3个方法,第一个顾名思义返回值就是能不能显示shotcutMenu,第二个,我们可以看到,这里传进来了一个手势,通过这手势的信息,基本可以推断,这个就是插件作者用来欺骗系统的手势,而该方法,就是手势的target方法,第三个,根据意思可以得知,从XXiconView,是否立即显示。核心就在于这儿了。最后,我们再打印一遍SBIconView的所有属性,用来确认一下

继续搜索关键词,果然又有大收获_shortcutMenuPeekGesture有一个如此手势,里边的东西的手势。

猜测得到了极大的肯定,下面就开始编写tweak了

由于是要给每一个iconView都添加手势,并且只添加一次,所以翻看了iconView头文件,查看他的init方法,选择了在initWithContentType中初始化。

贴上Tweak.xm的源码

关于代码的编写,中间也踩过不少坑,比如_revealMenuForIconView中的yes,no的设置,还好一开始猜的时候就全部手动赋值。

至于手势为什么传值需要如此怪异,因为检测发现原方法只识别长按手势,并不识别轻扫手势,但是因为个人习惯,不想覆盖系统手vc轻松搞定,现在轻扫一下手机!出现了意想之中的弹窗!




至此,全部结束,感谢您看完全部.欢迎关注微信公众号:程序员大牛。

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