Android软件安全指南丰生强北方城 pdf下载pdf下载

Android软件安全指南丰生强北方城百度网盘pdf下载

作者:
简介:本篇提供书籍《Android软件安全指南丰生强北方城》百度网盘pdf下载
出版社:北方图书城卖场店
出版时间:2019-03
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

   图书基本信息
图书名称   Android软件安全指南(博文视点出品)
作者   丰生强
定价   95元
出版社   电子工业出版社
ISBN   9787121355202
出版日期   2019-03-01
字数   
页码   451
版次   
装帧   平装
开本   16开
商品重量   

   内容提要
本书主要介绍Android平台上的软件安全技术。从平台搭建和语言基础开始,循序渐进地讲解了Android平台上的软件攻防技术。本书共12章,系统地讲解了与Android软件安全相关的环境搭建、文件格式、静态分析、动态调试、Hook与注入、软件保护技术、软件壳等多个主题。本书较版更新幅度较大,加入了Windows、Linux、macOS 3个平台上的软件平台支持,在文件格式上加入了OAT、ELF等新的文件格式。另外,本书更新调整了目录结构,将Java与Native层的软件安全技术分开讲解,在内容安排上更加细致、合理。同时,加入了时下流行的软件壳章节,内容大多是目前尚未公开的技术。另外,书中的每一章中都以实例讲解的方式来展开内容,实践性较强。

   目录

章 搭建Android程序分析环境
1.1 搭建Windows分析环境 1
1.1.1 安装K 1
1.1.2 安装Android SDK 2
1.1.3 安装Android NDK 5
1.1.4 Android Studio集成开发环境 6
1.1.5 创建Android模拟器 7
1.1.6 Cygwi9
1.1.7 Bash oUbuntu oWindows 11
1.2 搭建macOS分析环境 12
1.2.1 安装K 12
1.2.2 安装Android SDK 14
1.2.3 安装Android NDK 14
1.2.4 Android Studio集成开发环境 15
1.3 搭建Ubuntu分析环境 15
1.3.1 安装K 16
1.3.2 安装Android SDK 17
1.3.3 安装Android NDK 17
1.3.4 Android Studio集成开发环境 18
1.4 常用逆向分析工具 19
1.5 常用Linux Shell命令 19
1.6 搭建源码分析环境 20
1.6.1 在macOS中编译Android源码 20
1.6.2 在Ubuntu中编译Android源码 26
1.6.3 在Windows中编译Android源码 26
1.7 本章小结 27


第2章 如何分析Android程序
2.1 编写个Android程序 28
2.1.1 创建Android工程 28
2.1.2 编译生成APK文件 30
2.2 破解个Android程序 35
2.2.1 破解入手 35
2.2.2 反编译APK文件 35
2.2.3 分析APK文件 36
2.2.4 修改smali文件的代码 44
2.2.5 重新编译APK文件并 45
2.2.6 安装和测试 47
2.2.7 小结 48
2.3 本章小结 48


第3章 Dalvik可执行格式与字节码规范
3.1 Dalvik虚拟机 49
3.1.1 Dalvik虚拟机的特点 49
3.1.2 Dalvik虚拟机与Java虚拟机的区别 49
3.1.3 虚拟机的执行流程 54
3.1.4 虚拟机的执行方式 56
3.2 Dalvik语言基础 56
3.2.1 Dalvik指令格式 57
3.2.2 DEX反汇编工具 58
3.2.3 Dalvik寄存器 59
3.2.4 寄存器命名法 61
3.2.5 Dalvik字节码 62
3.3 Dalvik指令集 63
3.3.1 指令类型 64
3.3.2 空操作指令 64
3.3.3 数据操作指令 64
3.3.4 返回指令 65
3.3.5 数据定义指令 65
3.3.6 锁指令 66
3.3.7 实例操作指令 66
3.3.8 数组操作指令 66
3.3.9 异常指令 67
3.3.10 跳转指令 67
3.3.11 比较指令 68
3.3.12 字段操作指令 69
3.3.13 方法调用指令 69
3.3.14 数据转换指令 70
3.3.15 数据运算指令 70
3.4 Dalvik指令练习 71
3.4.1 编写smali文件 71
3.4.2 编译smali文件 73
3.4.3 测试运行 73
3.5 本章小结 73


第4章 常见Android文件格式
4.1 库文件 74
4.1.1 jar包 74
4.1.2 aar包 75
4.2 APK 78
4.2.1 APK文件结构 78
4.2.2 APK文件的生成流程 79
4.2.3 APK的安装流程 84
4.3 classes.dex 90
4.3.1 DEX文件结构 90
4.3.2 DEX文件的验证与优化过程 104
4.3.3 DEX文件的修改 108
4.3.4 MultiDex 111
4.4 AndroidManifest.xml 113
4.4.1 AndroidManifest.xml文件的格式 113
4.4.2 AXML文件格式 114
4.4.3 AXML文件的修改 121
4.5 resources.arsc 121
4.5.1 ARSC文件格式 122
4.5.2 ARSC文件的修改 128
4.6 META-INF目录 128
4.6.1 CERT.RSA 128
4.6.2 MANIFEST.MF 129
4.6.3 CERT.SF 130
4.7 ODEX 132
4.7.1 生成ODEX文件 132
4.7.2 ODEX文件格式 132
4.7.3 将ODEX文件转换成DEX文件 136
4.8 OAT 137
4.8.1 ART虚拟机 137
4.8.2 生成OAT文件 137
4.8.3 OAT文件格式 138
4.8.4 将OAT文件转换成DEX文件 141
4.9 本章小结 143


第5章 静态分析Android程序
5.1 静态分析简介 145
5.2 阅读smali代码 145
5.2.1 smali文件结构 145
5.2.2 循环语句 148
5.2.3 switch分支语句 153
5.2.4 try/catch语句 158
5.3 阅读Java代码 163
5.3.1 将DEX文件转换成jar包 163
5.3.2 jar分析工具 163
5.4 代码定位技巧 164
5.4.1 入口分析法 164
5.4.2 信息反馈法 165
5.4.3 特征函数法 165
5.5 使用JEB进行静态分析 165
5.5.1 安装JEB 165
5.5.2 JEB的静态分析功能 166
5.5.3 JEB的脚本化与插件 169
5.6 使用IDA Pro进行静态分析 170
5.6.1 IDA Pro对Android的支持 170
5.6.2 分析DEX文件 170
5.6.3 定位关键代码 172
5.7 使用Androguard进行静态分析 174
5.7.1 安装Androguard 175
5.7.2 Androguard的使用方法 175
5.7.3 使用androlyze.py进行分析 179
5.8 本章小结 182


第6章 动态分析Android程序
6.1 动态分析框架 183
6.2 动态分析技巧 189
6.2.1 代码注入法 189
6.2.2 栈跟踪法 192
6.2.3 Method Profiling 193
6.2.4 UI检查 196
6.3 使用B动态调试APK 198
6.4 使用JEB动态调试APK 200
6.5 使用IDA Pro动态调试APK 201
6.6 本章小结 203


第7章 ARM反汇编基础
7.1 Android与ARM处理器 204
7.1.1 ARM处理器架构概述 204
7.1.2 Android支持的处理器架构 205
7.2 Android ARM EABI 206
7.2.1 armeabi 206
7.2.2 armeabi-v7a 207
7.2.3 arm64-v8a 208
7.3 ARM原生程序的生成过程 208
7.3.1 预处理 210
7.3.2 编译 211
7.3.3 汇编 215
7.3.4 链接 215
7.4 ARM汇编语言 216
7.4.1 ARM汇编程序结构 216
7.4.2 汇编指令 221
7.4.3 寄存器 223
7.4.4 处理器寻址方式 224
7.4.5 子程序参数传递 227
7.5 ARM汇编指令集 230
7.5.1 ARM指令集分类 230
7.5.2 ARM指令编码 231
7.5.3 ARM指令格式解析 233
7.5.4 常见ARM指令 234
7.6 Thumb汇编指令集 240
7.6.1 16位Thumb指令编码 240
7.6.2 16位Thumb指令格式解析 241
7.6.3 32位Thumb指令编码 242
7.6.4 32位Thumb指令格式解析 244
7.7 AArch64汇编指令集 246
7.7.1 AArch64指令编码 246
7.7.2 AArch64指令格式解析 247
7.8 本章小结 250


第8章 Android原生程序开发与逆向分析
8.1 原生程序开发 251
8.1.1 原生程序工程 252
8.1.2 STL的选择 253
8.1.3 JNI 254
8.1.4 编译选项与配置项 256
8.2 原生程序移植 256
8.2.1 ADT项目的移植 257
8.2.2 UNIX开源项目的移植 258
8.2.3 CMake项目的移植 262
8.2.4 其他类型项目的移植 264
8.3 原生程序入口函数 264
8.3.1 原生程序入口函数分析 264
8.3.2 so入口函数分析 269
8.4 原生程序文件格式 271
8.4.1 原生程序的文件类型 271
8.4.2 AArch64 ELF文件格式 274
8.4.3 Program Header Table 278
8.4.4 SectioHeader Table 281
8.4.5 .dynamic节区 283
8.4.6 字符串表 285
8.4.7 符号表 286
8.4.8 got表与plt表 287
8.4.9 地址重定位表 291
8.5 原生程序逆向分析工具 295
8.5.1 NDK Toolchai295
8.5.2 IDA Pro 297
8.5.3 Hopper 301
8.6 原生C程序逆向分析 302
8.6.1 编译原生C程序 303
8.6.2 for循环分支结构 305
8.6.3 while循环分支结构 309
8.6.4 if……else分支结构 312
8.6.5 switch循环分支结构 316
8.6.6 优化后的C程序 319
8.7 原生C++ 程序逆向分析 321
8.7.1 C++ STL的逆向分析 322
8.7.2 C++ 类的逆向分析 326
8.7.3 C++ 程序的RTTI 332
8.8 原生so动态库逆向分析 336
8.9 本章小结 337


第9章 Android原生程序动态调试
9.1 gdb调试器 338
9.1.1 ndk-gdb脚本 338
9.1.2 配置gdb调试器 339
9.1.3 gdb调试器的常用命令 340
9.1.4 使用gdb调试Android原生程序 342
9.1.5 gdb调试器的GUI前端 344
9.2 lldb调试器 346
9.2.1 配置lldb调试器 346
9.2.2 lldb调试器的常用命令 348
9.2.3 使用lldb调试Android原生程序 350
9.2.4 lldb调试器的GUI前端 353
9.3 使用IDA Pro调试Android原生程序 353
9.4 本章小结 358


0章 Hook与注入
10.1 Hook的类型 359
10.1.1 Dalvik Hook 359
10.1.2 ART Hook 362
10.1.3 LD_PRELOAD Hook 364
10.1.4 GOT Hook 366
10.1.5 Inline Hook 367
10.2 Hook框架Xposed 368
10.3 Hook场景与应用 372
10.3.1 开启日志调试输出 372
10.3.2 APK插件 373
10.3.3 绕过SSL Pinning 373
10.4 动态注入 374
10.4.1 so动态库注入 374
10.4.2 DEX注入 376
10.5 注入框架Frida 377
10.5.1 Frida的安装与配置 377
10.5.2 执行注入与Hook 378
10.5.3 跟踪Native方法 384
10.6 本章小结 386


1章 软件保护技术
11.1 软件保护技术简介 387
11.2 软件混淆技术 388
11.2.1 源码混淆 389
11.2.2 模板混淆 389
11.2.3 AST混淆 391
11.2.4 IR混淆 397
11.2.5 DEX混淆 397
11.2.6 DEX二次混淆 399
11.3 资源保护 401
11.4 完整性校验 403
11.5 反调试技术 404
11.5.1 调试器状态检测 404
11.5.2 调试器端口检测 404
11.5.3 进程状态检测 406
11.6 运行环境检测 407
11.6.1 模拟器检测 407
11.6.2 Root检测 409
11.6.3 Hook检测 409
11.7 本章小结 411


2章 软件壳
12.1 Android软件壳 412
12.2 软件壳的特征与侦察 413
12.2.1 编译器指纹 413
12.2.2 软件壳的特征 416
12.2.3 查壳工具 418
12.3 动态加载型壳 418
12.3.1 缓存脱壳法 418
12.3.2 内存Dump脱壳法 419
12.3.3 动态调试脱壳法 420
12.3.4 Hook脱壳法 423
12.3.5 系统定制脱壳法 424
12.4 代码抽取型壳 425
12.4.1 内存重组脱壳法 425
12.4.2 Hook脱壳法 427
12.4.3 系统定制脱壳法 427
12.5 代码混淆壳 429
12.5.1 LLVM基础 430
12.5.2 编写Pass 434
12.5.3 Obfuscator-LLVM 440
12.5.4 代码混淆壳的脱壳 443
12.6 本章小结 451


   作者介绍
网名"非虫”,独立软件安全研究员,资深安全专家,ISC2016安全训练营独立讲师,有丰富的软件安全实战经验。自2008年起,在知名安全杂志《黑客防线》上发表多篇技术文章,从此踏上软件安全研究道路,常年混迹于各大软件安全论坛,著有安全图书《Android软件安全与逆向分析》与《macOS软件安全与逆向分析》。

   编辑推荐
覆盖Windows、Linux、macOS上的Android软件开发、逆向分析及动态调试
关注ARM汇编、Hook、软件保护、软件壳及Java层与Native层的逆向分析
系统化的命令和工具介绍、循序渐进的学习路线及生动的应用场景指引动手实践