
姜维 某知名互联网公司开发者,参与过多个移动App开发项目,对Android安全问题情有独钟,深入分析过Android源代码和各类移动应用病毒,逆向分析实战经验
本书全面介绍Android应用的安全防护方法与逆向分析技术,分为四篇:基础篇、防护篇、工具篇、操作篇,共26章。基础篇包括第1~7章,主要介绍移动应用安全的基础知识,包括Android中NDK开发知识、逆向中需要用到的命令、编译之后的apk包含的四类主要文件格式解析等。防护篇包括第8~14章,主要介绍移动应用安全防护的相关技术,包括混淆、签名校验、反调试检测等安全策略,Android应用升级权限、降低权限等,配置文件中的问题,应用签名机制,apk的加固策略,so文件的加固策略等。工具篇包括第15~19章,主要介绍逆向分析常用的工具以及使用场景,包括如何开启设备的总调试开关,反编译利器apktool、Jadx、Xposed、Cydia Substrate等。操作篇包括第20~26章,主要介绍Android中的逆向分析技巧,包括静态方式和动态方式,介绍Android中开发会遇到的系统漏洞及修复方式,最后分析了Android中一个非常经典的文件加密病毒样本。
对本书的赞誉前言基础篇第1章 Android中锁屏密码加密算法分析 21.1 锁屏密码方式 21.2 密码算法分析 21.2.1 输入密码算法分析 21.2.2 手势密码算法分析 71.3 本章小结 9第2章 Android中NDK开发 102.1 搭建开发环境 102.1.1 Eclipse环境搭建 102.1.2 Android Studio环境搭建 122.2 第一行代码:HelloWorld 142.3 JNIEnv类型和jobject类型 182.3.1 JNIEnv类型 192.3.2 jobject参数obj 192.3.3 Java类型和native中的类型映射关系 192.3.4 jclass类型 192.3.5 native中访问Java层代码 202.4 JNIEnv类型中方法的使用 212.4.1 native中获取方法的Id 222.4.2 Java和C++中的多态机制 242.5 创建Java对象及字符串的操作方法 272.5.1 native中创建Java对象 272.5.2 native中操作Java字符串 282.6 C/C++中操作Java中的数组 322.6.1 操作基本类型数组 322.6.2 操作对象类型数组 332.7 C/C++中的引用类型和ID的缓存 362.7.1 引用类型 362.7.2 缓存方法 372.8 本章小结 38第3章 Android中开发与逆向常用命令总结 393.1 基础命令 393.2 非shell命令 403.3 shell命令 453.4 操作apk命令 493.5 进程命令 503.6 本章小结 52第4章 so文件格式解析 534.1 ELF文件格式 534.2 解析工具 544.3 解析ELF文件 574.4 验证解析结果 604.5 本章小结 61第5章 AndroidManifest.xml文件格式解析 625.1 格式分析 625.2 格式解析 635.2.1 解析头部信息 635.2.2 解析String Chunk 635.2.3 解析ResourceId Chunk 685.2.4 解析Start Namespace Chunk 705.2.5 解析Start Tag Chunk 725.3 本章小结 82第6章 resource.arsc文件格式解析 836.1 Android中资源文件id格式 836.2 数据结构定义 856.2.1 头部信息 856.2.2 资源索引表的头部信息 856.2.3 资源项的值字符串资源池 866.2.4 Package数据块 876.2.5 类型规范数据块 886.2.6 资源类型项数据块 896.3 解析代码 936.3.1 解析头部信息 936.3.2 解析资源字符串内容 946.3.3 解析包信息 966.3.4 解析资源类型的字符串内容 976.3.5 解析资源值字符串内容 986.3.6 解析正文内容 996.4 本章小结 105第7章 dex文件格式解析 1067.1 dex文件格式 1067.2 构造dex文件 1077.3 解析数据结构 1087.3.1 头部信息Header结构 1087.3.2 string_ids数据结构 1127.3.3 type_ids数据结构 1157.3.4 proto_ids数据结构 1167.3.5 field_ids数据结构 1187.3.6 method_ids数据结构 1197.3.7 class_defs数据结构 1207.4 解析代码 1287.4.1 解析头部信息 1287.4.2 解析string_ids索引区 1297.4.3 解析type_ids索引区 1307.4.4 解析proto_ids索引区 1307.4.5 解析field_ids索引区 1317.4.6 解析method_ids索引区 1327.4.7 解析class_def区域 1327.5 本章小结 134防护篇第8章 Android应用安全防护的基本策略 1368.1 混淆机制 1368.1.1 代码混淆 1368.1.2 资源混淆 1368.2 签名保护 1388.3 手动注册native方法 1408.4 反调试检测 1448.5 本章小结 145第9章 Android中常用权限分析 1479.1 辅助功能权限 1479.2 设备管理权限 1489.3 通知栏管理权限 1499.4 VPN开发权限 1499.5 本章小结 150第10章 Android中的run-as命令 15110.1 命令分析和使用 15110.2 Linux中的setuid和setgid概念 15910.3 Android中setuid和setgid的使用场景 16210.4 run-as命令的作用 16510.5 调用系统受uid限制的API 16610.6 本章小结 168第11章 Android中的allowBackup属性 16911.1 allowBackup属性介绍 16911.2 如何获取应用隐私数据 17011.3 如何恢复应用数据 17511.4 本章小结 175第12章 Android中的签名机制 17612.1 基本概念 17612.2 Android中签名流程 18212.3 Android中为何采用这种签名机制 19112.4 本章小结 192第13章 Android应用加固原理 19313.1 加固原理解析 19313.2 案例分析 19513.3 运行项目 20613.4 本章小结 208第14章 Android中的so加固原理 20914.1 基于对so中的section加密实现so加固 20914.1.1 技术原理 20914.1.2 实现方案 21014.1.3 代码实现 21014.1.4 总结 22014.2 基于对so中的函数加密实现so加固 22114.2.1 技术原理 22114.2.2 实现方案 22314.2.3 代码实现 22414.3 本章小结 230工具篇第15章 Android逆向分析基础 23215.1 逆向工具 23215.2 逆向基本知识 23315.3 打开系统调试总开关 23315.4 本章小结 237第16章 反编译神器apktool和Jadx 23816.1 逆向操作惯例 23816.2 反编译常见的问题 23816.3 分析apktool的源码 24016.4 解决常见问题 24916.5 apktool的回编译源码分析 25416.6 Jadx源码分析 25616.7 本章小结 258第17章 Hook神器Xposed 25917.1 安装教程 25917.2 环境搭建 25917.3 编写模块功能 26017.4 运行模块 26417.5 本章小结 265第18章 脱壳神器ZjDroid 26618.1 ZjDroid原理分析 26618.2 工具命令分析 26818.3 工具日志信息 27218.4 工具用法总结 27218.5 工具使用案例 27318.6 本章小结 276第19章 Native层Hook神器Cydia Substrate 27719.1 环境搭建 27719.2 Hook Java层功能 27719.3 Hook Native层功能 27919.4 框架使用事项说明 28319.5 本章小结 283操作篇第20章 静态方式逆向应用 28620.1 smali语法 28620.2 手动注入smali语句 28820.3 ARM指令 28820.4 用IDA静态分析so文件 29020.5 案例分析 29220.5.1 静态分析smali代码 29220.5.2 静态分析native代码 30020.6 本章小结 303第21章 动态调试smali源码 30421.1 动态调试步骤 30421.2 案例分析 30521.3 本章小结 324第22章 IDA工具调试so源码 32522.1 IDA中的常用快捷键 32522.2 构造so案例 33122.3 逆向so文件 33222.3.1 获取应用的so文件 33222.3.2 用IDA进行调试设置 33622.3.3 IDA调试的流程总结 34322.4 用IDA解决反调试问题 34322.5 本章小结 355第23章 逆向加固应用 35623.1 逆向加固应用的思路 35623.2 获取解密之后的dex文件 35923.3 分析解密之后的dex文件内容 36423.4 逆向方法 36923.5 逆向测试 37323.6 逆向加固应用的方法总结 37423.7 本章小结 376第24章 逆向应用经典案例分析 37724.1 加壳原理分析 37724.2 脱壳过程 38024.3 如何还原应用 39324.4 脱壳经验总结 39424.5 本章小结 395第25章 Android中常见漏洞分析 39625.1 解压文件漏洞分析 39625.1.1 漏洞场景 39625.1.2 漏洞原因分析 39825.1.3 漏洞案例分析 39825.1.4 漏洞修复 39925.1.5 漏洞总结 40025.2 录屏授权漏洞分析 40025.2.1 漏洞场景 40025.2.2 漏洞原因分析 40225.2.3 漏洞修复 40225.2.4 漏洞总结 40325.3 本章小结 403第26章 文件加密病毒Wannacry样本分析 40426.1 病毒样本分析 40426.2 获取密码 40526.3 文件解密 40926.4 病毒分析报告 41426.5 本章小结 414
评论关闭。