《iOS应用逆向工程:分析与实战》
《iOS应用逆向工程:分析与实战》
基本信息
作者: 沙梓社 吴航 刘瑾
丛书名: 信息安全技术丛书
出版社:机械工业出版社
ISBN:9787111450726
上架时间:2014-1-10
出版日期:2014 年1月
开本:16开
页码:1
版次:1-1
所属分类:计算机

更多关于》》》 《iOS应用逆向工程:分析与实战》
内容简介
书籍
计算机书籍
《ios应用逆向工程:分析与实战》是ios应用逆向工程方面的权威著作,三位作者都是ios领域内的专家,拥有扎实的理论知识和丰富的实践经验。本书内容以工具+代码的形式全面、系统地展开知识点,由浅入深,图文并茂地带着读者一步步探索常规ios app之外的世界。
《ios应用逆向工程:分析与实战》分为四大部分,分别是概念、工具、理论和实战。前三部分介绍ios逆向分析领域的背景、知识体系,以及相应的工具集、理论知识;第四部分则通过4个实际案例来将前面的知识以实战的方式展开。第一部分为概念篇,简单介绍ios逆向分析的概念以及ios平台系统架构。第二部分为工具篇,介绍一系列基于mac和ios平台的配套工具,并且重点讲解其中的class-dump、theos、reveal、ida、gdb等5个工具的使用方法,前3个侧重于使用,后2个侧重于分析。第三部分为理论篇,主要讲述ios逆向/越狱方向的进阶必备理论知识。第四部分为实战篇,通过对3个app store app及1个系统app进行逆向分析的实战操作,让读者能够了解并同步实践已掌握的知识。
目录
《ios应用逆向工程:分析与实战》
推荐序一
推荐序二
自序
前言
第一部分 概念篇
第1章 ios逆向工程简介 2
1.1 ios软件逆向工程的要求 2
1.2 ios软件逆向工程的作用 2
1.2.1 与安全相关的ios逆向工程 4
1.2.2 与开发相关的ios逆向工程 5
1.3 ios软件逆向工程的一般过程 6
1.3.1 系统分析 7
1.3.2 代码分析 7
1.4 ios软件逆向工程用到的工具 8
1.4.1 监测工具 8
1.4.2 开发工具 9
1.4.3 反编译器 9
1.4.4 调试器 10
1.5 小结 11
第2章 越狱ios平台简介 12
2.1 ios系统架构 12
2.1.1 ios目录结构 13
2.1.2 ios文件权限 15
2.2 ios程序类型 16
2.2.1 application 16
2.2.2 dynamic library 19
2.2.3 daemon 19
2.3 小结 20
第二部分 工具篇
第3章 mac工具集 22
3.1 class-dump 22
3.1.1 class-dump介绍及下载 22
3.1.2 class-dump使用演示 23
3.1.3 关于class-dump的补充说明 25
3.2 theos 25
3.2.1 theos简介 25
3.2.2 theos安装及编译 26
3.2.3 theos用法简介 28
3.2.4 theos开发tweak示例 47
3.3 reveal 49
3.3.1 reveal简介 49
3.3.2 reveal安装及功能扩展 50
3.4 ida 55
3.4.1 ida简介 55
3.4.2 ida使用说明 56
3.4.3 ida分析示例 65
3.5 其他工具 68
3.5.1 itools 68
3.5.2 dyld_decache 69
3.5.3 mesasqlite 69
3.6 小结 70
第4章 ios工具集 71
4.1 sbsettings 71
4.2 mobilesubstrate 72
4.3 openssh 73
4.4 gdb 74
4.4.1 gdb简介 74
4.4.2 gdb的使用说明 74
4.5 cycript 85
4.6 其他常用工具 88
4.6.1 bigboss recommended tools 88
4.6.2 appcrackr 88
4.6.3 ifile 89
4.6.4 mobileterminal 89
4.6.5 vi improved 90
4.6.6 sqlite 90
4.6.7 top 91
4.6.8 syslogd 92
4.7 小结 92
第三部分 理论篇
第5章 objective-c相关的ios逆向理论基础 94
5.1 tweak的作用原理 94
5.1.1 objective-c语言的特性 94
5.1.2 mobilesubstrate 96
5.2 tweak的编写套路 97
5.2.1 灵感的来源 98
5.2.2 分析文件,寻找切入点 99
5.2.3 定位目标函数 102
5.2.4 测试函数功能 104
5.2.5 解析函数参数 105
5.2.6 class-dump的局限性 108
5.3 实例演示 108
5.3.1 得到灵感 108
5.3.2 分析文件 109
5.3.3 定位函数 115
5.3.4 测试函数 117
5.3.5 编写实例代码 117
5.4 小结 119
第6章 arm汇编相关的ios逆向理论基础 120
6.1 arm汇编基础 120
6.1.1 基本概念 121
6.1.2 arm/thumb指令解读 123
6.1.3 arm调用规则 129
6.2 在ida中分析目标文件 131
6.2.1 分析函数实现细节 132
6.2.2 验证分析结果 139
6.3 在gdb中分析目标文件 142
6.3.1 跟踪代码执行流程 142
6.3.2 动态更改代码 147
6.4 小结 157
第四部分 实战篇
第7章 实战1:去除oplayer lite的广告 160
7.1 oplayer lite简介 160
7.2 分析源代码结构,并定位广告横幅的代码 161
7.2.1 class-dump获取.h文件 161
7.2.2 猜测广告横幅的出现位置 161
7.2.3 分析playview-controller.h 162
7.3 去除广告横幅,节省流量 167
7.3.1 找到“准备”广告的位置 167
7.3.2 追溯到网络连接的起点 173
7.4 编写调试代码 175
7.4.1 编写tweak_oplayer-lite.xm 175
7.4.2 编辑control 176
7.4.3 编辑removeoplayer-ads.plist 176
7.4.4 编辑makefile 177
7.4.5 编译+打包 177
7.4.6 安装 177
7.5 调试去广告插件 177
7.6 代码结果整理 178
7.7 小结 179
第8章 实战2:whatsapp消息拦截 180
8.1 whatsapp简介 180
8.2 分析源代码结构,并定位监听点 180
8.2.1 class-dump获取.h文件 180
8.2.2 导入xcode 182
8.2.3 找到whatsappapp-delegate 182
8.2.4 找到chatmanager 183
8.3 编写调试代码 184
8.3.1 分析函数列表 184
8.3.2 编写tweak_whats-app.xm 185
8.3.3 编辑control 186
8.3.4 编辑monitor.plist 186
8.3.5 编辑makefile 186
8.3.6 编译+打包 187
8.3.7 安装 187
8.4 调试运行监听插件 187
8.4.1 运行whatsapp,ssh连接 187
8.4.2 发送/接收消息,监控日志 188
8.4.3 保存数据 189
8.5 代码结果整理 194
8.6 小结 195
第9章 实战3:instagram图片保存 196
9.1 instagram简介 196
9.2 分析源代码结构,并定位图片展示点 196
9.2.1 用class-dump获取.h文件 196
9.2.2 导入xcode 198
9.2.3 找到appdelegate 198
9.2.4 注入reveal 199
9.2.5 寻找图片页相关class 200
9.3 保存图片 205
9.3.1 尝试保存图片 205
9.3.2 对.h文件进行瘦身 206
9.3.3 编译测试 208
9.4 弹出提示菜单 208
9.4.1 弹出菜单代码 208
9.4.2 使用theos新增函数 210
9.4.3 使用runtime新增函数 211
9.5 代码结果整理 214
9.6 小结 215
第10章 实战4:ios电话操作 216
10.1 常用电话操作 216
10.2 分析源代码结构,并定位电话操作的代码 216
10.2.1 class-dump获取.h文件 216
10.2.2 寻找拨打电话的函数 217
10.2.3 寻找接听电话的函数 229
10.2.4 寻找挂断电话的函数 234
10.2.5 寻找删除通话记录的函数 236
10.2.6 寻找拦截电话的方法 238
10.3 编写调试代码 250
10.3.1 编写tweak_phone-operation.xm 250
10.3.2 编辑control 254
10.3.3 编辑phone-operation.plist 255
10.3.4 编辑makefile 255
10.3.5 编译+打包+安装 255
10.4 调试电话操作插件 255
10.5 代码结果整理 257
10.6 小结 257
编写tweak——新时代的hacking 258
《iOS应用逆向工程:分析与实战》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- Linux 基础——关机重启命令shutdown、reboot等
一.关机重启命令的作用 相信对于接触过电脑的人来说,特别是对于windows系统来说,如果长时间使用不经重启的话会出现一点点卡顿的感觉.但是当重启整个系统后,这点点卡顿的感觉好像又没了,重启后wind ...
- 洛谷 P1184高手之在一起 题解
题目传送门 那位高手是谁啊?@jxpxcsh QWQ. 这道题数据特别水,所以直接使用O(n*m),每读进一个m内的字符串,就扫一遍n的字符串.但注意地点字符串中有可能会有空格,所以这时候就要请出g ...
- GUC-1 volatile
/* * 一.volatile 关键字:当多个线程进行操作共享数据时,可以保证内存中的数据可见. * 相较于 synchronized 是一种较为轻量级的同步策略. * * 注意: * 1. vola ...
- JS 汉字与Unicode码的相互转化
js文件中,有些变量的值可能会含有汉字,画面引入js以后,有可能会因为字符集的原因,把里面的汉字都变成乱码.后来发现网上的一些js里会把变量中的汉字都表示成”\u“开头的16进制编码,这样应该可以解决 ...
- ref:一系列用于Fuzzing学习的资源汇总
ref:http://www.freebuf.com/articles/rookie/169413.html 一系列用于Fuzzing学习的资源汇总 secist2018-04-30共185833人围 ...
- Python模块-xml
XML的例子 import xml.etree.ElementTree as ET tree = ET.parse("test.xml") root = tree.getroot( ...
- AppDomain.CurrentDomain.BaseDirectory是什么
AppDomain.CurrentDomain.BaseDirectory 是获取基目录,它由程序集冲突解决程序用来探测程序集.由显示的路径可以看出,它代表的是程序集所在的目录,它具有读取和写入的属性 ...
- hdu 1596 find the safest road (dijkstra)
Problem Description XX星球有很多城市,每个城市之间有一条或多条飞行通道,但是并不是所有的路都是很安全的,每一条路有一个安全系数s,s是在 0 和 1 间的实数(包括0,1),一条 ...
- 【最小表示法】BZOJ2176-Strange string(unsigned char!!!)
[题目大意] 给定一个字符串S = {S1, S2, S3 … Sn}, 如果在串SS中, 子串T(|T| = n)为所有长度为n的SS的字串中最小的(字符串的比较), 则称T为”奇怪的字串”. 你的 ...
- SpringMVC集成Swagger插件以及Swagger注解的简单使用
一.简介 Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新 .接口的方法,参数和模型 ...