本书由浅入深、循序渐进地讲解了Android 系统的软件安全、逆向分析与加密解密技术。包括Android软件逆向分析和系统安全方面的必备知识及概念、如何静态分析Android 软件、如何动态调试Android 软件、Android 软件的破解与反破解技术的探讨,以及对典型Android 病毒的全面剖析。
本书适合所有Android 应用开发者、Android 系统开发工程师、Android 系统安全工作者阅读学习。
第1章 Android程序分析环境搭建1
1.1 Windows分析环境搭建1
1.1.1 安装JDK1
1.1.2 安装Android SDK3
1.1.3 安装Android NDK5
1.1.4 Eclipse集成开发环境6
1.1.5 安装CDT、ADT插件6
1.1.6 创建Android Virtual Device8
1.1.7 使用到的工具9
1.2 Linux分析环境搭建9
1.2.1 本书的Linux环境9
1.2.2 安装JDK9
1.2.3 在Ubuntu上安装Android SDK10
1.2.4 在Ubuntu上安装Android NDK11
1.2.5 在Ubuntu上安装Eclipse集成开发环境12
1.2.6 在Ubuntu上安装CDT、ADT插件13
1.2.7 创建Android Virtual Device13
1.2.8 使用到的工具15
1.3 本章小结15
第2章 如何分析Android程序16
2.1 编写第一个Android程序16
2.1.1 使用Eclipse创建Android工程16
2.1.2 编译生成APK文件19
2.2 破解第一个程序20
2.2.1 如何动手?20
2.2.2 反编译APK文件20
2.2.3 分析APK文件21
2.2.4 修改Smali文件代码26
2.2.5 重新编译APK文件并签名26
2.2.6 安装测试27
2.3 本章小结28
第3章 进入Android Dalvik虚拟机29
3.1 Dalvik虚拟机的特点——掌握Android程序的运行原理29
3.1.1 Dalvik虚拟机概述29
3.1.2 Dalvik虚拟机与Java虚拟机的区别29
3.1.3 Dalvik虚拟机是如何执行程序的34
3.1.4 关于Dalvik虚拟机JIT(即时编译)36
3.2 Dalvik汇编语言基础为分析Android程序做准备37
3.2.1 Dalvik指令格式37
3.2.2 DEX文件反汇编工具39
3.2.3 了解Dalvik寄存器40
3.2.4 两种不同的寄存器表示方法——v命名法与p命名法42
3.2.5 Dalvik字节码的类型、方法与字段表示方法43
3.3 Dalvik指令集44
3.3.1 指令特点45
3.3.2 空操作指令45
3.3.3 数据操作指令46
3.3.4 返回指令46
3.3.5 数据定义指令46
3.3.6 锁指令47
3.3.7 实例操作指令47
3.3.8 数组操作指令48
3.3.9 异常指令48
3.3.10 跳转指令48
3.3.11 比较指令49
3.3.12 字段操作指令50
3.3.13 方法调用指令50
3.3.14 数据转换指令51
3.3.15 数据运算指令51
3.4 Dalvik指令集练习——写一个Dalvik版的Hello World52
3.4.1 编写smali文件52
3.4.2 编译smali文件54
3.4.3 测试运行54
3.5 本章小结55
第4章 Android可执行文件56
4.1 Android程序的生成步骤56
4.2 Android程序的安装流程59
4.3 dex文件格式66
4.3.1 dex文件中的数据结构66
4.3.2 dex文件整体结构68
4.3.3 dex文件结构分析71
4.4 odex文件格式80
4.4.1 如何生成odex文件80
4.4.2 odex文件整体结构81
4.4.3 odex文件结构分析83
4.5 dex文件的验证与优化工具dexopt的工作过程88
4.6 Android应用程序另类破解方法91
4.7 本章小结93
第5章 静态分析Android程序94
5.1 什么是静态分析94
5.2 快速定位Android程序的关键代码94
5.2.1 反编译apk程序94
5.2.2 程序的主Activity95
5.2.3 需重点关注的Application类95
5.2.4 如何定位关键代码——六种方法96
5.3 smali文件格式97
5.4 Android程序中的类100
5.4.1 内部类100
5.4.2 监听器102
5.4.3 注解类105
5.4.4 自动生成的类108
5.5 阅读反编译的smali代码110
5.5.1 循环语句110
5.5.2 switch分支语句115
5.5.3 try/catch语句121
5.6 使用IDA Pro静态分析Android程序127
5.6.1 IDA Pro对Android的支持127
5.6.2 如何操作128
5.6.3 定位关键代码——使用IDA Pro进行破解的实例132
5.7 恶意软件分析工具包——Androguard135
5.7.1 Androguard的安装与配置135
5.7.2 Androguard的使用方法137
5.7.3 使用Androguard配合Gephi进行静态分析144
5.7.4 使用androlyze.py进行静态分析148
5.8 其他静态分析工具152
5.9 阅读反编译的Java代码152
5.9.1 使用dex2jar生成jar文件152
5.9.2 使用jd-gui查看jar文件的源码153
5.10 集成分析环境——santoku154
5.11 本章小结156
第6章 基于Android的ARM汇编语言基础——逆向原生!157
6.1 Android与ARM处理器157
6.1.1 ARM处理器架构概述157
6.1.2 ARM处理器家族158
6.1.3 Android支持的处理器架构159
6.2 原生程序与ARM汇编语言——逆向你的原生Hello ARM160
6.2.1 原生程序逆向初步160
6.2.2 原生程序的生成过程162
6.2.3 必须了解的ARM知识164
6.3 ARM汇编语言程序结构166
6.3.1 完整的ARM汇编程序166
6.3.2 处理器架构定义167
6.3.3 段定义168
6.3.4 注释与标号169
6.3.5 汇编器指令169
6.3.6 子程序与参数传递170
6.4 ARM处理器寻址方式170
6.4.1 立即寻址170
6.4.2 寄存器寻址171
6.4.3 寄存器移位寻址171
6.4.4 寄存器间接寻址171
6.4.5 基址寻址171
6.4.6 多寄存器寻址171
6.4.7 堆栈寻址172
6.4.8 块拷贝寻址172
6.4.9 相对寻址172
6.5 ARM与Thumb指令集173
6.5.1 指令格式173
6.5.2 跳转指令174
6.5.3 存储器访问指令175
6.5.4 数据处理指令177
6.5.5 其他指令184
6.6 用于多媒体编程与浮点计算的NEON与VFP指令集185
6.7 本章小结186
第7章 Android NDK程序逆向分析187
7.1 Android中的原生程序187
7.1.1 编写一个例子程序187
7.1.2 如何编译原生程序188
7.2 原生程序的启动流程分析194
7.2.1 原生程序的入口函数194
7.2.2 main函数究竟何时被执行198
7.3 原生文件格式199
7.4 原生C程序逆向分析200
7.4.1 原生程序的分析方法200
7.4.2 for循环语句反汇编代码的特点204
7.4.3 if...else分支语句反汇编代码的特点208
7.4.4 while循环语句反汇编代码的特点211
7.4.5 switch分支语句反汇编代码的特点215
7.4.6 原生程序的编译时优化218
7.5 原生C++程序逆向分析222
7.5.1 C++类的逆向222
7.5.2 Android NDK对C++特性的支持225
7.5.3 静态链接STL与动态链接STL的代码区别227
7.6 Android NDK JNI API逆向分析232
7.6.1 Android NDK提供了哪些函数232
7.6.2 如何静态分析Android NDK程序233
7.7 本章小结235
第8章 动态调试Android程序236
8.1 Android动态调试支持236
8.2 DDMS的使用237
8.2.1 如何启动DDMS237
8.2.2 使用LogCat查看调试信息238
8.3 定位关键代码240
8.3.1 代码注入法——让程序自己吐出注册码240
8.3.2 栈跟踪法244
8.3.3 Method Profiling247
8.4 使用AndBug调试Android程序250
8.4.1 安装AndBug251
8.4.2 使用AndBug251
8.5 使用IDA Pro调试Android原生程序254
8.5.1 调试Android原生程序255
8.5.2 调试Android原生动态链接库256
8.6 使用gdb调试Android原生程序260
8.6.1 编译gdb与gdbserver260
8.6.2 如何调试262
8.7 本章小结264
第9章 Android软件的破解技术265
9.1 试用版软件265
9.1.1 试用版软件的种类265
9.1.2 实例破解——针对授权KEY方式的破解265
9.2 序列号保护271
9.3 网络验证272
9.3.1 网络验证保护思路272
9.3.2 实例破解——针对网络验证方式的破解273
9.4 In-app Billing(应用内付费)277
9.4.1 In-app Billing原理277
9.4.2 In-app Billing破解方法280
9.5 Google Play License保护281
9.5.1 Google Play License保护机制281
9.5.2 实例破解——针对Google Play License方式的破解283
9.6 重启验证284
9.6.1 重启验证保护思路285
9.6.2 实例破解——针对重启验证方式的破解285
9.7 如何破解其他类型的Android程序296
9.7.1 Mono for Android开发的程序及其破解方法296
9.7.2 Qt for Android开发的程序及其破解方法301
9.8 本章小结309
第10章 Android程序的反破解技术310
10.1 对抗反编译310
10.1.1 如何对抗反编译工具310
10.1.2 对抗dex2jar311
10.2 对抗静态分析312
10.2.1 代码混淆技术312
10.2.2 NDK保护315
10.2.3 外壳保护316
10.3 对抗动态调试316
10.3.1 检测调试器316
10.3.2 检测模拟器317
10.4 防止重编译318
10.4.1 检查签名318
10.4.2 校验保护319
10.5 本章小结320
第11章 Android系统攻击与防范321
11.1 Android系统安全概述321
11.2 手机ROOT带来的危害321
11.2.1 为什么要ROOT手机321
11.2.2 手机ROOT后带来的安全隐患322
11.2.3 Android手机ROOT原理322
11.3 Android权限攻击329
11.3.1 Android权限检查机制329
11.3.2 串谋权限攻击333
11.3.3 权限攻击检测336
11.4 Android组件安全339
11.4.1 Activity安全及Activity劫持演示340
11.4.2 Broadcast Receiver 安全343
11.4.3 Service安全345
11.4.4 Content Provider安全346
11.5 数据安全347
11.5.1 外部存储安全347
11.5.2 内部存储安全348
11.5.3 数据通信安全350
11.6 ROM安全351
11.6.1 ROM的种类352
11.6.2 ROM的定制过程352
11.6.3 定制ROM的安全隐患359
11.6.4 如何防范360
11.7 本章小结361
第12章 DroidKongFu变种病毒实例分析362
12.1 DroidKongFu病毒介绍362
12.2 配置病毒分析环境363
12.3 病毒执行状态分析364
12.3.1 使用APIMonitor初步分析365
12.3.2 使用DroidBox动态分析369
12.3.3 其他动态分析工具373
12.4 病毒代码逆向分析376
12.4.1 Java层启动代码分析376
12.4.2 Native层启动代码分析381
12.4.3 Native层病毒核心分析393
12.5 DroidKongFu病毒框架总结404
12.6 病毒防治406
12.7 本章小结406
中文版AutoCAD机械设计经典技法118例-含光盘1张 本书特色 《中文版AutoCAD机械设计经典技法118例(附光盘)》编著者郭文亮、郭领艳。全书通过11...
你以前玩过一些触摸屏游戏,关于游戏,你肯定有过自己的点子吧!接下来怎么做?把这个想法变为现实吧!这本《触摸屏游戏设计》里
《摄影构图零基础入门教程》内容简介:构图是决定摄影作品成败的关键因素之一。本书对基本的构图常识、黄金构图的概念及实战应用、
电商圈第一本自媒体著作《做自己——鬼脚七自媒体第一季》出版以来,深受广大读者喜爱。本书是鬼脚七的第二本书《爱生活——鬼脚
《四级词汇帝国(第二版)》内容简介:本书有别于其他词汇书的亮点是编排方式:书中每一个词条单词后面会有音标和记忆次数,每记忆
《放下一切去旅行》内容简介:最遗憾的事就是不曾说走就走,旅行,你还要等多久? 他带着拍立得和朋友结伴出行,在国内各种“X奴”
《时光交汇的地方》内容简介:太多的人,穿行在城市之间,忙碌的节奏让我们忘记了生活的本色。有一些或诙谐或温暖的文字,是调节神
《深入理解Java虚拟机:JVM高级特性与最佳实践》内容简介:作为一位Java程序员,你是否也曾经想深入理解Java虚拟机,但是却被它的
《股市天经(之一):量柱擒涨停(全彩版第2版)》内容简介:本书是我国第一部系统论述股市“量柱”理论及实战技法的著述,也是第一
PerformingyourfirstWebsiteanalysisjustgotawholeloteasier.WebAnalyticsForDummieso...
《学习脑:像训练肌肉一样训练大脑》内容简介:你知道吗:做总结、做标记、图形记忆、重复阅读—这些我们从小就在使用的学习方法都
SolidWorks 2016机械设计从入门到精通-中文版-(附光盘) 本书特色 solidworks是世界上首套专门基于windows系统开发的三维cad软件...
《苍穹信步》内容简介:《漫步太空书系》是一套有关航天知识的系统科普教育丛书,尽量满足广大航天爱好者的求知需求,我们希望帮助
本书是一本经典的大学通信专业教材。全书深入浅出地讨论了无线通信的相关基础理论,并涉及到了第三代系统的基本发展方向和有关问
来吧!带你玩转Excel VBA(含CD光盘1张)(双色) 本书特色 全面:从录制宏开始带你步入vba殿堂详细:每个案例都详述思路与步骤贴心:提供售后服务论坛与...
本书以JSP为开发语言,选取当前最流行、最具代表性的4类网站:新闻站点、论坛、电子商城和博客(Blog)系统为例,详细介绍了使用
《唐代小说史》内容简介:本书以时代为线索,系统地考察了唐代小说的兴起、繁荣和衰落,详尽地介绍了唐代前期、中期、后期和五代十
《绅权与国家权力关系研究:从明清到民初》内容简介:从乡村权力结构角度研究绅权与国家权力的关系,这不仅是一个法律史学问题,同
属性拓扑理论及其应用 本书特色 本书以属性拓扑理论及其应用为主线,系统地介绍了属性拓扑基本理论及其应用的*研究成果. 全书分为基础知识、概念计算、关联分析、记忆...
Thewirelessindustryisinthemidstofafundamentalshiftfromprovidingvoice-onlyservice...