- 对本书的赞誉
- 前言
- 基础篇
- 第 1 章 Android 中锁屏密码加密算法分析
- 第 2 章 Android 中 NDK 开发
- 第 3 章 Android 中开发与逆向常用命令总结
- 第 4 章 so 文件格式解析
- 第 5 章 AndroidManifest.xml 文件格式解析
- 第 6 章 resource.arsc 文件格式解析
- 第 7 章 dex 文件格式解析
- 防护篇
- 第 8 章 Android 应用安全防护的基本策略
- 第 9 章 Android 中常用权限分析
- 第 10 章 Android 中的 run-as 命令
- 第 11 章 Android 中的 allowBackup 属性
- 第 12 章 Android 中的签名机制
- 第 13 章 Android 应用加固原理
- 第 14 章 Android 中的 so 加固原理
- 工具篇
- 第 15 章 Android 逆向分析基础
- 第 16 章 反编译神器 apktool 和 Jadx
- 第 17 章 Hook 神器 Xposed
- 第 18 章 脱壳神器 ZjDroid
- 第 19 章 Native 层 Hook 神器 Cydia Substrate
- 操作篇
- 第 20 章 静态方式逆向应用
- 第 21 章 动态调试 smali 源码
- 第 22 章 IDA 工具调试 so 源码
- 第 23 章 逆向加固应用
- 第 24 章 逆向应用经典案例分析
- 第 25 章 Android 中常见漏洞分析
- 第 26 章 文件加密病毒 Wannacry 样本分析
前言
随着移动应用的广泛使用,不可忽视的一个问题就是信息安全。本书从 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 章主要介绍使用 IDA 工具动态调试 so 源码,同时也介绍了一些应对反调试检测的方法。
第 23 章主要介绍如何逆向那些经过加固的应用,用一个案例详细介绍了每一步操作,最后总结了现在脱壳操作的大致流程。
第 24 章主要总结之前介绍的逆向知识,用一个经典案例作为收尾,讲解了现阶段逆向应用的大体流程和思路。
第 25 章介绍 Android 开发中会遇到的系统漏洞——一个是解压文件漏洞,一个是录屏授权漏洞。如果这两个漏洞不做修复,会导致应用沙盒数据篡改以及用户隐私数据的丢失等。该章详细介绍了漏洞的产生原因以及如何进行修复。
第 26 章介绍 Android 中一个非常经典的文件加密病毒样本,通过静态方式分析了该病毒样本的工作原理,总结了处理该类病毒的方法。
什么人适合阅读本书
阅读本书需要有一定的 Android 开发基础。有的读者可能会觉得第 1 章内容就有点深,本书第 1 章的目的在于把读者带入安全世界,看不懂没关系,可以从第 2 章开始看下去,毕竟应用开发领域和安全逆向领域有很多不一样的地方。本书最大的特点在于非常实用,用案例讲解详细操作步骤,跟着每一步具体操作,才能真正看明白。可以把本书作为一本参考书,没看懂不要急,多操作几遍试试。
欢迎联系我
本书用到了很多工具和案例样本、代码,几乎所有代码都给出了具体下载地址,如果在操作过程中发现下载失败或者链接失效,请联系我,可以加我的微信 peter_jw212,也可以关注微信公众号“编码美丽”进行留言,或者访问我的博客 http://blog.csdn.net/jiangwei0910410003,以及我的个人网站 http://www.wjdiankong.cn。有任何问题都可以通过这些渠道联系我,我将尽力给出详细解答。
有的读者读完这本书之后,可能发现有些内容对新技术不再生效了,比如加固和脱壳技术。我在此要说明一下,这些技术是时刻都在变的,所谓道高一尺,魔高一丈,攻防技术每一天都可能改变。所以本书选择了最基本的入门技术进行讲解,因为只有掌握了这些技术,才能继续学习并产生灵感来应对日后变化的技术。我认为最基本的入门技术也是最重要的技术。
致谢
这本书的写作历时一年多,真心觉得很不容易。如果觉得本书写得好,就请推广点赞;如果发现本书有错误的地方,还请批评指正。毕竟第一次写书没有那么完美,期待读者的指正和批评。最后想感谢一些人,他们在我写书过程中给予了技术和精神上的支持。非常感谢非虫大神(《Android 软件安全和逆向分析》等书作者)对本书第 4 章、第 7 章的 so 和 dex 文件格式解析技术的支持;感谢看雪论坛的 MindMac 大神对第 5 章的 arsc 文件格式解析技术的支持;感谢看雪论坛的 ThomasKing 大神对第 14 章加固技术的支持;感谢我的同学汪恒和殷传宝对我从开始写作到出版这一路上的陪伴和鼓励。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论