逆向工程 - Reveal、IDA、Hopper、HTTPS抓包 等
目录:
一、 iOS 如何做才安全
二、ipa文件
三、沙盒 中的数据
四、Reveal:查看 任何APP 的UI结构
五、反编译工具:IDA
六、反编译工具:Hopper Disassembler
七、抓包:https数据的解密
iOS应用的安全性 常常被大家忽视。
一、iOS 如何做才安全:
二、ipa文件
1、AppStore里的ipa包 可以通过 iTunes 下载到电脑。iOS8.3以下系统的非越狱的手机上,可以用MAC上的PP助手等软件,直接把手机上的ipa文件(包含沙盒里的存储文件)拷贝到电脑。
如果是越狱手机,都可以用PP助手、itools直接把ipa导出到电脑,并且可以用PP助手、iExplorer、itools这些工具 查看 iOS的系统目录。
MAC上安装 iExplorer软件,用iExplorer 可以看到 手机(非越狱也可以) 在 iTunes上备份的内容。
如果你在帮测试美女的手机 调试问题的时候, 在 iTunes上设置 “连接次iPhone时自动同步”(或者点击 备份到本地电脑),默认该手机上的照片、短信等内容都会备份到你的电脑上,用 iExplorer 就可以看到 这位 美女的隐私。
曾经有次不小心看到同事的隐私信息,所以现在都比较注意这块,避免引发误会。
2、拿到ipa文件后,解压缩,得到.app文件,右键显示包内容,可以看到里面的app中的图片、js、plist、静态H5页 等资源。
比如 你要 用微信里的默认表情包,解压微信的ipa包就可以获取到。
3、iOS的系统目录和MAC上的都类似(类unix系统)。iOS系统的目录图:
三、沙盒 中的数据
iPhone上 计算器的沙盒:
.app文件:应用程序本身的数据,打包时候的一些资源文件(如:图片、plist等文件)、可执行文件。这个目录不会被iTunes同步。
Documents :存储不可再生 的关键数据。不会被iTunes同步
Library:保存配置文件和其他一些文件。NSUserDefault 会存储到 Library下的Preferences中 的 plist文件中。可以直接打开,所以 也不要在 NSUserDefault 中存一些 关键数据,或者 存储的时候 进行 AES等方式的加密。
Library/Caches可以用来保存可再生的数据,比如网络请求,用户需要负责删除对应文件。
这个目录(除了Library/Caches外)会被iTunes同步
tmp:临时文件。不需要的时候,手动将其内文件删除。(当应用不再运行的时候,系统可能会将此目录清空。)
这个目录不会被iTunes同步
存到沙盒的数据都是不安全的,关键数据一定 要做加密存储。
四、Reveal 工具:查看 任何APP 的UI结构
1、不越狱的手机 可以用 Reveal 来查看自己APP的UI结构。不能查看其他APP的UI结构。这里就不再描述了。
2、越狱手机 上可以查看 任何APP的UI结构。
在越狱的手机上,在 Cydia 搜索并安装 Reveal Loader,如果搜索不到。就 点下面的“软件源”,选择“BigBoss”,选择“全部软件包”,点右边R的字母,去一个个找到 Reveal Loader,放心吧,你一定能找到的,我用的iOS7.1的系统测试的,没问题。
安装完成后,打开“设置”页面,下拉到最底部,点击“Reveal”
3、点击 Enabled Applictions 。然后选中 你想分析的APP。
4、确保iOS和OSX在同一个IP网段内。打开想分析的 APP,如果该APP已经启动,则关闭后再次启动
5、打开MAC上的 Reveal,选中 左上方列表里的 APP,比如QQ:
6、如果 Reveal 左上方 一直显示:No Connection。说明iPhone上的 Reveal Loader 没安装成功,需要配置一下。
首先从MAC上 用PP助手或 iTools 查看“文件系统(系统)”--》Library文件夹,看 Library文件夹下面有没有 RHRevealLoader 文件夹,如果没有,就 右键 新建文件夹,并修改名字为:RHRevealLoader。
在Mac 下打开已经安装的Reveal,选择标题栏Help下的Show Reveal Library in Finder 下的 iOS library 选项,将会显示如下界面:
将libReveal.dylib 文件通过PP助手拷贝到刚才创建的RHRevealLoader
文件夹下,就可以了。
然后 从手机上打开APP, 再 打开 MAC上的 Reveal 软件,左上方 就会出来 相关APP的选项。
再发个 淘宝中的天猫模块吧:
五、反编译工具:IDA
从AppStore下载的ipa都是加壳的(苹果 把开发者上传的ipa进行了加壳再放到AppStore中),加壳的ipa要先去壳,可以用clutch、dumpdecrypted、使用gdb调试 等解密去壳工具,这个我们后面再说。
如果你有越狱手机,可以直接 从 PP助手上下载ipa包,这个就是 脱壳后的。。
现在 我们先反编译 自己的APP,通过Xcode打包的APP 都是没加壳的,可以直接用来反编译。
新建一个项目,在 ViewController 的 viewDidLoad 方法里 加 几句代码。
- (void)viewDidLoad {
[super viewDidLoad]; UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(, , , )];
label.text = @"CeShiLabel007";
label.backgroundColor = [UIColor redColor];
[self.view addSubview:label];
}
将项目 打包,生成 ipa文件,下面我们就用IDA分析一下 ipa。
将ipa文件 解压后 得到.app文件:
下载IDA,并打开:
点击“New”按钮,选择刚才 解压的 .app文件。一路 点击“OK”或者“YES” 就可以了。
打开界面后,双击左侧的 viewDidLoad:
可以看出:代码中的 "CeShiLabel007" 字符串 完全可以反编译出来。所以尽量不要在代码里放一些 关键 的数据。可以通过接口来获取。或者 把 数据进行加密。
从上面的界面中 ,按下键盘的F5,可以 把汇编转成C语言代码。可读性很高。。
你如果试了 就发现你的F5不管用啊,那是因为 F5是一个插件Hex-Rays.Decompiler 的快捷键,这个插件是收费的、收费的。
六、反编译工具:Hopper Disassembler
下载 Hopper Disassembler软件。打开ipa解压的.app。 或者直接 把.app拖进去。
双击“viewDidLoad”: 可以看到 汇编代码, "CeShiLabel007" 字符串、setText方法 等。
点击右上角的 if(a) f(x)图标:
会弹出 类似源代码的 伪编码:
代码中可以清楚的看到 处理的逻辑。简单易懂,和看源代码没太大区别。。
下面 是我从越狱手机的PP助手上下载的 微信 的ipa 进行反编译,看下里面的 QQContactInfoViewController 页面 的 viewDidLoad方法里的代码 怎么写的,
截图:
如果 你把从 AppStore下载的 ipa包直接拖到 IDA或Hopper里,看到的就是乱码,刚才已经说过了。AppStore的ipa是加过壳的 。如图:
七、抓包-https
Charles 老版本和 新版本 抓取https 的配置 不一样。。
先看HTTP抓包:
- 打开Charles程序
- 查看Mac电脑的IP地址,如192.168.1.7
- 打开iOS设置,进入当前wifi连接,设置HTTP代理Group,将服务器填为上一步中获得的IP,即192.168.1.7,端口填8888
- iOS设备打开你要抓包的app进行网络操作
- Charles弹出确认框,点击Allow按钮即可
HTTPS 老版本抓包:
- 下载Charles证书http://www.charlesproxy.com/ssl.zip,解压后导入到iOS设备中(将crt文件作为邮件附件发给自己,再在iOS设备中点击附件即可安装;也可上传至dropbox之类的网盘,通过safari下载安装)
- 在Charles的工具栏上点击设置按钮,选择Proxy Settings…
- 切换到SSL选项卡,选中Enable SSL Proxying
- 这一步跟Fiddler不同,Fiddler安装证书后就可以抓HTTPS网址的包了,Charles 还 需要在上一步的SSL选项卡的Locations表单填写要抓包的域名和端口,点击Add按钮,在弹出的表单中Host填写域名,比如填api.instagram.com,Port填443
HTTPS 新版本抓包:
Charles新版本 的 Proxy Settings 选项里是没有 SSL选项卡的。在左侧的域名上点右键:Enable SSL Proxying,就可以用了。
然后 点击APP,会看到HTTPS解密的json数据。如果接口返回的数据 本身进行了加密,那你看到的还是乱码。
六、https - iOS 的代码如何写
2015年4月末,网爆流行IOS网络通信库AFNetworking SSL
漏洞,影响银联、中国银行、交通银行在内的2.5万个IOS应用,我来看下 各种网络写法对应的问题。
1、信任任何证书。在 AFNetworking 中 定义 allowInvalidCertificates 为true,表示 忽略所有证书。
AFHTTPRequestOperationManager * manager = [AFHTTPRequestOperationManager manager]; manager.securityPolicy.allowInvalidCertificates = YES;
这种情况下 用我们上面讲的方法,用Charles很容易 破解HTTPS加密的数据。
这种情况,一般是 因为 测试环境 用的不是 CA发的证书,需要忽略掉证书,所以把 allowInvalidCertificates 设为了 true。这个可以用 #ifdef DEBUG 来进行设置。
#ifdef DEBUG
manager.securityPolicy.allowInvalidCertificates = YES;
#endif
2、信任证书管理机构(CA)颁发的证书。
CA颁发的证书,据说这类的证书只需50美元就能买到。此类问题出在AFNetworking 2.5.2
及之前的版本,是AF的漏洞(详见新闻)。如果某IOS APP使用了此版本的开源通信库,在不安全Wifi网络中的,黑客 只要使用CA颁发的证书就可以对该APP的HTTPS加密数据进行监听或者篡改。
这个需要升级到 AFNetworking 最新版本,正好最新版本也声明兼容IPv6。
3、信任合法的证书、服务器和客户端双向认证。
这两种也都有办法破解,详见:Bypassing OpenSSL Certificate Pinning in iOS Apps、http://drops.wooyun.org/tips/7838
要正确的使用HTTPS才不会出现上面的问题。接口也一定要用自己的方式进行加密 才真正的放心,把小命完全放到对方(HTTPS)手里,命运就只能靠别人来摆布。。
欢迎关注我的 今日头条号 名称: 云端梦想科技
欢迎关注我的 微信公众号:dreams2999
逆向工程 - Reveal、IDA、Hopper、HTTPS抓包 等的更多相关文章
- 谈iOS抓包:Mac下好用的HTTP/HTTPS抓包工具Charles
在Mac下做开发,用Fiddler抓包由于离不开Windows比较痛苦,还好有Charles,到官网http://www.charlesproxy.com/可下载到最新版本(若不支持rMBP可拖到Re ...
- 【burp】配置HTTPS抓包方法
以Chrome为例,配置HTTPS抓包方法 1.获取破解版的burp,将BurpLoader.jar和burpsuite_pro_v1.5.18.jar放到一个路径下 2.在cmd里进入上述两个jar ...
- Charles中如何对https抓包
前言:下面介绍关于Charles中如何对https抓包 1.在默认没有相关设置HTTPS需要设置相关操作的时候,会出现下面的情况: 2.下面就是设置SSL Proxying,然后443是默可用的端口 ...
- fiddler Android下https抓包全攻略
fiddler Android下https抓包全攻略 fiddler的http.https的抓包功能非常强大,可非常便捷得对包进行断点跟踪和回放,但是普通的配置对于像招商银行.支付宝.陌陌这样的APP ...
- charles支持https抓包
前言 最近发现访问项目的网页偶尔会被插入广告,很有可能是运营商劫持流量插入进去的,我在家里使用的长城宽带打开非加密的网页,时不时会弹个广告窗,这个也算是中国特色了.因此计划项目上线https,抓包分析 ...
- 移动端https抓包那些事--初级篇
对于刚刚进入移动安全领域的安全研究人员或者安全爱好者,在对手机APP进行渗透测试的时候会发现一个很大的问题,就是无法抓取https的流量数据包,导致渗透测试无法继续进行下去. 这次给大家介绍一些手机端 ...
- 移动端https抓包那些事--进阶篇
上一次和大家介绍了手机端https抓包的初级篇,即在手机未root或者未越狱的情况下如何抓取https流量,但是当时分析应用时会发现,好多应用的https的流量还是无法抓取到,这是为什么呢? 主要原因 ...
- charles支持https抓包配置
自从公司站点全部启用https后,使用charles就不能像以前那样愉快的抓包啦!不过没关系,这里教你怎么配置charles,使其支持https抓包.之前有一篇介绍charles的使用,参考这篇:ht ...
- Mac 下 android/iOS https抓包
一.Charles简介 Charles,是用Java开发的,所以跨平台,不仅可以在Mac上使用,Linux以及Window下都是可以使用的,当然需要安装JDK,才能运行,但目前是收费的. 二.下载 官 ...
- 和我一起学习爬虫之HTTP/HTTPS抓包工具--Fiddler
HTTP/HTTPS抓包工具--Fiddler Fiddler[ˈfɪdlə(r)] 1. HTTP代理神器Fiddler Fiddler是一款强大Web调试工具,它能记录所有客户端和服务器的HTTP ...
随机推荐
- .NET Core中的认证管理解析
.NET Core中的认证管理解析 0x00 问题来源 在新建.NET Core的Web项目时选择“使用个人用户账户”就可以创建一个带有用户和权限管理的项目,已经准备好了用户注册.登录等很多页面,也可 ...
- 使用 Nodejs 搭建简单的Web服务器
使用Nodejs搭建Web服务器是学习Node.js比较全面的入门教程,因为要完成一个简单的Web服务器,你需要学习Nodejs中几个比较重要的模块,比如:http协议模块.文件系统.url解析模块. ...
- App你真的需要么
随着智能手机.移动路联网的普及,APP火的一塌糊涂,APP应用可谓五花八门,街上经常看到各种推广:扫码安装送东西,送优惠券.仿佛一夜之间一个企业没有自己的APP就跟不上时代了. 有时我在想:APP,你 ...
- 算法与数据结构(七) AOV网的拓扑排序
今天博客的内容依然与图有关,今天博客的主题是关于拓扑排序的.拓扑排序是基于AOV网的,关于AOV网的概念,我想引用下方这句话来介绍: AOV网:在现代化管理中,人们常用有向图来描述和分析一项工程的计划 ...
- 对Thoughtworks的有趣笔试题实践
记得2014年在网上看到Thoughtworks的一道笔试题,当时觉得挺有意思,但是没动手去写.这几天又在网上看到了,于是我抽了一点时间写了下,我把程序运行的结果跟网上的答案对了一下,应该是对的,但是 ...
- JavaScript学习笔记(四)——jQuery插件开发与发布
jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定好用, ...
- 《动手实现一个网页加载进度loading》
loading随处可见,比如一个app经常会有下拉刷新,上拉加载的功能,在刷新和加载的过程中为了让用户感知到 load 的过程,我们会使用一些过渡动画来表达.最常见的比如"转圈圈" ...
- Java的异步HttpClient
上篇提到了高性能处理的关键是异步,而我们当中许多人依旧在使用同步模式的HttpClient访问第三方Web资源,我认为原因之一是:异步的HttpClient诞生较晚,许多人不知道:另外也可能是大多数W ...
- MVVM大比拼之knockout.js源码精析
简介 本文主要对源码和内部机制做较深如的分析,基础部分请参阅官网文档. knockout.js (以下简称 ko )是最早将 MVVM 引入到前端的重要功臣之一.目前版本已更新到 3 .相比同类主要有 ...
- MapReduce剖析笔记之五:Map与Reduce任务分配过程
在上一节分析了TaskTracker和JobTracker之间通过周期的心跳消息获取任务分配结果的过程.中间留了一个问题,就是任务到底是怎么分配的.任务的分配自然是由JobTracker做出来的,具体 ...