新書推薦:
《
母亲的选择:看不见的移民保姆与女性工作
》
售價:HK$
74.8
《
城邦政治与灵魂政治——柏拉图《理想国》中的政治哲学研究
》
售價:HK$
129.8
《
3分钟漫画墨菲定律:十万个为什么科普百科思维方式心理学 胜天半子人定胜天做事与成事的权衡博弈之道
》
售價:HK$
54.8
《
1911:危亡警告与救亡呼吁
》
售價:HK$
76.8
《
旷野人生:吉姆·罗杰斯的全球投资探险
》
售價:HK$
75.9
《
笼中王国 : 18世纪法国的珍禽异兽与社会文化
》
售價:HK$
74.8
《
思考的框架3:风靡华尔街的思维训练法
》
售價:HK$
64.9
《
被记忆的西周史(中山大学中珠学术译丛)
》
售價:HK$
151.8
|
內容簡介: |
本书全面介绍Android应用的安全防护方法与逆向分析技术,分为四篇:基础篇、防护篇、工具篇、操作篇,共26章。基础篇包括第1~7章,主要介绍移动应用安全的基础知识,包括Android中NDK开发知识、逆向中需要用到的命令、编译之后的apk包含的四类主要文件格式解析等。防护篇包括第8~14章,主要介绍移动应用安全防护的相关技术,包括混淆、签名校验、反调试检测等安全策略,Android应用升级权限、降低权限等,配置文件中的问题,应用签名机制,apk的加固策略,so文件的加固策略等。工具篇包括第15~19章,主要介绍逆向分析常用的工具以及使用场景,包括如何开启设备的总调试开关,反编译利器apktool、Jadx、Xposed、CydiaSubstrate等。操作篇包括第20~26章,主要介绍Android中的逆向分析技巧,包括静态方式和动态方式,介
|
目錄:
|
目录
对本书的赞誉
前言
基础篇
第1章 Android中锁屏密码加密算法分析2
1.1 锁屏密码方式2
1.2 密码算法分析2
1.2.1 输入密码算法分析2
1.2.2 手势密码算法分析7
1.3 本章小结9
第2章 Android中NDK开发10
2.1 搭建开发环境10
2.1.1 Eclipse环境搭建10
2.1.2 Android Studio环境搭建12
2.2 第一行代码:HelloWorld14
2.3 JNIEnv类型和jobject类型18
2.3.1 JNIEnv类型19
2.3.2 jobject参数obj19
2.3.3 Java类型和native中的类型映射关系19
2.3.4 jclass类型19
2.3.5 native中访问Java层代码20
2.4 JNIEnv类型中方法的使用21
2.4.1 native中获取方法的Id22
2.4.2 Java和C++中的多态机制24
2.5 创建Java对象及字符串的操作方法27
2.5.1 native中创建Java对象27
2.5.2 native中操作Java字符串28
2.6 CC++中操作Java中的数组32
2.6.1 操作基本类型数组32
2.6.2 操作对象类型数组33
2.7 CC++中的引用类型和ID的缓存36
2.7.1 引用类型36
2.7.2 缓存方法37
2.8 本章小结38
第3章 Android中开发与逆向常用命令
总结39
3.1 基础命令39
3.2 非shell命令40
3.3 shell命令45
3.4 操作apk命令49
3.5 进程命令50
3.6 本章小结52
第4章 so文件格式解析53
4.1 ELF文件格式53
4.2 解析工具54
4.3 解析ELF文件57
4.4 验证解析结果60
4.5 本章小结61
第5章 AndroidManifest.xml文件格式解析62
5.1 格式分析62
5.2 格式解析63
5.2.1 解析头部信息63
5.2.2 解析String Chunk63
5.2.3 解析ResourceId Chunk68
5.2.4 解析Start Namespace Chunk70
5.2.5 解析Start Tag Chunk72
5.3 本章小结82
第6章 resource.arsc文件格式解析83
6.1 Android中资源文件id格式83
6.2 数据结构定义85
6.2.1 头部信息85
6.2.2 资源索引表的头部信息85
6.2.3 资源项的值字符串资源池86
6.2.4 Package数据块87
6.2.5 类型规范数据块88
6.2.6 资源类型项数据块89
6.3 解析代码93
6.3.1 解析头部信息93
6.3.2 解析资源字符串内容94
6.3.3 解析包信息96
6.3.4 解析资源类型的字符串内容97
6.3.5 解析资源值字符串内容98
6.3.6 解析正文内容99
6.4 本章小结105
第7章 dex文件格式解析106
7.1 dex文件格式106
7.2 构造dex文件107
7.3 解析数据结构108
7.3.1 头部信息Header结构108
7.3.2 string_ids数据结构112
7.3.3 type_ids数据结构115
7.3.4 proto_ids数据结构116
7.3.5 field_ids数据结构118
7.3.6 method_ids数据结构119
7.3.7 class_defs数据结构120
7.4 解析代码128
7.4.1 解析头部信息128
7.4.2 解析string_ids索引区129
7.4.3 解析type_ids索引区130
7.4.4 解析proto_ids索引区130
7.4.5 解析field_ids索引区131
7.4.6 解析method_ids索引区132
7.4.7 解析class_def区域132
7.5 本章小结134
防护篇
第8章 Android应用安全防护的基本策略136
8.1 混淆机制136
8.1.1 代码混淆136
8.1.2 资源混淆136
8.2 签名保护138
8.3 手动注册native方法140
8.4 反调试检测144
8.5 本章小结145
第9章 Android中常用权限分析147
9.1 辅助功能权限147
9.2 设备管理权限148
9.3 通知栏管理权限149
9.4 VPN开发权限149
9.5 本章小结150
第10章 Android中的run-as命令151
10.1 命令分析和使用151
10.2 Linux中的setuid和setgid概念159
10.3 Android中setuid和setgid的使用
场景162
10.4 run-as命令的作用165
10.5 调用系统受uid限制的API166
10.6 本章小结168
第11章 Android中的allowBackup属性169
11.1 allowBackup属性介绍169
11.2 如何获取应用隐私数据170
11.3 如何恢复应用数据175
11.4 本章小结175
第12章 Android中的签名机制176
12.1 基本概念176
12.2 Android中签名流程182
12.3 Android中为何采用这种签名机制191
12.4 本章小结192
第13章 Android应用加固原理193
13.1 加固原理解析193
13.2 案例分析195
13.3 运行项目206
13.4 本章小结208
第14章 Android中的so加固原理209
14.1 基于对so中的section加密实现so加固209
14.1.1 技术原理209
14.1.2 实现方案210
14.1.3 代码实现210
14.1.4 总结220
14.2 基于对so中的函数加密实现so加固221
14.2.1 技术原理221
14.2.2 实现方案223
14.2.3 代码实现224
14.3 本章小结230
工具篇
第15章 Android逆向分析基础232
15.1 逆向工具232
15.2 逆向基本知识233
15.3 打开系统调试总开关233
15.4 本章小结237
第16章 反编译神器apktool和Jadx238
16.1 逆向操作惯例238
16.2 反编译常见的
|
內容試閱:
|
前言随着移动应用的广泛使用,不可忽视的一个问题就是信息安全。本书从Android应用安全和逆向两个方面来介绍移动开发中如何做好安全。
我本来不是从事安全逆向工作的,但是一个偶然的机会使我发现逆向研究非常有趣,因为在逆向出别人的App那一刻会觉得无比自豪。
第一次逆向是因为遇到一个问题需要去解决,记得当时想查看一个App的内部资源信息,尝试使用apktool反编译程序,惊奇地发现原来别人的App反编译之后会有这么多东西,逆向真的很有趣。而后在开发中无法实现或者没有相应的资源时就去反编译别人的App,查看对应的代码怎么实现。后来就反编译那些有阻碍的应用,慢慢摸索,克服困难,每研究成功一个案例,便是对自身技能的一次提高。从第一次使用apktool工具,到使用Jadx可视化工具,再到用IDA工具调试,一步一个脚印走过来,经验逐渐丰富,技能也慢慢提升了。
逆向研究需要一种逆向思维,我没有接受过专业训练,只是在业余时间看相关书籍,找几个样本研究,从简单到难,在这个过程中慢慢学到很多技术。本书就是我这几年学习与探索的总结。
本书涉及内容有点多,但是没有一章是多余的,每章内容都是干货。本书包括26章,分为四篇。
基础篇基础篇包括第1~7章,主要介绍Android技术中与逆向相关的基础知识,为后续章节的学习做准备。
第1章通过对Android中锁屏密码加密算法的分析,带领读者进入安全世界,这方面内容不算复杂,但是需要阅读Android源码来得到算法分析,其中一个知识点是如何通过查看Android源码来帮助解决开发过程中遇到的问题,这是所有Android开发人员必备的技能。通过找到锁屏密码入口,一步一步跟踪最终得到密码加密算法,以及加密之后的内容存放在哪里。这是进入安全逆向分析世界的大门。
第2章主要介绍Android中NDK开发知识。为了安全考虑,现在很多应用把一部分功能做到了Native层,所以如果不知道NDK开发技巧,就无法进行后续的逆向操作。这一章从搭建环境到每个方法的使用,详细讲解了Android中NDK开发的技巧。
第3章主要介绍Android中开发以及逆向需要用到的命令,每个命令都有特定的案例和用法,这些命令不仅仅用于逆向,也能够帮助开发人员提升开发效率,所以了解和掌握这些命令是至关重要的。
第4~7章主要剖析Android中编译之后的apk包含的四类主要文件格式,这部分内容可能有点枯燥,但是至关重要,因为在安全防护或者逆向分析中都有很重要的意义。
防护篇防护篇包括第8~14章,主要介绍安全防护的相关内容,是本书的核心内容之一。
第8章介绍现在一些应用主要用到的安全防护策略,如混淆、签名校验、反调试检测等,每个安全策略都给出了详细介绍。
第9章介绍Android开发中经常用到的一些权限,介绍如果对这些特殊权限操作不当会带来什么样的安全问题,以及如何预防。
第10章介绍Android中的run-as命令以及如何分析系统安全策略,详细介绍了App、shell、system这三种身份,并介绍了一些技巧,比如如何对应用进行升级权限、降低权限等操作。
第11章讲解Android配置文件中的allowBackup属性引发的安全问题,以及如何应对。本章用一个案例来分析如何导出沙盒数据查看应用中的密码信息,修改密码信息然后再进行还原,全程无需root权限即可完成。
第12章介绍Android中的应用签名机制,讲解应用的签名信息是如何保存的、如何验证的,签名机制的流程,以及如何预防安全问题。
第13章介绍在Android中对apk进行加固的策略,以及如何对恶意者分析apk文件的操作进行防护,还涉及Android中的动态加载机制,并通过动态加载技术实现apk文件的解密功能。
第14章介绍在Android中如何对so文件加固,如何做到安全防护功能。
工具篇工具篇包括第15~19章,主要介绍逆向分析需要用到的几个工具,本书从实际应用出发,详细介绍每个工具的具体用法,特别是在使用的过程中遇到问题时的处理方法。
第15章介绍逆向工作中用到的工具,以及如何开启设备的调试总开关,这个技能在逆向调试的时候非常重要。
第16章主要介绍Android中反编译神器apktool和Jadx,详细介绍了这两个工具如何使用,以及使用过程中遇到问题时的处理方法。
第17章主要介绍Android中一款Hook神器Xposed,详细介绍这个工具的用法,以及遇到问题时的处理方法。
第18章主要介绍一款脱壳工具,它是基于Xposed工具编写的,可以自动脱壳。
第19章主要介绍Android中另外一款Hook神器Cydia Substrate,详细介绍了这个工具的用法以及遇到问题时的处理方法。
操作篇操作篇包括第20~26章,主要介绍Android中的逆向操作技巧,包括静态方式和动态方式逆向,用一个经典的加固应用作为逆向案例分析了现阶段脱壳的大致流程,还介绍了Android开发中会遇到的系统漏洞,并分析了一个经典的病毒样本。
第20章主要介绍如何利用静态方式逆向应用,用一个案例讲解了静态防护逆向应用的流程。
第21章主要介绍如何使用Eclipse动态调试smali代码来逆向应用,用一个案例分析整个操作流程。
第22章主要介
|
|