Android软件安全与逆向分析.pdf
http://www.100md.com
2020年12月1日
![]() |
| 第1页 |
![]() |
| 第10页 |
![]() |
| 第15页 |
![]() |
| 第24页 |
![]() |
| 第43页 |
参见附件(51011KB,428页)。
Android软件安全与逆向分析
本书由浅入深、循序渐进地讲解了Android 系统的软件安全、逆向分析与加密解密技术。包括Android软件逆向分析和系统安全方面的必备知识及概念等内容,感兴趣的就快来吧

内容简介
本书由浅入深、循序渐进地讲解了Android 系统的软件安全、逆向分析与加密解密技术。包括Android软件逆向分析和系统安全方面的必备知识及概念、如何静态分析Android 软件、如何动态调试Android 软件、Android 软件的破解与反破解技术的探讨,以及对典型Android 病毒的全面剖析。
本书适合所有Android 应用开发者、Android 系统开发工程师、Android 系统安全工作者阅读学习。
相关内容部分预览







编辑推荐
每一位Android开发者的必备之书!在Android这个平台,我们已面临诸多威胁!
2013年超过1800万台Android设备会遭遇某种形式的恶意软件的攻击。
恶意代码和病毒数量呈指数增长;
应用软件和数字内容的版权不断遭到侵害;
软件破解、篡改、广告库修改和植入、应用内付费破解等普遍存在;
软件本身的安全漏洞也频繁出现在国内外互联网企业的产品中;
数据泄露和账户被盗等潜在风险让人担忧;
官方系统、第三方定制系统和预装软件的漏洞不断被发现。
要掌握主动,免除威胁,你应了解真相!
安全技术几乎都是双刃剑,它们既能协助我们开发更有效的保护技术,也几乎必定会被攻击者学习和参考。这里的问题是,大量安全技术的首次大范围公开,是否会带来广泛的模仿和学习,从而引发更多的攻击?在这个问题上,安全界一直存在争议。这是任何一本里程碑式的安全书籍都无法绕开的话题。
在《信息安全工程》中,Ross Anderson说:“尽管一些恶意分子会从这样的书中获益,但他们大都已经知道了这些技巧,而好人们获得的收益会多得多。”
正是基于对这种观念的认同,才使得这本书呈现于此。
编辑的话
每一本书的诞生,都有让人记住的事情。在这本书的出版中,我印象深刻的是三点:
一,作者丰生强在一次给我交来样稿时,其粗糙不规范的写书格式和读起来不是那么顺溜的语言表达让我囧了一下,我耐心的(也或许是有些耐着性子的?)
在QQ上边截图边详细地告诉了他有哪些地方的格式被他忽略了,有哪些地方的话说得不够清楚。
我说完后,他说他会认真修改好后再次给我发来。但说实话,我心里没指望他一次就能把格式给改好,因为对于一次写书的作者来说,这种情况几乎不曾出现过。
我做了继续指导第3、4次的心理准备。让我没想到的是,几天后他第二次交来的稿件就相当靓仔,让我多少有些不相信自己的眼睛,格式规范美观,语言流畅清楚,很难相信这是同一个人仅相隔几天后的作品。他跟我说他是一个字一个字地来阅读和修改每句话的。
二,他是很少的按时且保质保量完成书稿的。对于作者,不管水平高低,大多都擅长干一件事情——拖稿,而策划编辑不得不被迫干另一件事情——催稿。
但丰生强以实际行动打破了这一魔咒,他努力工作,在合同规定的期限内按时交来了全稿。作为对作者拖稿见怪不怪的一名策划编辑来说,纵然不至于说是老泪纵横吧,那也是感触良多啊。
但从另一角度说,那些能完全视合同交稿期限为无物的作者也着实让人不敢小觑,这得有多强大的心理素质才能做到这一点呢,就这么心平气地跨过了最后期限。真心让人纠结。
三,在整个写作过程中,在谈及技术时,丰生强所表现出的那些热情、专注和乐观。我一直信奉的一点是,如果一个作者不能在他所钻研的领域体会到乐趣和幸福,那这样的作者写出来的东西是不值得一读的。好的内容就像好的食材,而那份热情和乐趣则是烹饪的手法。
现在,书已经打开,希望你会喜欢。
本书策划编辑 陈冰
2013年1月15日
内容简介
《Android软件安全与逆向分析》由浅入深、循序渐进地讲解了Android系统的软件安全、逆向分析与加密解密技术。包括Android软件逆向分析和系统安全方面的必备知识及概念、如何静态分析Android软件、如何动态调试Android软件、Android软件的破解与反破解技术的探讨,以及对典型Android病毒的全面剖析。强实践性。缺乏可操作性,是Android安全方面现有论文、白皮书、技术文章大的问题之一,很多人读到后可能对内容有了一些概念,却不知道从何下手。这本书的几乎每一个部分,都结合实际例子,一步步讲解如何操作。强时效性。作者在写作的同时,持续跟随业界新进展,刚刚发布不久的Santoku虚拟机、APIMonitor等工具,以及Androguard的新特性等,已然出现在了这本书中。
《Android软件安全与逆向分析》适合所有Android应用开发者、Android系统开发工程师、Android系统安全工作者阅读学习。
作者简介
丰生强(网名非虫),Android软件安全专家。看雪论坛Android安全版版主;安卓巴士开发交流版版主。
对Android软件与系统安全有狂热的爱好和独到的见解,对Android系统的全部源代码进行过深入地研究和分析。逆向分析实战经验丰富。
在国内信息安全杂志上发表过多篇有价值的软件安全文章,目前就职于国内某Android开发企业,常年混迹于看雪论坛(ID非虫)。
目录
第1章Android程序分析环境搭建1
1.1Windows分析环境搭建1
1.1.1安装JDK1
1.1.2安装Android SDK3
1.1.3安装Android NDK5
1.1.4Eclipse集成开发环境6
1.1.5安装CDT、ADT插件6
1.1.6创建Android Virtual Device8
1.1.7使用到的工具9
1.2Linux分析环境搭建9
1.2.1本书的Linux环境9
1.2.2安装JDK9
1.2.3在Ubuntu上安装Android SDK10
1.2.4在Ubuntu上安装Android NDK11
1.2.5在Ubuntu上安装Eclipse集成开发环境12
1.2.6在Ubuntu上安装CDT、ADT插件13
1.2.7创建Android Virtual Device13
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.1Dalvik虚拟机的特点——掌握Android程序的运行原理29
3.1.1Dalvik虚拟机概述29
3.1.2Dalvik虚拟机与Java虚拟机的区别29
3.1.3Dalvik虚拟机是如何执行程序的34
3.1.4关于Dalvik虚拟机JIT(即时编译)36
3.2Dalvik汇编语言基础为分析Android程序做准备37
3.2.1Dalvik指令格式37
3.2.2DEX文件反汇编工具39
3.2.3了解Dalvik寄存器40
3.2.4两种不同的寄存器表示方法——v命名法与p命名法42
3.2.5Dalvik字节码的类型、方法与字段表示方法43
3.3Dalvik指令集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.4Dalvik指令集练习——写一个Dalvik版的Hello World52
3.4.1编写smali文件52
3.4.2编译smali文件54
3.4.3测试运行54
3.5本章小结55
第4章Android可执行文件56
4.1Android程序的生成步骤56
4.2Android程序的安装流程59
4.3dex文件格式66
4.3.1dex文件中的数据结构66
4.3.2dex文件整体结构68
4.3.3dex文件结构分析71
4.4odex文件格式80
4.4.1如何生成odex文件80
4.4.2odex文件整体结构81
4.4.3odex文件结构分析83
4.5dex文件的验证与优化工具dexopt的工作过程88
4.6Android应用程序另类破解方法91
4.7本章小结93
第5章静态分析Android程序94
5.1什么是静态分析94
5.2快速定位Android程序的关键代码94
5.2.1反编译apk程序94
5.2.2程序的主Activity95
5.2.3需重点关注的Application类95
5.2.4如何定位关键代码——六种方法96
5.3smali文件格式97
5.4Android程序中的类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.2switch分支语句115
5.5.3try/catch语句121
5.6使用IDA Pro静态分析Android程序127
5.6.1IDA Pro对Android的支持127
5.6.2如何操作128
5.6.3定位关键代码——使用IDA Pro进行破解的实例132
5.7恶意软件分析工具包——Androguard135
5.7.1Androguard的安装与配置135
5.7.2Androguard的使用方法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集成分析环境——santoku154
5.11本章小结156
第6章基于Android的ARM汇编语言基础——逆向原生!157
6.1Android与ARM处理器157
6.1.1ARM处理器架构概述157
6.1.2ARM处理器家族158
6.1.3Android支持的处理器架构159
6.2原生程序与ARM汇编语言——逆向你的原生Hello ARM160
6.2.1原生程序逆向初步160
6.2.2原生程序的生成过程162
6.2.3必须了解的ARM知识164
6.3ARM汇编语言程序结构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.4ARM处理器寻址方式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.5ARM与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.1Android中的原生程序187
7.1.1编写一个例子程序187
7.1.2如何编译原生程序188
7.2原生程序的启动流程分析194
7.2.1原生程序的入口函数194
7.2.2main函数究竟何时被执行198
7.3原生文件格式199
7.4原生C程序逆向分析200
7.4.1原生程序的分析方法200
7.4.2for循环语句反汇编代码的特点204
7.4.3if...else分支语句反汇编代码的特点208
7.4.4while循环语句反汇编代码的特点211
7.4.5switch分支语句反汇编代码的特点215
7.4.6原生程序的编译时优化218
7.5原生C++程序逆向分析222
7.5.1C++类的逆向222
7.5.2Android NDK对C++特性的支持225
7.5.3静态链接STL与动态链接STL的代码区别227
7.6Android NDK JNI API逆向分析232
7.6.1Android NDK提供了哪些函数232
7.6.2如何静态分析Android NDK程序233
7.7本章小结235
第8章动态调试Android程序236
8.1Android动态调试支持236
8.2DDMS的使用237
8.2.1如何启动DDMS237
8.2.2使用LogCat查看调试信息238
8.3定位关键代码240
8.3.1代码注入法——让程序自己吐出注册码240
8.3.2栈跟踪法244
8.3.3Method Profiling247
8.4使用AndBug调试Android程序250
8.4.1安装AndBug251
8.4.2使用AndBug251
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与gdbserver260
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.4In-app Billing(应用内付费)277
9.4.1In-app Billing原理277
9.4.2In-app Billing破解方法280
9.5Google Play License保护281
9.5.1Google 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.1Mono for Android开发的程序及其破解方法296
9.7.2Qt for Android开发的程序及其破解方法301
9.8本章小结309
第10章Android程序的反破解技术310
10.1对抗反编译310
10.1.1如何对抗反编译工具310
10.1.2对抗dex2jar311
10.2对抗静态分析312
10.2.1代码混淆技术312
10.2.2NDK保护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.1Android系统安全概述321
11.2手机ROOT带来的危害321
11.2.1为什么要ROOT手机321
11.2.2手机ROOT后带来的安全隐患322
11.2.3Android手机ROOT原理322
11.3Android权限攻击329
11.3.1Android权限检查机制329
11.3.2串谋权限攻击333
11.3.3权限攻击检测336
11.4Android组件安全339
11.4.1Activity安全及Activity劫持演示340
11.4.2Broadcast Receiver 安全343
11.4.3Service安全345
11.4.4Content Provider安全346
11.5数据安全347
11.5.1外部存储安全347
11.5.2内部存储安全348
11.5.3数据通信安全350
11.6ROM安全351
11.6.1ROM的种类352
11.6.2ROM的定制过程352
11.6.3定制ROM的安全隐患359
11.6.4如何防范360
11.7本章小结361
第12章DroidKongFu变种病毒实例分析362
12.1DroidKongFu病毒介绍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.1Java层启动代码分析376
12.4.2Native层启动代码分析381
12.4.3Native层病毒核心分析393
12.5DroidKongFu病毒框架总结404
12.6病毒防治406
12.7本章小结406
Android软件安全与逆向分析截图



相关资料1:
- 建筑安全宣讲建筑工作汇报综合类ppt模板.pptx
- 《数字签名与安全协议》.pdf
- 《信息安全保卫战:企业信息安全建设策略与实践》.pdf
- 《计算机安全》.pdf
- 《对等网络、网格计算与云计算:原理与安全》.pdf
- 192432_计算机网络安全.pdf
- 《网络安全协议理论与技术》.pdf
- 《终端安全管理》.pdf
- 《信息对抗与网络安全》(第2版).pdf
- 《信息安全管理与工程》.pdf
- 《安全驾驶路路通——汽车驾驶员培训教材(适用于C1、C2、C3、C5)》全彩版.pdf
- 公路养护安全作业规程jtg h30-2015 pdf高清电子版
- 《程序之美系列(套装共6册)》.epub
- 《计算机安全技术》(第2版).pdf
- GB∕T 33485-2017 大型游艇 主辅柴油机 安全要求 免费电子版
相关资料2:




