𝔖 Scriptorium
✦   LIBER   ✦

📁

Android软件安全权威指南

✍ Scribed by 丰生强


Publisher
电子工业出版社
Year
2019
Tongue
Chinese
Leaves
468
Category
Library

⬇  Acquire This Volume

No coin nor oath required. For personal study only.

✦ Synopsis


《Android软件安全权威指南》从平台搭建和语言基础开始,循序渐进地讲解了Android平台上的软件安全技术,提供了对Windows、Linux、macOS三个平台的支持,涉及与Android软件安全相关的环境搭建、文件格式、静态分析、动态调试、Hook与注入、软件保护技术、软件壳等主题,涵盖OAT、ELF等新的文件格式。《Android软件安全权威指南》将Java与Native层的软件安全技术分开讲解,加入了与软件壳相关的章节,内容安排细致、合理。《Android软件安全权威指南》的每一章都以实例讲解的方式来展开内容,实践性较强。

《Android软件安全权威指南》适合Android开发人员、安全研究人员及对Android系统安全感兴趣的读者阅读。

✦ Table of Contents


目录
第1章 搭建Android程序分析环境
1.1 搭建Windows分析环境
1.1.1 安装JDK
1.1.2 安装Android SDK
1.1.3 安装Android NDK
1.1.4 Android Studio集成开发环境
1.1.5 创建Android模拟器
1.1.6 CygWin
1.1.7 Bash on Ubuntu on Windows
1.2 搭建macOS分析环境
1.2.1 安装JDK
1.2.2 安装Android SDK
1.2.3 安装Android NDK
1.2.4 Android Studio集成开发环境
1.3 搭建Ubuntu分析环境
1.3.1 安装JDK
1.3.2 安装Android SDK
1.3.3 安装Android NDK
1.3.4 Android Studio集成开发环境
1.4 常用逆向分析工具
1.5 常用Linux Shell命令
1.6 搭建源码分析环境
1.6.1 在macOS中编译Android源码
1.6.2 在Ubuntu中编译Android源码
1.6.3 在Windows中编译Android源码
1.7 本章小结
第2章 如何分析Android程序
2.1 编写第一个Android程序
2.1.1 创建Android工程
2.1.2 编译生成APK文件
2.2 破解第一个Android程序
2.2.1 破解入手
2.2.2 反编译APK文件
2.2.3 分析APK文件
2.2.4 修改smali文件的代码
2.2.5 重新编译APK文件并签名
2.2.6 安装和测试
2.2.7 小结
2.3 本章小结
第3章 Dalvik可执行格式与字节码规范
3.1 Dalvik虚拟机
3.1.1 Dalvik虚拟机的特点
3.1.2 Dalvik虚拟机与Java虚拟机的区别
3.1.3 虚拟机的执行流程
3.1.4 虚拟机的执行方式
3.2 Dalvik语言基础
3.2.1 Dalvik指令格式
3.2.2 DEX反汇编工具
3.2.3 Dalvik寄存器
3.2.4 寄存器命名法
3.2.5 Dalvik字节码
3.3 Dalvik指令集
3.3.1 指令类型
3.3.2 空操作指令
3.3.3 数据操作指令
3.3.4 返回指令
3.3.5 数据定义指令
3.3.6 锁指令
3.3.7 实例操作指令
3.3.8 数组操作指令
3.3.9 异常指令
3.3.10 跳转指令
3.3.11 比较指令
3.3.12 字段操作指令
3.3.13 方法调用指令
3.3.14 数据转换指令
3.3.15 数据运算指令
3.4 Dalvik指令练习
3.4.1 编写smali文件
3.4.2 编译smali文件
3.4.3 测试运行
3.5 本章小结
第4章 常见Android文件格式
4.1 库文件
4.1.1 jar包
4.1.2 aar包
4.2 APK
4.2.1 APK文件结构
4.2.2 APK文件的生成流程
4.2.3 APK的安装流程
4.3 classes.dex
4.3.1 DEX文件结构
4.3.2 DEX文件的验证与优化过程
4.3.3 DEX文件的修改
4.3.4 MultiDex
4.4 AndroidManifest.xml
4.4.1 AndroidManifest.xml文件的格式
4.4.2 AXML文件格式
4.4.3 AXML文件的修改
4.5 resources.arsc
4.5.1 ARSC文件格式
4.5.2 ARSC文件的修改
4.6 META-INF目录
4.6.1 CERT.RSA
4.6.2 MANIFEST.MF
4.6.3 CERT.SF
4.7 ODEX
4.7.1 生成ODEX文件
4.7.2 ODEX文件格式
4.7.3 将ODEX文件转换成DEX文件
4.8 OAT
4.8.1 ART虚拟机
4.8.2 生成OAT文件
4.8.3 OAT文件格式
4.8.4 将OAT文件转换成DEX文件
4.9 本章小结
第5章 静态分析Android程序
5.1 静态分析简介
5.2 阅读smali代码
5.2.1 smali文件结构
5.2.2 循环语句
5.2.3 switch分支语句
5.2.4 try/catch语句
5.3 阅读Java代码
5.3.1 将DEX文件转换成jar包
5.3.2 jar分析工具
5.4 代码定位技巧
5.4.1 入口分析法
5.4.2 信息反馈法
5.4.3 特征函数法
5.5 使用JEB进行静态分析
5.5.1 安装JEB
5.5.2 JEB的静态分析功能
5.5.3 JEB的脚本化与插件
5.6 使用IDA Pro进行静态分析
5.6.1 IDA Pro对Android的支持
5.6.2 分析DEX文件
5.6.3 定位关键代码
5.7 使用Androguard进行静态分析
5.7.1 安装Androguard
5.7.2 Androguard的使用方法
5.7.3 使用androlyze.py进行分析
5.8 本章小结
第6章 动态分析Android程序
6.1 动态分析框架
6.2 动态分析技巧
6.2.1 代码注入法
6.2.2 栈跟踪法
6.2.3 Method Profiling
6.2.4 UI检查
6.3 使用JDB动态调试APK
6.4 使用JEB动态调试APK
6.5 使用IDA Pro动态调试APK
6.6 本章小结
第7章 ARM反汇编基础
7.1 Android与ARM处理器
7.1.1 ARM处理器架构概述
7.1.2 Android支持的处理器架构
7.2 Android ARM EABI
7.2.1 armeabi
7.2.2 armeabi-v7a
7.2.3 arm64-v8a
7.3 ARM原生程序的生成过程
7.3.1 预处理
7.3.2 编译
7.3.3 汇编
7.3.4 链接
7.4 ARM汇编语言
7.4.1 ARM汇编程序结构
7.4.2 汇编指令
7.4.3 寄存器
7.4.4 处理器寻址方式
7.4.5 子程序参数传递
7.5 ARM汇编指令集
7.5.1 ARM指令集分类
7.5.2 ARM指令编码
7.5.3 ARM指令格式解析
7.5.4 常见ARM指令
7.6 Thumb汇编指令集
7.6.1 16位Thumb指令编码
7.6.2 16位Thumb指令格式解析
7.6.3 32位Thumb指令编码
7.6.4 32位Thumb指令格式解析
7.7 AArch64汇编指令集
7.7.1 AArch64指令编码
7.7.2 AArch64指令格式解析
7.8 本章小结
第8章 Android原生程序开发与逆向分析
8.1 原生程序开发
8.1.1 原生程序工程
8.1.2 STL的选择
8.1.3 JNI接口
8.1.4 编译选项与配置
8.2 原生程序移植
8.2.1 ADT项目的移植
8.2.2 UNIX开源项目的移植
8.2.3 CMake项目的移植
8.2.4 其他类型项目的移植
8.3 原生程序入口函数
8.3.1 原生程序入口函数
8.3.2 so入口函数
8.4 原生程序文件格式
8.4.1 原生程序的文件类型
8.4.2 AArch64 ELF文件格式
8.4.3 Program Header Table
8.4.4 Section Header Table
8.4.5 .dynamic节区
8.4.6 字符串表
8.4.7 符号表
8.4.8 got表与plt表
8.4.9 地址重定位表
8.5 原生程序逆向分析工具
8.5.1 NDK Toolchain
8.5.2 IDA Pro
8.5.3 Hopper
8.6 原生C程序逆向分析
8.6.1 编译原生C程序
8.6.2 for循环分支结构
8.6.3 while循环分支结构
8.6.4 if……else分支结构
8.6.5 switch循环分支结构
8.6.6 优化后的C程序
8.7 原生C 程序逆向分析
8.7.1 C STL的逆向分析
8.7.2 C 类的逆向分析
8.7.3 C 程序的RTTI
8.8 原生so动态库逆向分析
8.9 本章小结
第9章 Android原生程序动态调试
9.1 gdb调试器
9.1.1 ndk-gdb脚本
9.1.2 配置gdb调试器
9.1.3 gdb调试器的常用命令
9.1.4 使用gdb调试Android原生程序
9.1.5 gdb调试器的GUI前端
9.2 lldb调试器
9.2.1 配置lldb调试器
9.2.2 lldb调试器的常用命令
9.2.3 使用lldb调试Android原生程序
9.2.4 lldb调试器的GUI前端
9.3 使用IDA Pro调试Android原生程序
9.4 本章小结
第10章 Hook与注入
10.1 Hook的类型
10.1.1 Dalvik Hook
10.1.2 ART Hook
10.1.3 LD_PRELOAD Hook
10.1.4 GOT Hook
10.1.5 Inline Hook
10.2 Xposed Hook框架
10.3 Hook场景与应用
10.3.1 开启日志调试输出
10.3.2 APK插件
10.3.3 绕过SSL Pinning
10.4 动态注入
10.4.1 so动态库注入
10.4.2 DEX注入
10.5 注入框架Frida
10.5.1 安装配置Frida
10.5.2 执行注入与Hook
10.5.3 跟踪Native方法
10.6 本章小结
第11章 软件保护技术
11.1 软件保护技术简介
11.2 软件混淆技术
11.2.1 源码混淆
11.2.2 模板混淆
11.2.3 AST混淆
11.2.4 IR混淆
11.2.5 DEX混淆
11.2.6 DEX二次混淆
11.3 资源保护
11.4 完整性校验
11.5 反调试技术
11.5.1 调试器状态检测
11.5.2 调试器端口检测
11.5.3 进程状态检测
11.6 运行环境检测
11.6.1 模拟器检测
11.6.2 Root检测
11.6.3 Hook检测
11.7 本章小结
第12章 软件壳
12.1 Android软件壳
12.2 软件壳的特征与侦察
12.2.1 编译器指纹
12.2.2 软件壳的特征
12.2.3 查壳工具
12.3 动态加载型壳
12.3.1 缓存脱壳法
12.3.2 内存Dump脱壳法
12.3.3 动态调试脱壳法
12.3.4 Hook脱壳法
12.3.5 系统定制脱壳法
12.4 代码抽取型壳
12.4.1 内存重组脱壳法
12.4.2 Hook脱壳法
12.4.3 系统定制脱壳法
12.5 代码混淆壳
12.5.1 LLVM基础
12.5.2 编写Pass
12.5.3 Obfuscator-LLVM
12.5.4 代码混淆壳的脱壳
12.6 本章小结


📜 SIMILAR VOLUMES


HTTP权威指南: 权威指南
✍ David Gourley; Brian Totty 📂 Library 📅 2012 🏛 人民邮电出版社 🌐 Chinese

<p>超文本传输协议(Hypertext Transfer Protocol,HTTP)是在万维网上进行通信时所使用的协议方案。HTTP有很多应用,但最著名的是用于web浏览器和web服务器之间的双工通信。</p> <p>HTTP起初是一个简单的协议,因此你可能会认为关于这个协议没有太多好说的。但现在,你手上拿着的是却一本两磅重 的书。如果你对我们怎么会写出一本650页 的关于HTTP的书感到奇怪的话,可以去看一下目录。本书不仅仅是一本HTTP首部的参考手册;它是一本名副其实的web结构圣经。</p> <p>本书中,我们尝试着将HTTP中一些互相关联且常被误解的规则梳理清楚,并编写了一系列

Android编程权威指南(第3版)
✍ 比尔·菲利普斯; 克里斯·斯图尔特; 克莉丝汀·马西卡诺 📂 Library 📅 2017 🏛 人民邮电出版社 🌐 Chinese

<p>Big Nerd Ranch 是美国一家专业的移动开发技术培训机构。本书主要以其Android 训练营教学课程为基础,融合了几位作者多年的心得体会,是一本完全面向实战的Android 编程权威指南。全书共36 章,详细介绍了8 个Android 应用的开发过程。通过这些精心设计的应用,读者可掌握很多重要的理论知识和开发技巧,获得宝贵的开发经验。</p> <p>第3 版较之前版本增加了对数据绑定等新工具的介绍,同时新增了针对单元测试、辅助功能和MVVM 架构等主题的章节。如果你熟悉Java 语言,或者了解面向对象编程,那就立刻开始Android 编程之旅吧!</p>

Android编程权威指南(第2版)
✍ Bill Phillips; Chris Stewart; Brian Hardy; Kristin Marsicano 📂 Library 📅 2016 🏛 人民邮电出版社 🌐 Chinese

<p>Big Nerd Ranch是美国一家专业的移动开发技术培训机构。本书主要以其Android训练营教学课程为基础,融合了几位作者多年的心得体会,是一本完全面向实战的Android编程权威指南。全书共34章,详细介绍了8个Android 应用。通过这些精心设计的应用,读者可掌握很多重要的理论知识和开发技巧,获得最前沿的开发经验。</p> <p>如果你熟悉Java语言,或者了解面向对象编程,那就立刻开始Android编程之旅吧!</p>

Android编程权威指南 = Android programming: the
✍ Bill Phillips; Chris Stewart; Brian Hardy; Kristin Marsicano 📂 Library 📅 2017 🏛 人民邮电出版社 🌐 Chinese

Big Nerd Ranch 是美国一家专业的移动开发技术培训机构。本书主要以其Android 训练营教学课程为基础,融合了几位作者多年的心得体会,是一本完全面向实战的Android 编程权威指南。全书共36 章,详细介绍了8 个Android 应用的开发过程。通过这些精心设计的应用,读者可掌握很多重要的理论知识和开发技巧,获得宝贵的开发经验。 第3 版较之前版本增加了对数据绑定等新工具的介绍,同时新增了针对单元测试、辅助功能和MVVM 架构等主题的章节。如果你熟悉Java 语言,或者了解面向对象编程,那就立刻开始Android 编程之旅吧!

HTTP权威指南
✍ David Gourley; Brian Totty 📂 Library 📅 2012 🏛 人民邮电出版社 🌐 Chinese

<p>超文本传输协议(Hypertext Transfer Protocol,HTTP)是在万维网上进行通信时所使用的协议方案。HTTP有很多应用,但最著名的是用于web浏览器和web服务器之间的双工通信。</p> <p>HTTP起初是一个简单的协议,因此你可能会认为关于这个协议没有太多好说的。但现在,你手上拿着的是却一本两磅重 的书。如果你对我们怎么会写出一本650页 的关于HTTP的书感到奇怪的话,可以去看一下目录。本书不仅仅是一本HTTP首部的参考手册;它是一本名副其实的web结构圣经。</p> <p>本书中,我们尝试着将HTTP中一些互相关联且常被误解的规则梳理清楚,并编写了一系列