文章目录

  • 第1章 Android程序分析环境搭建 1
  • 第2章 如何分析Android程序 16
  • 第3章 进入Android Dalvik虚拟机 29
  • 第4章 Android可执行文件 56
  • 第5章 静态分析Android程序 94
  • 第6章 基于Android的ARM汇编语言基础——逆向原生! 157
  • 第7章 Android NDK程序逆向分析 187
  • 第8章 动态调试Android程序 236
  • 第9章 Android软件的破解技术 265
  • 第10章 Android程序的反破解技术 310
  • 第11章 Android系统攻击与防范 321
  • 第12章 DroidKongFu变种病毒实例分析 362

出版年: 2013-2

简介:
本书由浅入深、循序渐进地讲解了Android 系统的软件安全、逆向分析与加密解密技术。包括Android软件逆向分析和系统安全方面的必备知识及概念、如何静态分析Android 软件、如何动态调试Android 软件、Android 软件的破解与反破解技术的探讨,以及对典型Android 病毒的全面剖析。

豆瓣

第1章 Android程序分析环境搭建 1

1.1  Windows分析环境搭建 1
  1.1.1  安装JDK 1
  1.1.2  安装Android SDK 3
  1.1.3  安装Android NDK 5
  1.1.4  Eclipse集成开发环境 6
  1.1.5  安装CDT、ADT插件 6
  1.1.6  创建Android Virtual Device 8
  1.1.7  使用到的工具 9
  1.2  Linux分析环境搭建 9
  1.2.1  本书的Linux环境 9
  1.2.2  安装JDK 9
  1.2.3  在Ubuntu上安装Android SDK 10
  1.2.4  在Ubuntu上安装Android NDK 11
  1.2.5  在Ubuntu上安装Eclipse集成开发环境 12
  1.2.6  在Ubuntu上安装CDT、ADT插件 13
  1.2.7  创建Android Virtual Device 13
  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 World 52
  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  程序的主Activity 95
  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  恶意软件分析工具包——Androguard 135
  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  集成分析环境——santoku 154
  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 ARM 160
  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  如何启动DDMS 237
  8.2.2  使用LogCat查看调试信息 238
  8.3  定位关键代码 240
  8.3.1  代码注入法——让程序自己吐出注册码 240
  8.3.2  栈跟踪法 244
  8.3.3  Method Profiling 247
  8.4  使用AndBug调试Android程序 250
  8.4.1  安装AndBug 251
  8.4.2  使用AndBug 251
  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与gdbserver 260
  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  对抗dex2jar 311
  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

《Android软件安全与逆向分析》— Android 书籍相关推荐

  1. Android高级进阶书籍推荐

    中级进阶推荐看一下以下这几本书: <Android从入门到精通(附光盘)> 明日科技 编 <第一行代码2 Android(第二版)> 郭霖 著 <Android开发进阶 ...

  2. 【提升技能必备】这基本Android高级进阶的好书值得一看

    Android开发的书籍有很多,下面简单的就我看过的感觉写的很全面,很深入,很有启示意义的几本书推荐给大家,希望大家在闲暇之时也能买来看看.(只是介绍书籍,想买的自己百度书名.别误会.)当然如果你觉得 ...

  3. 【提升技能必备】这几本Android高级进阶的好书值得一看

    点击上方蓝字关注公众号 码个蛋第271次推文 备点年货 作者:AWeiLoveAndroid 博客:https://www.jianshu.com/u/f408bdadacce Android开发的书 ...

  4. [总]Android高级进阶之路

    个人Android高级进阶之路,目前按照这个目录执行,执行完毕再做扩展!!!!! 一.View的绘制 1)setContentView()的源码分析 2)SnackBar的源码分析 3)利用decor ...

  5. 11 | Android 高级进阶(源码剖析篇) Square 高效易用的 IO 框架 okio(四)

    作者简介:ASCE1885, <Android 高级进阶>作者. 本文由于潜在的商业目的,未经授权不开放全文转载许可,谢谢! 本文分析的源码版本已经 fork 到我的 Github. 超时 ...

  6. 《Android高级进阶》读书笔记

    <Android高级进阶>是据我所知的市面上唯一一本技术工具书,比较的高大全,作者的目的是为了对全领域有个初步的概念 No1: 在Android系统中,拥有事件传递处理能力的类有以下三种 ...

  7. 《Android高级进阶》小密圈开通啦

    @author ASCE1885的 Github 简书 微博 CSDN 知乎 <Android高级进阶>一书的读者可免费加入,后续会专注于原创或者分享 Android,iOS,React ...

  8. Android高级进阶——绘图篇(五)setXfermode 设置混合模式

    一.GPU硬件加速 1.概述 GPU英文全称Graphic Processing Unit,中文翻译为"图形处理器".与CPU不同,GPU是专门为处理图形任务而产生的芯片. 在GP ...

  9. (转)Android高级进阶--插曲-从Android5.0到Android9.0各版本变化

    原文:https://blog.csdn.net/gaoxiaoweiandy/article/details/83216001 从Android5.0到Android9.0 自从公司提出了一些出其不 ...

  10. Android高级进阶--插曲-从Android5.0到Android10各版本变化

    从Android5.0到Android10 一.Android5 1.ANDROID 5.0 行为变更: 声音和振动 (1)如果您当前使用 Ringtone.MediaPlayer 或 Vibrato ...

最新文章

  1. morphologyEx 形态学
  2. 永恒之蓝漏洞原理 445_新代码漏洞“永恒之黑”该如何警惕?
  3. python守护线程错误 退出子线程_请问用python里threading和queue模块来写多线程程序,子线程是如何结束的?...
  4. php图片地址参数错误,图片上传时一直显示请求地址错误怎么办
  5. html asp 日历_全球第一本《2021世界艺术日历》,正式发售!
  6. Qt文档阅读笔记-QWebView官方解析与实例
  7. lnmp + swoole 安装
  8. vb登录ftp服务器并打开文档,VB.Net实现登陆Ftp的方法
  9. 如果希望完全安装mysql应选择_Windows下安装MySQL最佳实践
  10. springboot-shiro-cas-redis集成session共享,权限共享
  11. 使用 spire.xls 免费版 excel 转换成 pdf
  12. 西普CTF训练(programe部分分析)
  13. Websphere 学习(二)
  14. 【电脑讲解】电脑知识入门大全,超详细电脑基础知识讲解
  15. 2.1HTML网页之table标签B
  16. linux va list,vsprintf函数以及va_list使用详解
  17. keil4单片机串口通信
  18. 读书笔记:《活出生命的意义》
  19. 梅科尔工作室E1-张冉-鸿蒙笔记4
  20. Android OpenGLES2.0(五)——绘制立方体

热门文章

  1. html-webpack-template, 一个更好的html web service插件
  2. Pytorch中的强化学习
  3. gdb进行多线程调试
  4. 有人认为,“中文编程”是解决中国程序员效率的秘密武器,请问它是一个“银弹”么?...
  5. Ubuntu server搭建vsftpd小记
  6. 大文件复制时块的取值问题
  7. Windows和Linux 服务器的访问方式
  8. 多模态 | 复旦推出跨视觉语言模态预训练模型,并达到SOTA
  9. 聊聊我的 ACL2020 论文
  10. 【推荐系统】推荐系统研究中常用的评价指标