《Android应用安全防护和逆向分析》是一本深入探讨Android应用安全与逆向工程的权威指南,全书分为基础篇、安全防护篇、工具篇和操作篇,共27章,系统地介绍了从移动智能终端安全基础知识到高级安全防护技术的全方位内容,基础篇详细讲解了NDK开发、反向分析所需命令以及apk编译后的文件格式,为读者打下坚实的基础,安全防护篇则深入探讨了混淆、签名验证、反调试检测等关键技术,以及应用权限管理和加固策略,旨在帮助开发者构建更加安全的应用环境,工具篇和操作篇则分别介绍了反向分析中常用的工具和实际操作技巧,包括设备调试、反编译工具的使用,以及漏洞修复和病毒样本分析,为读者提供了实战操作的指导,本书不仅适合Android应用开发者和安全研究人员,也适合对移动安全感兴趣的读者,它以详实的案例和清晰的逻辑,将复杂的安全防护和逆向分析技术讲解得通俗易懂,是提升Android应用安全水平的宝贵资源,无论是初学者还是有经验的开发者,都能从中获得宝贵的知识和技能,以应对日益严峻的移动安全挑战。
内容介绍
这书全方位详细介绍Android运用的安全防范方式与反向剖析技术性,分成四篇:基本篇、安全防护篇、专用工具篇、实际操作篇,共27章。基本篇包含第1~7章,关键详细介绍移动智能终端安全性的基本知识,包含Android中NDK开发设计专业知识、反向中必须采用的指令、编译以后的apk包括的四种关键格式文件分析等。安全防护篇包含第8~13章,关键详细介绍移动智能终端安全防范的有关技术性,包含搞混、签字校检、反调节检验等安全策略,Android运用升級管理权限、减少管理权限等,配置文件中的难题,运用签字体制,apk的结构加固对策,so文档的结构加固对策等。专用工具篇包含第16~21章,关键详细介绍反向剖析常见的专用工具及其应用情景,包含怎样打开机器设备的总调节电源开关,反编译神器apktool、Jadx、Xposed、Cydia Substrate等。实际操作篇包含第30~27章,关键详细介绍Android中的反向剖析方法,包含静态数据方法和动态性方法,详细介绍Android中开发设计会碰到的漏洞及修补方法,最终剖析了Android中1个十分經典的文档加密病毒样本。
目录
- 对本书的赞誉
- 前言
- 基础篇
- 第1章 Android中锁屏密码加密算法分析
- 1.1 锁屏密码方式
- 1.2 密码算法分析
- 1.2.1 输入密码算法分析
- 1.2.2 手势密码算法分析
- 1.3 本章小结
- 第2章 Android中NDK开发
- 2.1 搭建开发环境
- 2.1.1 Eclipse环境搭建
- 2.1.2 Android Studio环境搭建
- 2.2 第一行代码:HelloWorld
- 2.3 JNIEnv类型和jobject类型
- 2.3.1 JNIEnv类型
- 2.3.2 jobject参数obj
- 2.3.3 Java类型和native中的类型映射关系
- 2.3.4 jclass类型
- 2.3.5 native中访问Java层代码
- 2.4 JNIEnv类型中方法的使用
- 2.4.1 native中获取方法的Id
- 2.4.2 Java和C++中的多态机制
- 2.5 创建Java对象及字符串的操作方法
- 2.5.1 native中创建Java对象
- 2.5.2 native中操作Java字符串
- 2.6 C/C++中操作Java中的数组
- 2.6.1 操作基本类型数组
- 2.6.2 操作对象类型数组
- 2.7 C/C++中的引用类型和ID的缓存
- 2.7.1 引用类型
- 2.7.2 缓存方法
- 2.8 本章小结
- 第3章 Android中开发与逆向常用命令总结
- 3.1 基础命令
- 3.2 非shell命令
- 3.3 shell命令
- 3.4 操作apk命令
- 3.5 进程命令
- 3.6 本章小结
- 第4章 so文件格式解析
- 4.1 ELF文件格式
- 4.2 解析工具
- 4.3 解析ELF文件
- 4.4 验证解析结果
- 4.5 本章小结
- 第5章 AndroidManifest.xml文件格式解析
- 5.1 格式分析
- 5.2 格式解析
- 5.2.1 解析头部信息
- 5.2.2 解析String Chunk
- 5.2.3 解析ResourceId Chunk
- 5.2.4 解析Start Namespace Chunk
- 5.2.5 解析Start Tag Chunk
- 5.3 本章小结
- 第6章 resource.arsc文件格式解析
- 6.1 Android中资源文件id格式
- 6.2 数据结构定义
- 6.2.1 头部信息
- 6.2.2 资源索引表的头部信息
- 6.2.3 资源项的值字符串资源池
- 6.2.4 Package数据块
- 6.2.5 类型规范数据块
- 6.2.6 资源类型项数据块
- 6.3 解析代码
- 6.3.1 解析头部信息
- 6.3.2 解析资源字符串内容
- 6.3.3 解析包信息
- 6.3.4 解析资源类型的字符串内容
- 6.3.5 解析资源值字符串内容
- 6.3.6 解析正文内容
- 6.4 本章小结
- 第7章 dex文件格式解析
- 7.1 dex文件格式
- 7.2 构造dex文件
- 7.3 解析数据结构
- 7.3.1 头部信息Header结构
- 7.3.2 string_ids数据结构
- 7.3.3 type_ids数据结构
- 7.3.4 proto_ids数据结构
- 7.3.5 field_ids数据结构
- 7.3.6 method_ids数据结构
- 7.3.7 class_defs数据结构
- 7.4 解析代码
- 7.4.1 解析头部信息
- 7.4.2 解析string_ids索引区
- 7.4.3 解析type_ids索引区
- 7.4.4 解析proto_ids索引区
- 7.4.5 解析field_ids索引区
- 7.4.6 解析method_ids索引区
- 7.4.7 解析class_def区域
- 7.5 本章小结
- 防护篇
- 第8章 Android应用安全防护的基本策略
- 8.1 混淆机制
- 8.1.1 代码混淆
- 8.1.2 资源混淆
- 8.2 签名保护
- 8.3 手动注册native方法
- 8.4 反调试检测
- 8.5 本章小结
- 第9章 Android中常用权限分析
- 9.1 辅助功能权限
- 9.2 设备管理权限
- 9.3 通知栏管理权限
- 9.4 VPN开发权限
- 9.5 本章小结
- 第10章 Android中的run-as命令
- 10.1 命令分析和使用
- 10.2 Linux中的setuid和setgid概念
- 10.3 Android中setuid和setgid的使用场景
- 10.4 run-as命令的作用
- 10.5 调用系统受uid限制的API
- 10.6 本章小结
- 第11章 Android中的allowBackup属性
- 11.1 allowBackup属性介绍
- 11.2 如何获取应用隐私数据
- 11.3 如何恢复应用数据
- 11.4 本章小结
- 第12章 Android中的签名机制
- 12.1 基本概念
- 12.2 Android中签名流程
- 12.3 Android中为何采用这种签名机制
- 12.4 本章小结
- 第13章 Android应用加固原理
- 13.1 加固原理解析
- 13.2 案例分析
- 13.3 运行项目
- 13.4 本章小结
- 第14章 Android中的so加固原理
- 14.1 基于对so中的section加密实现so加固
- 14.1.1 技术原理
- 14.1.2 实现方案
- 14.1.3 代码实现
- 14.1.4 总结
- 14.2 基于对so中的函数加密实现so加固
- 14.2.1 技术原理
- 14.2.2 实现方案
- 14.2.3 代码实现
- 14.3 本章小结
- 工具篇
- 第15章 Android逆向分析基础
- 15.1 逆向工具
- 15.2 逆向基本知识
- 15.3 打开系统调试总开关
- 15.4 本章小结
- 第16章 反编译神器apktool和Jadx
- 操作篇