随着移动互联网的兴起,“APP”成了99%的互联网企业主要运营的产品,知名的例如“支付宝”、“美团”、“滴滴”、“抖音”等。用户基数的不断变大,安全性也经历着巨大的挑战。
app越来越多,也离不开我们的生活,而安卓逆向也是近几年才兴起的一个行业,市场饱和度不高,发展前景广阔。
随着app的增加安全是一个很大问题,想要解决安全问题就得用到逆向知识,由此逆向岗位会随着app得的增加会越来越多。
就我自己从事安卓逆向这几年的经验来说,对没有编程基础的朋友如何学习安卓逆向最好制定以下学习路线:
一. 安卓逆向基础(建议1周)
-
学习安卓逆向第一步必须先把环境搭建好,这是你学习安卓逆向的开始,环境搭建好后表示正式迈入安卓逆向。在环境安装的工程中会遇到很多细节上的问题,针对这些坑可以去看看使用教程,或者看看网课老师的教程操作都可以。 -
第二步就是要了解我们要分析的是什么文件,很多0基础的都不知道安卓逆向分析的什么文件。我们要分析的是应用程序或者安装包(就是.apk文件),了解apk是怎么生成的以及如何安装到我们的手机里面,apk是怎么运行的,也是我们探讨的内容。 -
第三步如何逆向分析.apk文件,掌握apk反编译及回编译,完成这个操作使用的工具是apktool。
二. Java层逆向(建议3周)
-
掌握Java语法基础,达到能看懂Java代码。 -
了解smali语法,能看懂smali代码。 -
掌握逆向分析apk中常用的方法和技巧。
三. Native层逆向(建议4周)
-
了解安卓操作系统和四大组件。 -
了解NDK开发流程,自己编写案例练习。 -
掌握常用ARM汇编指令,达到能看懂ARM汇编指令。 -
掌握IDA工具的使用,熟练使用IDA进行各种操作。
四. APK保护策略(建议1周)
-
了解Java代码混淆、资源混淆。 -
掌握签名验证、文件校验、模拟器检测。 -
本地验证、网络验证。 -
案例练习。
五. 反调试与反-反调试(建议1周)
-
掌握常用反调试方法及过反调试技巧,比如关键文件检测、调试端口检测、进程名称检测、防附加、轮训检测TracerPid值、时间检测、信号检测等反调试。 -
掌握IDA过反调试思路。 -
案例练习。
六. HOOK框架(建议2周)
-
掌握HOOK插件开发。 -
掌握Xposed、Substrate、Fridad等框架。 -
案例练习。
七. 常见加密算法(建议2周)
-
掌握编码算法、消息摘要算法、对称加密算法(Java加密与解密的艺术)。 -
掌握非对称加密算法、数字签名算法。
八. 协议加解密分析(建议4周)
-
了解客户端与服务器如何进行交互的(OSI模型、TCP/IP模型)。 -
掌握常用的抓包工具及环境配置,HTTP协议与HTTPS安全协议,数字证书、SSL证书检测(计算机网络与通信、信息安全工程师)。 -
案例练习。
九. 文件结构(建议2周)
-
掌握DEX、ELF、XML、ARSC等文件结构。 -
自编写文件解析工具。
十. 系统源码分析(建议2周)
-
了解安卓操作系统启动流程、Zygote启动流程。 -
掌握Dalvik虚拟机、ART虚拟机、SO加载流程。
十一. 加固与脱壳(建议4周)
-
了解Dex文件整体加密、Dex代码抽取加密。 -
了解SO文件整体加密、函数加密、区段加密、加壳、混淆。 -
分析通用脱壳机的实现原理及应用场景。 -
了解主流加固特点及对应的脱壳技巧。
十二. 学习方法
-
看一遍教程后自己实战操作,养成做笔记的习惯。 -
注重基础,一定要把Java层和Native层搞懂。 -
学习中不要纠结细节,要学会抓大放小。 -
学完后自己画脑图,回顾学习的过程中那些不理解在花时间去看,此过程就是查漏补缺。
最后,如果大家对安卓逆向的学习感兴趣而又缺少学习资料,我最近正好薅到一份360团队成员分享在GitHub,标星7.5k的《安卓App逆向与安全防护学习手册》,通俗易懂,实例丰富,既有基础知识,也有操作技能,能够帮助读者快速入门进阶。
第一章 基础篇
第二章 防护篇
-
Android应用安全防护的基本策略 -
Android中常用权限分析 -
Android中的run-as命令 -
Android中的allowBackup属性 -
Android中的签名机制 -
Android应用加固原理 -
Android中的so加固原理
第三章 工具篇
第四章 操作篇
-
静态方式逆向应用 -
动态调试smali源码 -
IDA工具调试so源码 -
逆向加固应用软件技术分析 -
逆向应用经典案例分析 -
Android中常见漏洞分析 -
文件加密病毒Wannacry样本分析
由于篇幅限制,展示了部分内容截图,需要这些文档资料的,可以点赞支持一下我,然后【点击我的GitHub】免费阅读下载。
|