此篇整理了最完整的--Android逆向学习线路知识体系。希望给迷糊的入门者指出一个明确的方向。
真心建议:先正向开发几年再搞逆向吧……正向都不会破解的是啥?不看代码只会脱壳?只会xposed ?远远不够,hook只是很小一部分技术,xposed是hook功能众多框架中的一个而已。相对于任何程序的开发来说,逆向知识点很少很少了,关键是基础知识,基础就是正向开发经验。
学习Android逆向之前,必备条件。【必备,出去面试正经公司的安全岗• • • • • • • • • • • • •
位都会问的基础问题】
从事3-5年真实的Android开发工作,熟练使用C/C++,Java,kotlin,dart等Android开发常用语言;
熟悉Android NDK开发和JNI技术,熟悉Log原理。最好有几年FrameWork开发经验;
熟悉Android虚拟机机制,打包原理,系统启动流程,App启动流程; 了解ARM、Smali汇编语言,熟悉IPC原理,能够熟练搭建IPC框架; 熟练使用Fiddler和Charles抓包工具进行抓包;
最好熟悉Python基础语法,并能写简单的脚本和爬虫。
第一阶段:Android 基础知识回顾:
回顾Android 开发编程,深入理解Android系统原理和层次结构,深入分析Handler源码和原理;
回顾Java,C/C++,Kotlin、dart 在Android开发中必用的语言,熟悉一下几种语言混淆后的特性;
回顾Android IPC和JNI的底层原理和热更新技术回顾Native开发要点,使用C++结合NDK完成Android Native开发;
回顾Android开发中常用的 AMS、PMS、WMS原理和App启动中服务加载的流程; 回顾Android开发中必用的 Google的MVVM框架:DataBinding+LiveData+ViewModel;
回顾Android开发中必用的 Google的MVP框架:Dagger2; 回顾Android开发必用的网络架构:Okhttp3+RxJava2+Retrofit2+Rxdownload4+Rxcache+Glide;
Android 逆向基础知识:
• 熟悉Android逆向工具的使用,如apktool,IDA,dex2jar,JEB,Androidkiller,Androguard等;
• 深入分析APK中包含的各文件格式,分析Android系统源码中解析APK的相关代码;学习和熟悉smali语言(重点);
• 仿微信写一个APP,并利用工具逆向出apk内的代码,并对比源码分析。
• • • •
入门知识总结和实战(逆向入门):
知识梳理,常用工具安装,adb命令与Linux常用命令,常见登录逻辑分析; 分析ELF可执行程序,调式ELF可执行程序;ARM汇编与寄存器,ARM反汇编速成,ARM指令机器码,常用ARM指令集;
反编译ELF文件与ObjDump,ELF文件解析与readelf,ELF文件解析与010Editor,深入分析ELF文件结构;IDA静态分析,IDA动态调式; 简易计算器实现及分析(练习);
• • • • • • • • • •