尊驾的浏览器太老土啦!无法满足impress.js的要求,现在你只能看到一些最朴素的演示画面。

为了欣赏漂亮的演示画面,请使用先进、优雅、快速、美丽、免费的现代浏览器,比如 Chrome, Safari or Firefox

iOS 逆向工程

应用安全

@aozhimin

大纲

简介

什么是 iOS 逆向工程

软件的逆向工程指的是通过分析一个程序或系统的功能、结构或行为,将它的技术实现或设计细节推导出来的过程。当我们因为工作需要,或是对一个软件的功能很感兴趣,却又拿不到它的源代码时,往往可以通过逆向工程的方式对它进行分析。


照着配方包饺子,是正向开发 吃着饺子推配方,是逆向工程

配方:API 调用顺序
效果:实现原理

iOS 逆向工程的作用


固若金汤的城堡

上帝模式

iOS 逆向分析方法

工具集

Mac 工具集

class-dump

class-dump 是用来 dump 目标对象的 class 信息的工具。它利用 Objective-C 语言的 runtime 特性,将存储在 Mach-O 文件中的 @interface 和 @protocol 信息提取出来,并生成相应的 .h 文件

Theos

Theos 是一个基于 Unix 平台(OS X,iOS…)和大多数的 Linux 平台下进行越狱开发的集成开发环境,由 Dustin Howett 大神开发并开源到 GitHub 上,它的特点是搭建简单、Logos语法简单、编译发布简单

Theos

编译打包,这个过程可能会遇到问题,比如 make package 过程,可以通过 make package message=yes 输出详细错误信息

iOSOpenDev

iOSOpenDev 是基于 Theos 开发的,被整合到 Xcode 中,编译更方便,不用自己写 Makefile,另外同样提供了很多模版

iOSOpenDev 提供的模板

iOSOpenDev

安装过程中可能遇到的问题

IDA

IDA 是逆向工程中最负盛名的神奇之一,它可以把 class-dump 的点连成线,它支持 Windows、Linux 和 Mac OS X 的多平台反汇编器/调试器,功能非常强大

IDA 启动界面

IDA

IDA 主界面

Hopper Disassembler

Hopper,它有Mac OS X和 Linux 版本,能够反汇编32/64位 Mac,Linux,Windows 和 iOS 可执行文件。

Hopper Disassembler

Hopper 生成的伪代码

MachOView

MachOView 是可视化的 Mach-O 文件浏览器,它提供了浏览和编辑 Intel 和 ARM 二进制的功能

MachOView 主界面

MachOView

MachOView 查看加密信息

iOS 工具集

iFile

iFile 是运行于 iOS 上的文件管理软件,它能实现文件的各类操作,甚至可以安装 deb 插件, 安装源是 BigBoss。

MobileTerminal

MobileTerminal 是开源的 iOS 版 Terminal,比较实用的场景是在没有计算机的情况下结合 Cycript 进行代码测试。

AppCrackr dumpdecrypted 和 Clutch

从 AppStore 获取 IPA 文件无法直接通过 class-dump 获取 .h 文件,也无法通过前面介绍的静态分析工具 IDA 进行反汇编。这种情况我们就需要对文件砸壳,AppCrackr 就是一款对 App 破解去壳的工具,AppCrackr 的成功率要远远高于 dumpdecrypted 和 Clutch。但正是由于它功能太过强大,引起公愤,导致其核心功能被迫关闭。

解密二进制文件

解密二进制文件

dumpdecrypted 脱壳 App 的过程

Cycript

Cycript 是一门脚本语言,可以看做Objective-JavaScript,它可以很方便的帮忙测试函数和验证一下猜想。

GDB 和 LLDB

LLDB 是一个有着 REPL 的特性和 C++ ,Python 插件的开源调试器。LLDB 绑定在 Xcode 内部,存在于主窗口底部的控制台中。

iOS 逆向开发的套路

iOS 应用安全

网络安全

截获网络请求,破解通信协议并模拟客户端登录,伪造用户行为,对 iOS 用户数据造成危害

怎么防?

本地文件和数据安全

移动端本地文件中常常会存储一些敏感信息,包括 NSUserDefaults,Plist,缓存和日志文件,而如果没有做好防御措施,就会造成数据泄露

怎么防?

代码安全

                        Q && A