腾讯Bugly
2.7k
【腾讯Bugly干货分享】iOS 黑客技术大揭秘
ios 黑客
发布于 2016-07-28
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:
“8小时内拼工作,8小时外拼成长”这是大家共同的理想。除了每天忙于工作外,我们都希望能更多地区吸收领域内的新知识与新技能,从而走向人生巅峰。
Dev Club 是一个交流移动开发技术,结交朋友,扩展人脉的社群,成员都是经过审核的移动开发工程师。每周都会举行嘉宾分享,话题讨论等活动。
上一期我们邀请了腾讯 WXG iOS 开发工程师“姚海波”分享了《微信读书 iOS性能优化》。
本期,我们邀请了腾讯 CDG iOS 开发工程师“何兆林”为大家分享《iOS黑客技术大揭秘》。
分享内容简介在黑客的世界里,没有坚不可破的防护系统,也没有无往不胜、所向披靡的入侵利器,有时候看似简单的问题,破解起来也许花上好几天、好几个月,有时候看似很 low 的工具往往能解决大问题;我们以实现微信自动抢红包为引子,逐步展开 iOS 黑客入侵常用的几种武器,并简单的讲解一些常用的反入侵策略,以及如何破解反入侵策略,虽然抢红包的破解代码网上有很多,但是我们要讲的是这些代码是用什么工具分析出的,为什么要这样写?
内容大体框架
让目标程序破茧而出 -- dumpdecrypted
运行时分析 -- cycript
追踪神器 -- logify
反汇编工具 -- hopper
断点调试工具 -- lldb+debugserver
注入工具 -- insert_dylib + install_name_tool
分享人介绍: 何兆林 通讯充值与彩票业务部 iOS开发工程师。
负责过的产品:QQ彩票、QQ电影票 iOS客户端,目前主要负责 QQ彩票 iOS客户端的开发。
下面是本期分享内容整理。
大家晚上好,我是来自 CDG的 jolinhe,目前在做qq彩票项目,负责 iOS侧的插件化和整体架构。
越狱和入侵是我的业余爱好,正好08和09年的时候,在网龙积累了一些越狱开发经验,所以今天跟大家分享一下 iOS入侵方面的工具和手段。
为了避免纸上谈兵:
第一部分我们就拿微信来开刀,讲解一下如何运用这些工具来找到和实现自动抢红包功能的;
第二部分我们再总结一下常用的入侵原理和反入侵方法。
开始之前,我们需要把环境搞起,硬件方面,需要:
一台越狱手机
一台装了开发环境的 Mac电脑
软件方面内容提纲已经列出来了,需要注意的是它们有一些是手机端的,一些是 PC端的,用到的时候我会细讲。
群里不乏老司机,这里我假设大家对于 ssh、theos、class_dump、hook这些工具和技术都已经有所涉猎了,如果有不清楚的,欢迎私下交流。
一、微信实现自动抢红包功能言归正传,要实现自动化抢红包,首先我们需要理清思路:
第一步:需要拦截微信的消息流,在哪里拦截?
第二步:在这些信息流中分辨出哪些消息是红包?
第三步:在合适的地方插入自己的“抢”红包代码。
1、让目标程序破茧而出——dumpdecrypted因为直接从 AppStore下载下来的二进制文件都是加了壳的,所以为了让它的内核破茧而出,我们需要砸壳操作。
所以第一个工具就是 dumpdecrypted,这个工具是手机端的,可以通过 cydia安装,安装后文件路径是:
/usr/lib/dumpdecrypted.dylib在实际使用时,可以通过 pp助手把这个文件 copy到目标程序的 documents目录,然后ssh进手机终端,cd到 documents目录,执行:
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib WeChatPath执行完后会再 documents目录生成一个砸完壳后的二进制文件
2、运行时分析——cycript砸完壳之后,我们再 dump出头文件,但是微信的类太多了,头文件有几百个,如此多的头文件,让人眼花缭乱,所以要找到突破口,我们得缩小范围,我喜欢用的思路是从 ui入手,先找到微信对话界面的 controller,然后再追踪 controller中对应的消息处理函数。
这样第二个工具 cycript 隆重出场了,它也是个手机端的工具,用于查看 app运行时数据,大伙儿可以通过 cydia安装,安装完之后,ssh到越狱手机的终端。
先找到微信的进程id:ps aux | grep WeChat 再执行:cycript -p 微信的pid完成了注入,进入到 cycript提供的终端。
这时候进入在手机上进入微信的聊天窗口,例如:
然后在 cycript的终端输入:
UIApp.keyWindow.recursiveDescription().toString()结果如下: