app越来越多,也离不开我们的生活,而安卓逆向也是近几年才兴起的一个行业,市场饱和度不高,发展前景广阔。
随着app的增加安全是一个很大问题,想要解决安全问题就得用到逆向知识,由此逆向岗位会随着app得的增加会越来越多。
就我自己从事安卓逆向这几年的经验来说,对没有编程基础的朋友如何学习安卓逆向最好制定以下学习路线:
-
学习安卓逆向第一步必须先把环境搭建好,这是你学习安卓逆向的开始,环境搭建好后表示正式迈入安卓逆向。在环境安装的工程中会遇到很多细节上的问题,针对这些坑可以去看看使用教程,或者看看网课老师的教程操作都可以。
-
第二步就是要了解我们要分析的是什么文件,很多0基础的都不知道安卓逆向分析的什么文件。我们要分析的是应用程序或者安装包(就是.apk文件),了解apk是怎么生成的以及如何安装到我们的手机里面,apk是怎么运行的,也是我们探讨的内容。
-
第三步如何逆向分析.apk文件,掌握apk反编译及回编译,完成这个操作使用的工具是apktool。
-
掌握Java语法基础,达到能看懂Java代码。
-
了解smali语法,能看懂smali代码。
-
掌握逆向分析apk中常用的方法和技巧。
-
了解安卓操作系统和四大组件。
-
了解NDK开发流程,自己编写案例练习。
-
掌握常用ARM汇编指令,达到能看懂ARM汇编指令。
-
掌握IDA工具的使用,熟练使用IDA进行各种操作。
-
了解Java代码混淆、资源混淆。
-
掌握签名验证、文件校验、模拟器检测。
-
本地验证、网络验证。
-
案例练习。
-
掌握常用反调试方法及过反调试技巧,比如关键文件检测、调试端口检测、进程名称检测、防附加、轮训检测TracerPid值、时间检测、信号检测等反调试。
-
掌握IDA过反调试思路。
-
案例练习。
-
掌握HOOK插件开发。
-
掌握Xposed、Substrate、Fridad等框架。
-
案例练习。
-
掌握编码算法、消息摘要算法、对称加密算法(Java加密与解密的艺术)。
-
掌握非对称加密算法、数字签名算法。
-
了解客户端与服务器如何进行交互的(OSI模型、TCP/IP模型)。
-
掌握常用的抓包工具及环境配置,HTTP协议与HTTPS安全协议,数字证书、SSL证书检测(计算机网络与通信、信息安全工程师)。
-
案例练习。
-
掌握DEX、ELF、XML、ARSC等文件结构。
-
自编写文件解析工具。
-
了解安卓操作系统启动流程、Zygote启动流程。
-
掌握Dalvik虚拟机、ART虚拟机、SO加载流程。
-
了解Dex文件整体加密、Dex代码抽取加密。
-
了解SO文件整体加密、函数加密、区段加密、加壳、混淆。
-
分析通用脱壳机的实现原理及应用场景。
-
了解主流加固特点及对应的脱壳技巧。
-
看一遍教程后自己实战操作,养成做笔记的习惯。
-
注重基础,一定要把Java层和Native层搞懂。
-
学习中不要纠结细节,要学会抓大放小。
学习路线:
这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容: