1.2ios应用逆向工程的作用
1.2.1安全相关的ios逆向工程
代码语言:javascript复制1.评定安全等级
2.逆向恶意软件
3.检查软件后门
4.去除软件使用限制
1.2.2开发相关的ios逆向工程
代码语言:javascript复制1.逆向系统API
对于不上架的app 面向cydia
2.借鉴别的软件
比较有意思的软件 录音软件Audio Recored
老牌软件架构设计合理 借鉴他们使用哪个的高级技术 如WhatsAPP
1.3ios应用逆向工程的过程
代码语言:javascript复制系统分析
整体上观察目标程序行为特征、文件的组织架构
代码分析
软件的核心代码还原
1.3.1系统分析
代码语言:javascript复制进行操作观察行为特征
查看Documents目录 查看数据库文件
1.3.2代码分析
代码语言:javascript复制对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,