逆向工程 - Reveal、IDA、Hopper、HTTPS抓包 等

目录:html

1、 iOS 如何作才安全ios

2、ipa文件json

3、沙盒 中的数据api

4、Reveal:查看 任何APP 的UI结构sass

5、反编译工具:IDA安全

6、反编译工具:Hopper Disassembler 服务器

7、抓包:https数据的解密微信

 

iOS应用的安全性 经常被你们忽视。网络

1、iOS 如何作才安全:app

详见《iOS如何作才安全》

 

2、ipa文件

一、AppStore里的ipa包 能够经过 iTunes 下载到电脑。iOS8.3如下系统的非越狱的手机上,能够用MAC上的PP助手等软件,直接把手机上的ipa文件(包含沙盒里的存储文件)拷贝到电脑。

若是是越狱手机,均可以用PP助手、itools直接把ipa导出到电脑,而且能够用PP助手、iExplorer、itools这些工具 查看 iOS的系统目录。

 

MAC上安装 iExplorer软件,用iExplorer 能够看到 手机(非越狱也能够) 在 iTunes上备份的内容。

若是你在帮测试美女的手机 调试问题的时候, 在 iTunes上设置 “链接次iPhone时自动同步”(或者点击 备份到本地电脑),默认该手机上的照片、短信等内容都会备份到你的电脑上,用 iExplorer 就能够看到 这位 美女的隐私。

曾经有次不当心看到同事的隐私信息,因此如今都比较注意这块,避免引起误会。

 

二、拿到ipa文件后,解压缩,获得.app文件,右键显示包内容,能够看到里面的app中的图片、js、plist、静态H5页 等资源。

好比 你要 用微信里的默认表情包,解压微信的ipa包就能够获取到。

 

三、iOS的系统目录和MAC上的都相似(类unix系统)。iOS系统的目录图:

 

 

3、沙盒 中的数据

iPhone上 计算器的沙盒:

.app文件:应用程序自己的数据,打包时候的一些资源文件(如:图片、plist等文件)、可执行文件。这个目录不会被iTunes同步。

Documents :存储不可再生 的关键数据。不会被iTunes同步

Library:保存配置文件和其余一些文件。NSUserDefault 会存储到 Library下的Preferences中 的 plist文件中。能够直接打开,因此 也不要在 NSUserDefault 中存一些 关键数据,或者 存储的时候 进行 AES等方式的加密。

Library/Caches能够用来保存可再生的数据,好比网络请求,用户须要负责删除对应文件。 

这个目录(除了Library/Caches外)会被iTunes同步

tmp:临时文件。不须要的时候,手动将其内文件删除。(当应用再也不运行的时候,系统可能会将此目录清空。) 
这个目录不会被iTunes同步

存到沙盒的数据都是不安全的,关键数据必定 要作加密存储。

 

4、Reveal 工具:查看 任何APP 的UI结构

一、不越狱的手机 能够用 Reveal 来查看本身APP的UI结构。不能查看其余APP的UI结构。这里就再也不描述了。

 

 二、越狱手机 上能够查看 任何APP的UI结构。

在越狱的手机上,在 Cydia 搜索并安装 Reveal Loader,若是搜索不到。就 点下面的“软件源”,选择“BigBoss”,选择“所有软件包”,点右边R的字母,去一个个找到 Reveal Loader,放心吧,你必定能找到的,我用的iOS7.1的系统测试的,没问题。

安装完成后,打开“设置”页面,下拉到最底部,点击“Reveal”

 

三、点击 Enabled Applictions 。而后选中 你想分析的APP。

四、确保iOS和OSX在同一个IP网段内。打开想分析的 APP,若是该APP已经启动,则关闭后再次启动

五、打开MAC上的 Reveal,选中 左上方列表里的 APP,好比QQ:

 

六、若是 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的选项。

再发个 淘宝中的天猫模块吧:

 

 

5、反编译工具: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(50, 70, 200, 100)];
    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 的快捷键,这个插件是收费的、收费的。

 

6、反编译工具:Hopper Disassembler

下载 Hopper Disassembler软件。打开ipa解压的.app。 或者直接 把.app拖进去。

双击“viewDidLoad”: 能够看到 汇编代码, "CeShiLabel007" 字符串、setText方法 等。

 

点击右上角的 if(a) f(x)图标:

会弹出 相似源代码的 伪编码:

 

 

代码中能够清楚的看到 处理的逻辑。简单易懂,和看源代码没太大区别。。

下面 是我从越狱手机的PP助手上下载的 微信 的ipa  进行反编译,看下里面的 QQContactInfoViewController 页面 的 viewDidLoad方法里的代码 怎么写的,

截图:

 

若是 你把从 AppStore下载的 ipa包直接拖到 IDA或Hopper里,看到的就是乱码,刚才已经说过了。AppStore的ipa是加过壳的 。如图:

 

 

7、抓包-https

Charles 老版本和 新版本 抓取https 的配置 不同。。

先看HTTP抓包:

  1. 打开Charles程序
  2. 查看Mac电脑的IP地址,如192.168.1.7
  3. 打开iOS设置,进入当前wifi链接,设置HTTP代理Group,将服务器填为上一步中得到的IP,即192.168.1.7,端口填8888
  4. iOS设备打开你要抓包的app进行网络操做
  5. Charles弹出确认框,点击Allow按钮便可

HTTPS 老版本抓包:

  1. 下载Charles证书http://www.charlesproxy.com/ssl.zip,解压后导入到iOS设备中(将crt文件做为邮件附件发给本身,再在iOS设备中点击附件便可安装;也可上传至dropbox之类的网盘,经过safari下载安装)
  2. 在Charles的工具栏上点击设置按钮,选择Proxy Settings…
  3. 切换到SSL选项卡,选中Enable SSL Proxying
  4. 这一步跟Fiddler不一样,Fiddler安装证书后就能够抓HTTPS网址的包了,Charles 还 须要在上一步的SSL选项卡的Locations表单填写要抓包的域名和端口,点击Add按钮,在弹出的表单中Host填写域名,好比填api.instagram.com,Port填443

HTTPS 新版本抓包:

  Charles新版本 的 Proxy Settings 选项里是没有 SSL选项卡的。在左侧的域名上点右键:Enable SSL Proxying,就能够用了。

 

而后 点击APP,会看到HTTPS解密的json数据。若是接口返回的数据 自己进行了加密,那你看到的仍是乱码。

 

6、https - iOS 的代码如何写

2015年4月末,网爆流行IOS网络通讯库AFNetworking SSL漏洞,影响银联、中国银行、交通银行在内的2.5万个IOS应用,我来看下 各类网络写法对应的问题。

一、信任任何证书。在 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

 

二、信任证书管理机构(CA)颁发的证书。

CA颁发的证书,听说这类的证书只需50美圆就能买到。此类问题出在AFNetworking 2.5.2及以前的版本,是AF的漏洞(详见新闻)。若是某IOS APP使用了此版本的开源通讯库,在不安全Wifi网络中的,黑客 只要使用CA颁发的证书就能够对该APP的HTTPS加密数据进行监听或者篡改。

这个须要升级到 AFNetworking 最新版本,正好最新版本也声明兼容IPv6。

 

三、信任合法的证书、服务器和客户端双向认证。

这两种也都有办法破解,详见:Bypassing OpenSSL Certificate Pinning in iOS Appshttp://drops.wooyun.org/tips/7838

 

要正确的使用HTTPS才不会出现上面的问题。接口也必定要用本身的方式进行加密 才真正的放心,把小命彻底放到对方(HTTPS)手里,命运就只能靠别人来摆布。。

 

欢迎关注个人 今日头条号 名称: 云端梦想科技  

欢迎关注个人 微信公众号:dreams2999

相关文章
相关标签/搜索