1.2ios应用逆向工程的作用

1.2.1安全相关的ios逆向工程

1
2
3
4
1.评定安全等级
2.逆向恶意软件
3.检查软件后门
4.去除软件使用限制

1.2.2开发相关的ios逆向工程

1
2
3
4
5
1.逆向系统API 
对于不上架的app 面向cydia
2.借鉴别的软件
比较有意思的软件 录音软件Audio Recored
老牌软件架构设计合理 借鉴他们使用哪个的高级技术 如WhatsAPP

1.3ios应用逆向工程的过程

1
2
3
4
系统分析
整体上观察目标程序行为特征、文件的组织架构
代码分析
软件的核心代码还原

1.3.1系统分析

1
2
进行操作观察行为特征
查看Documents目录 查看数据库文件

1.3.2代码分析

1
2
对app的二进制文件进行代码分析
推导出这个app的设计思路、内部算法、实现细节

ios逆向工程论坛

http://bbs.iosre.com

1.4ios应用逆向工程的工具

监测工具、反汇编工具(disassembler)、调试工具(debugger),以及开发工具

1.4.1 监测工具

起到嗅探、监测、记录目标程序行为

如ui变化、网络活动、文件访问等

常用的监测工具Reveal、snoop-it、introspy等

Reveal ui层面切入代码层面

1.4.2 反汇编工具

二进制文件作为输入,经过处理后输出这个文件的汇编代码

IDA和Hopper

1.4.3 调试工具

LLDB

1.4.4 开发工具

Xcode 最常用的开发工具

越狱ios

-基于Xcode的IOSOpenDev

-命令行Theos 可以突破AppStore

第2章 越狱ios平台简介

未越狱的ios是个封闭的黑盒子,直到evad3rs、盘古、太极等团队把ios越狱

2.1 ios系统结构

2.1.1ios目录结构简介

ios是由osx演化而来,osx基于unix操作系统

OSX在此基础上形成了自己的hier(7)框架

类UNIX操作系统的常见目录结构:

./:根目录,以斜杠表示,其他所有文件和目录在根目录下展开。

./bin:”binnary”的简写,存放提供用户级基础功能的二进制文件,如ls、ps等。

./boot:存放能使系统成功启动的所有文件。ios中此目录为空

./dev:“device”的简写,存放BSD设备文件。每个文件代表系统的一个块设备或字符设备,一般来说,“块设备”以块为单位传输数据,如调制解调器。

./sbin:“system binaries”的简写,存放提供系统级基础功能的二进制文件,如netstat、reboot等

./etc:“Et Cetera”的简写存放系统脚本及配置文件,如passwd、hosts等。在ios中,/etc是一个符号链接,实际指向/private/etc.

./lib:存放系统库文件、内核模块及设备驱动等。ios中此目录

./mnt:“mount”的简写,存放临时的文件系统挂载点。ios中此目录为空

./private:存放两个目录,分别是/private/etc和/private/var。

./tmp:临时目录。在ios中,/tmp是一个符号链接,实际指向/private/var/tmp.

./usr:包含了大多数用户工具和程序。/usr/bin包含那些/bin和/sbin中未出现的基础功能,如nm、killall等;/usr/include包含所有的标准c头文件;/usr/lib存放库文件。

./var:“variable”的简写,存放一些经常更改的文件,比如日志、用户数据、临时文件等。其中/var/mobile和/var/root分别存放了mobile用户和root用户的文件,是重点关注的目录。

上述目录中的内容多用于系统层,逆向难度较大

作为ios开发者,日常操作所对应的功能模块大多来自ios的独有目录

./Applications:存放所有的系统App和来自于Cydia的App,不包括StoreApp

./Developer:如果一台设备连接Xcode后被指定为调试用机Xcode就会在ios中生成这个目录,其中会含有一些调试需要的工具和数据

./Library:存放一些提供系统支持的数据,其中/Library/MobileSubstrate下存放了所有基于CydiaSubstrate(原名MobileSubstrate)的插件

./System/Library:ios文件系统中最重要的目录之一,存放大量系统组件

./System/Library/Frameworks和/System/Library/PrivateFrameworks:存放ios中的各种framework,