Android软件安全与逆向分析

Android软件安全与逆向分析
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2013-02
版次: 1
ISBN: 9787115308153
定价: 69.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 407页
字数: 632千字
正文语种: 简体中文
367人买过
  •   《Android软件安全与逆向分析》由浅入深、循序渐进地讲解了Android系统的软件安全、逆向分析与加密解密技术。包括Android软件逆向分析和系统安全方面的必备知识及概念、如何静态分析Android软件、如何动态调试Android软件、Android软件的破解与反破解技术的探讨,以及对典型Android病毒的全面剖析。强实践性。缺乏可操作性,是Android安全方面现有论文、白皮书、技术文章大的问题之一,很多人读到后可能对内容有了一些概念,却不知道从何下手。这本书的几乎每一个部分,都结合实际例子,一步步讲解如何操作。强时效性。作者在写作的同时,持续跟随业界新进展,刚刚发布不久的Santoku虚拟机、APIMonitor等工具,以及Androguard的新特性等,已然出现在了这本书中。
      《Android软件安全与逆向分析》适合所有Android应用开发者、Android系统开发工程师、Android系统安全工作者阅读学习。
      丰生强(网名非虫),Android软件安全专家。看雪论坛Android安全版版主;安卓巴士开发交流版版主。
      对Android软件与系统安全有狂热的爱好和独到的见解,对Android系统的全部源代码进行过深入地研究和分析。逆向分析实战经验丰富。
      在国内信息安全杂志上发表过多篇有价值的软件安全文章,目前就职于国内某Android开发企业,常年混迹于看雪论坛(ID非虫)。
    第1章Android程序分析环境搭建
    1.1Windows分析环境搭建
    1.1.1安装JDK
    1.1.2安装AndroidSDK
    1.1.3安装AndroidNDK
    1.1.4Eclipse集成开发环境
    1.1.5安装CDT、ADT插件
    1.1.6创建AndroidVirtualDevice
    1.1.7使用到的工具
    1.2Linux分析环境搭建
    1.2.1本书的Linux环境
    1.2.2安装JDK
    1.2.3在Ubuntu上安装AndroidSDK
    1.2.4在Ubuntu上安装AndroidNDK
    1.2.5在Ubuntu上安装Eclipse集成开发环境
    1.2.6在Ubuntu上安装CDT、ADT插件
    1.2.7创建AndroidVirtualDevice
    1.2.8使用到的工具
    1.3本章小结

    第2章如何分析Android程序
    2.1编写第一个Android程序
    2.1.1使用Eclipse创建Android工程
    2.1.2编译生成APK文件
    2.2破解第一个程序
    2.2.1如何动手?
    2.2.2反编译APK文件
    2.2.3分析APK文件
    2.2.4修改Smali文件代码
    2.2.5重新编译APK文件并签名
    2.2.6安装测试
    2.3本章小结

    第3章进入AndroidDalvik虚拟机
    3.1Dalvik虚拟机的特点——掌握Android程序的运行原理
    3.1.1Dalvik虚拟机概述
    3.1.2Dalvik虚拟机与Java虚拟机的区别
    3.1.3Dalvik虚拟机是如何执行程序的
    3.1.4关于Dalvik虚拟机JIT(即时编译)
    3.2Dalvik汇编语言基础为分析Android程序做准备
    3.2.1Dalvik指令格式
    3.2.2DEX文件反汇编工具
    3.2.3了解Dalvik寄存器
    3.2.4两种不同的寄存器表示方法——v命名法与p命名法
    3.2.5Dalvik字节码的类型、方法与字段表示方法
    3.3Dalvik指令集
    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.4Dalvik指令集练习——写一个Dalvik版的HelloWorld
    3.4.1编写smali文件
    3.4.2编译smali文件
    3.4.3测试运行
    3.5本章小结

    第4章Android可执行文件
    4.1Android程序的生成步骤
    4.2Android程序的安装流程
    4.3dex文件格式
    4.3.1dex文件中的数据结构
    4.3.2dex文件整体结构
    4.3.3dex文件结构分析
    4.4odex文件格式
    4.4.1如何生成odex文件
    4.4.2odex文件整体结构
    4.4.3odex文件结构分析
    4.5dex文件的验证与优化工具dexopt的工作过程
    4.6Android应用程序另类破解方法
    4.7本章小结

    第5章静态分析Android程序
    5.1什么是静态分析
    5.2快速定位Android程序的关键代码
    5.2.1反编译apk程序
    5.2.2程序的主Activity
    5.2.3需重点关注的Application类
    5.2.4如何定位关键代码——六种方法
    5.3smali文件格式
    5.4Android程序中的类
    5.4.1内部类
    5.4.2监听器
    5.4.3注解类
    5.4.4自动生成的类
    5.5阅读反编译的smali代码
    5.5.1循环语句
    5.5.2switch分支语句
    5.5.3try/catch语句
    5.6使用IDAPro静态分析Android程序
    5.6.1IDAPro对Android的支持
    5.6.2如何操作
    5.6.3定位关键代码——使用IDAPro进行破解的实例
    5.7恶意软件分析工具包——Androguard
    5.7.1Androguard的安装与配置
    5.7.2Androguard的使用方法
    5.7.3使用Androguard配合Gephi进行静态分析
    5.7.4使用androlyze.py进行静态分析
    5.8其他静态分析工具
    5.9阅读反编译的Java代码
    5.9.1使用dex2jar生成jar文件
    5.9.2使用jd-gui查看jar文件的源码
    5.10集成分析环境——santoku
    5.11本章小结

    第6章基于Android的ARM汇编语言基础——逆向原生!
    6.1Android与ARM处理器
    6.1.1ARM处理器架构概述
    6.1.2ARM处理器家族
    6.1.3Android支持的处理器架构
    6.2原生程序与ARM汇编语言——逆向你的原生HelloARM
    6.2.1原生程序逆向初步
    6.2.2原生程序的生成过程
    6.2.3必须了解的ARM知识
    6.3ARM汇编语言程序结构
    6.3.1完整的ARM汇编程序
    6.3.2处理器架构定义
    6.3.3段定义
    6.3.4注释与标号
    6.3.5汇编器指令
    6.3.6子程序与参数传递
    6.4ARM处理器寻址方式
    6.4.1立即寻址
    6.4.2寄存器寻址
    6.4.3寄存器移位寻址
    6.4.4寄存器间接寻址
    6.4.5基址寻址
    6.4.6多寄存器寻址
    6.4.7堆栈寻址
    6.4.8块拷贝寻址
    6.4.9相对寻址
    6.5ARM与Thumb指令集
    6.5.1指令格式
    6.5.2跳转指令
    6.5.3存储器访问指令
    6.5.4数据处理指令
    6.5.5其他指令
    6.6用于多媒体编程与浮点计算的NEON与VFP指令集
    6.7本章小结

    第7章AndroidNDK程序逆向分析
    7.1Android中的原生程序
    7.1.1编写一个例子程序
    7.1.2如何编译原生程序
    7.2原生程序的启动流程分析
    7.2.1原生程序的入口函数
    7.2.2main函数究竟何时被执行
    7.3原生文件格式
    7.4原生C程序逆向分析
    7.4.1原生程序的分析方法
    7.4.2for循环语句反汇编代码的特点
    7.4.3if...else分支语句反汇编代码的特点
    7.4.4while循环语句反汇编代码的特点
    7.4.5switch分支语句反汇编代码的特点
    7.4.6原生程序的编译时优化
    7.5原生C++程序逆向分析
    7.5.1C++类的逆向
    7.5.2AndroidNDK对C++特性的支持
    7.5.3静态链接STL与动态链接STL的代码区别
    7.6AndroidNDKJNIAPI逆向分析
    7.6.1AndroidNDK提供了哪些函数
    7.6.2如何静态分析AndroidNDK程序
    7.7本章小结

    第8章动态调试Android程序
    8.1Android动态调试支持
    8.2DDMS的使用
    8.2.1如何启动DDMS
    8.2.2使用LogCat查看调试信息
    8.3定位关键代码
    8.3.1代码注入法——让程序自己吐出注册码
    8.3.2栈跟踪法
    8.3.3MethodProfiling
    8.4使用AndBug调试Android程序
    8.4.1安装AndBug
    8.4.2使用AndBug
    8.5使用IDAPro调试Android原生程序
    8.5.1调试Android原生程序
    8.5.2调试Android原生动态链接库
    8.6使用gdb调试Android原生程序
    8.6.1编译gdb与gdbserver
    8.6.2如何调试
    8.7本章小结

    第9章Android软件的破解技术
    9.1试用版软件
    9.1.1试用版软件的种类
    9.1.2实例破解——针对授权KEY方式的破解
    9.2序列号保护
    9.3网络验证
    9.3.1网络验证保护思路
    9.3.2实例破解——针对网络验证方式的破解
    9.4In-appBilling(应用内付费)
    9.4.1In-appBilling原理
    9.4.2In-appBilling破解方法
    9.5GooglePlayLicense保护
    9.5.1GooglePlayLicense保护机制
    9.5.2实例破解——针对GooglePlayLicense方式的破解
    9.6重启验证
    9.6.1重启验证保护思路
    9.6.2实例破解——针对重启验证方式的破解
    9.7如何破解其他类型的Android程序
    9.7.1MonoforAndroid开发的程序及其破解方法
    9.7.2QtforAndroid开发的程序及其破解方法
    9.8本章小结

    第10章Android程序的反破解技术
    10.1对抗反编译
    10.1.1如何对抗反编译工具
    10.1.2对抗dex2jar
    10.2对抗静态分析
    10.2.1代码混淆技术
    10.2.2NDK保护
    10.2.3外壳保护
    10.3对抗动态调试
    10.3.1检测调试器
    10.3.2检测模拟器
    10.4防止重编译
    10.4.1检查签名
    10.4.2校验保护
    10.5本章小结

    第11章Android系统攻击与防范
    11.1Android系统安全概述
    11.2手机ROOT带来的危害
    11.2.1为什么要ROOT手机
    11.2.2手机ROOT后带来的安全隐患
    11.2.3Android手机ROOT原理
    11.3Android权限攻击
    11.3.1Android权限检查机制
    11.3.2串谋权限攻击
    11.3.3权限攻击检测
    11.4Android组件安全
    11.4.1Activity安全及Activity劫持演示
    11.4.2BroadcastReceiver安全
    11.4.3Service安全
    11.4.4ContentProvider安全
    11.5数据安全
    11.5.1外部存储安全
    11.5.2内部存储安全
    11.5.3数据通信安全
    11.6ROM安全
    11.6.1ROM的种类
    11.6.2ROM的定制过程
    11.6.3定制ROM的安全隐患
    11.6.4如何防范
    11.7本章小结

    第12章DroidKongFu变种病毒实例分析
    12.1DroidKongFu病毒介绍
    12.2配置病毒分析环境
    12.3病毒执行状态分析
    12.3.1使用APIMonitor初步分析
    12.3.2使用DroidBox动态分析
    12.3.3其他动态分析工具
    12.4病毒代码逆向分析
    12.4.1Java层启动代码分析
    12.4.2Native层启动代码分析
    12.4.3Native层病毒核心分析
    12.5DroidKongFu病毒框架总结
    12.6病毒防治
    12.7本章小结
    ……
  • 内容简介:
      《Android软件安全与逆向分析》由浅入深、循序渐进地讲解了Android系统的软件安全、逆向分析与加密解密技术。包括Android软件逆向分析和系统安全方面的必备知识及概念、如何静态分析Android软件、如何动态调试Android软件、Android软件的破解与反破解技术的探讨,以及对典型Android病毒的全面剖析。强实践性。缺乏可操作性,是Android安全方面现有论文、白皮书、技术文章大的问题之一,很多人读到后可能对内容有了一些概念,却不知道从何下手。这本书的几乎每一个部分,都结合实际例子,一步步讲解如何操作。强时效性。作者在写作的同时,持续跟随业界新进展,刚刚发布不久的Santoku虚拟机、APIMonitor等工具,以及Androguard的新特性等,已然出现在了这本书中。
      《Android软件安全与逆向分析》适合所有Android应用开发者、Android系统开发工程师、Android系统安全工作者阅读学习。
  • 作者简介:
      丰生强(网名非虫),Android软件安全专家。看雪论坛Android安全版版主;安卓巴士开发交流版版主。
      对Android软件与系统安全有狂热的爱好和独到的见解,对Android系统的全部源代码进行过深入地研究和分析。逆向分析实战经验丰富。
      在国内信息安全杂志上发表过多篇有价值的软件安全文章,目前就职于国内某Android开发企业,常年混迹于看雪论坛(ID非虫)。
  • 目录:
    第1章Android程序分析环境搭建
    1.1Windows分析环境搭建
    1.1.1安装JDK
    1.1.2安装AndroidSDK
    1.1.3安装AndroidNDK
    1.1.4Eclipse集成开发环境
    1.1.5安装CDT、ADT插件
    1.1.6创建AndroidVirtualDevice
    1.1.7使用到的工具
    1.2Linux分析环境搭建
    1.2.1本书的Linux环境
    1.2.2安装JDK
    1.2.3在Ubuntu上安装AndroidSDK
    1.2.4在Ubuntu上安装AndroidNDK
    1.2.5在Ubuntu上安装Eclipse集成开发环境
    1.2.6在Ubuntu上安装CDT、ADT插件
    1.2.7创建AndroidVirtualDevice
    1.2.8使用到的工具
    1.3本章小结

    第2章如何分析Android程序
    2.1编写第一个Android程序
    2.1.1使用Eclipse创建Android工程
    2.1.2编译生成APK文件
    2.2破解第一个程序
    2.2.1如何动手?
    2.2.2反编译APK文件
    2.2.3分析APK文件
    2.2.4修改Smali文件代码
    2.2.5重新编译APK文件并签名
    2.2.6安装测试
    2.3本章小结

    第3章进入AndroidDalvik虚拟机
    3.1Dalvik虚拟机的特点——掌握Android程序的运行原理
    3.1.1Dalvik虚拟机概述
    3.1.2Dalvik虚拟机与Java虚拟机的区别
    3.1.3Dalvik虚拟机是如何执行程序的
    3.1.4关于Dalvik虚拟机JIT(即时编译)
    3.2Dalvik汇编语言基础为分析Android程序做准备
    3.2.1Dalvik指令格式
    3.2.2DEX文件反汇编工具
    3.2.3了解Dalvik寄存器
    3.2.4两种不同的寄存器表示方法——v命名法与p命名法
    3.2.5Dalvik字节码的类型、方法与字段表示方法
    3.3Dalvik指令集
    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.4Dalvik指令集练习——写一个Dalvik版的HelloWorld
    3.4.1编写smali文件
    3.4.2编译smali文件
    3.4.3测试运行
    3.5本章小结

    第4章Android可执行文件
    4.1Android程序的生成步骤
    4.2Android程序的安装流程
    4.3dex文件格式
    4.3.1dex文件中的数据结构
    4.3.2dex文件整体结构
    4.3.3dex文件结构分析
    4.4odex文件格式
    4.4.1如何生成odex文件
    4.4.2odex文件整体结构
    4.4.3odex文件结构分析
    4.5dex文件的验证与优化工具dexopt的工作过程
    4.6Android应用程序另类破解方法
    4.7本章小结

    第5章静态分析Android程序
    5.1什么是静态分析
    5.2快速定位Android程序的关键代码
    5.2.1反编译apk程序
    5.2.2程序的主Activity
    5.2.3需重点关注的Application类
    5.2.4如何定位关键代码——六种方法
    5.3smali文件格式
    5.4Android程序中的类
    5.4.1内部类
    5.4.2监听器
    5.4.3注解类
    5.4.4自动生成的类
    5.5阅读反编译的smali代码
    5.5.1循环语句
    5.5.2switch分支语句
    5.5.3try/catch语句
    5.6使用IDAPro静态分析Android程序
    5.6.1IDAPro对Android的支持
    5.6.2如何操作
    5.6.3定位关键代码——使用IDAPro进行破解的实例
    5.7恶意软件分析工具包——Androguard
    5.7.1Androguard的安装与配置
    5.7.2Androguard的使用方法
    5.7.3使用Androguard配合Gephi进行静态分析
    5.7.4使用androlyze.py进行静态分析
    5.8其他静态分析工具
    5.9阅读反编译的Java代码
    5.9.1使用dex2jar生成jar文件
    5.9.2使用jd-gui查看jar文件的源码
    5.10集成分析环境——santoku
    5.11本章小结

    第6章基于Android的ARM汇编语言基础——逆向原生!
    6.1Android与ARM处理器
    6.1.1ARM处理器架构概述
    6.1.2ARM处理器家族
    6.1.3Android支持的处理器架构
    6.2原生程序与ARM汇编语言——逆向你的原生HelloARM
    6.2.1原生程序逆向初步
    6.2.2原生程序的生成过程
    6.2.3必须了解的ARM知识
    6.3ARM汇编语言程序结构
    6.3.1完整的ARM汇编程序
    6.3.2处理器架构定义
    6.3.3段定义
    6.3.4注释与标号
    6.3.5汇编器指令
    6.3.6子程序与参数传递
    6.4ARM处理器寻址方式
    6.4.1立即寻址
    6.4.2寄存器寻址
    6.4.3寄存器移位寻址
    6.4.4寄存器间接寻址
    6.4.5基址寻址
    6.4.6多寄存器寻址
    6.4.7堆栈寻址
    6.4.8块拷贝寻址
    6.4.9相对寻址
    6.5ARM与Thumb指令集
    6.5.1指令格式
    6.5.2跳转指令
    6.5.3存储器访问指令
    6.5.4数据处理指令
    6.5.5其他指令
    6.6用于多媒体编程与浮点计算的NEON与VFP指令集
    6.7本章小结

    第7章AndroidNDK程序逆向分析
    7.1Android中的原生程序
    7.1.1编写一个例子程序
    7.1.2如何编译原生程序
    7.2原生程序的启动流程分析
    7.2.1原生程序的入口函数
    7.2.2main函数究竟何时被执行
    7.3原生文件格式
    7.4原生C程序逆向分析
    7.4.1原生程序的分析方法
    7.4.2for循环语句反汇编代码的特点
    7.4.3if...else分支语句反汇编代码的特点
    7.4.4while循环语句反汇编代码的特点
    7.4.5switch分支语句反汇编代码的特点
    7.4.6原生程序的编译时优化
    7.5原生C++程序逆向分析
    7.5.1C++类的逆向
    7.5.2AndroidNDK对C++特性的支持
    7.5.3静态链接STL与动态链接STL的代码区别
    7.6AndroidNDKJNIAPI逆向分析
    7.6.1AndroidNDK提供了哪些函数
    7.6.2如何静态分析AndroidNDK程序
    7.7本章小结

    第8章动态调试Android程序
    8.1Android动态调试支持
    8.2DDMS的使用
    8.2.1如何启动DDMS
    8.2.2使用LogCat查看调试信息
    8.3定位关键代码
    8.3.1代码注入法——让程序自己吐出注册码
    8.3.2栈跟踪法
    8.3.3MethodProfiling
    8.4使用AndBug调试Android程序
    8.4.1安装AndBug
    8.4.2使用AndBug
    8.5使用IDAPro调试Android原生程序
    8.5.1调试Android原生程序
    8.5.2调试Android原生动态链接库
    8.6使用gdb调试Android原生程序
    8.6.1编译gdb与gdbserver
    8.6.2如何调试
    8.7本章小结

    第9章Android软件的破解技术
    9.1试用版软件
    9.1.1试用版软件的种类
    9.1.2实例破解——针对授权KEY方式的破解
    9.2序列号保护
    9.3网络验证
    9.3.1网络验证保护思路
    9.3.2实例破解——针对网络验证方式的破解
    9.4In-appBilling(应用内付费)
    9.4.1In-appBilling原理
    9.4.2In-appBilling破解方法
    9.5GooglePlayLicense保护
    9.5.1GooglePlayLicense保护机制
    9.5.2实例破解——针对GooglePlayLicense方式的破解
    9.6重启验证
    9.6.1重启验证保护思路
    9.6.2实例破解——针对重启验证方式的破解
    9.7如何破解其他类型的Android程序
    9.7.1MonoforAndroid开发的程序及其破解方法
    9.7.2QtforAndroid开发的程序及其破解方法
    9.8本章小结

    第10章Android程序的反破解技术
    10.1对抗反编译
    10.1.1如何对抗反编译工具
    10.1.2对抗dex2jar
    10.2对抗静态分析
    10.2.1代码混淆技术
    10.2.2NDK保护
    10.2.3外壳保护
    10.3对抗动态调试
    10.3.1检测调试器
    10.3.2检测模拟器
    10.4防止重编译
    10.4.1检查签名
    10.4.2校验保护
    10.5本章小结

    第11章Android系统攻击与防范
    11.1Android系统安全概述
    11.2手机ROOT带来的危害
    11.2.1为什么要ROOT手机
    11.2.2手机ROOT后带来的安全隐患
    11.2.3Android手机ROOT原理
    11.3Android权限攻击
    11.3.1Android权限检查机制
    11.3.2串谋权限攻击
    11.3.3权限攻击检测
    11.4Android组件安全
    11.4.1Activity安全及Activity劫持演示
    11.4.2BroadcastReceiver安全
    11.4.3Service安全
    11.4.4ContentProvider安全
    11.5数据安全
    11.5.1外部存储安全
    11.5.2内部存储安全
    11.5.3数据通信安全
    11.6ROM安全
    11.6.1ROM的种类
    11.6.2ROM的定制过程
    11.6.3定制ROM的安全隐患
    11.6.4如何防范
    11.7本章小结

    第12章DroidKongFu变种病毒实例分析
    12.1DroidKongFu病毒介绍
    12.2配置病毒分析环境
    12.3病毒执行状态分析
    12.3.1使用APIMonitor初步分析
    12.3.2使用DroidBox动态分析
    12.3.3其他动态分析工具
    12.4病毒代码逆向分析
    12.4.1Java层启动代码分析
    12.4.2Native层启动代码分析
    12.4.3Native层病毒核心分析
    12.5DroidKongFu病毒框架总结
    12.6病毒防治
    12.7本章小结
    ……
查看详情
12
您可能感兴趣 / 更多
Android软件安全与逆向分析
Android软件安全权威指南
丰生强 著
Android软件安全与逆向分析
macOS软件安全与逆向分析
丰生强、邢俊杰 著