专栏首页my notebookandroid逆向学习路线
原创

android逆向学习路线

https://www.zhihu.com/question/25626303

以下是原答案

就我自己从事安卓逆向这几年的经验来说,对没有编程基础的朋友如何学习安卓逆向最好制定以下学习路线:

一. 安卓逆向基础(建议1周)

1. 学习安卓逆向第一步必须先把环境搭建好,这是你学习安卓逆向的开始,环境搭建好后表示正式迈入安卓逆向。在环境安装的工程中会遇到很多细节上的问题,针对这些坑可以去看看使用教程,或者看看网课老师的教程操作都可以。

2. 第二步就是要了解我们要分析的是什么文件,很多0基础的都不知道安卓逆向分析的什么文件。我们要分析的是应用程序或者安装包(就是.apk文件),了解apk是怎么生成的以及如何安装到我们的手机里面,apk是怎么运行的,也是我们探讨的内容。

3. 第三步如何逆向分析.apk文件,掌握apk反编译及回编译,完成这个操作使用的工具是apktool。

二. Java层逆向(建议3周)

1. 掌握Java语法基础,达到能看懂Java代码。

2. 了解smali语法,能看懂smali代码。

3. 掌握逆向分析apk中常用的方法和技巧。

三. Native层逆向(建议4周)

1. 了解安卓操作系统和四大组件。

2. 了解NDK开发流程,自己编写案例练习。

3. 掌握常用ARM汇编指令,达到能看懂ARM汇编指令。

4. 掌握IDA工具的使用,熟练使用IDA进行各种操作。

四. APK保护策略(建议1周)

1. 了解Java代码混淆、资源混淆。

2. 掌握签名验证、文件校验、模拟器检测。

3. 本地验证、网络验证。

4. 案例练习。

五. 反调试与反-反调试(建议1周)

1. 掌握常用反调试方法及过反调试技巧,比如关键文件检测、调试端口检测、进程名称检测、防附加、轮训检测TracerPid值、时间检测、信号检测等反调试。

2. 掌握IDA过反调试思路。

3. 案例练习。

六. HOOK框架(建议2周)

1. 掌握HOOK插件开发。

2. 掌握Xposed、Substrate、Fridad等框架。

3. 案例练习。

七. 常见加密算法(建议2周)

1. 掌握编码算法、消息摘要算法、对称加密算法(Java加密与解密的艺术)。

2. 掌握非对称加密算法、数字签名算法。

八. 协议加解密分析(建议4周)

1. 了解客户端与服务器如何进行交互的(OSI模型、TCP/IP模型)。

2. 掌握常用的抓包工具及环境配置,HTTP协议与HTTPS安全协议,数字证书、SSL证书检测(计算机网络与通信、信息安全工程师)。

3. 案例练习。

九. 文件结构(建议2周)

1. 掌握DEX、ELF、XML、ARSC等文件结构。

2. 自编写文件解析工具。

十. 系统源码分析(建议2周)

1. 了解安卓操作系统启动流程、Zygote启动流程。

2. 掌握Dalvik虚拟机、ART虚拟机、SO加载流程。

十一. 加固与脱壳(建议4周)

1. 了解Dex文件整体加密、Dex代码抽取加密。

2. 了解SO文件整体加密、函数加密、区段加密、加壳、混淆。

3. 分析通用脱壳机的实现原理及应用场景。

4. 了解主流加固特点及对应的脱壳技巧。

十二. 学习方法

1. 看一遍教程后自己实战操作,养成做笔记的习惯。

2. 注重基础,一定要把Java层和Native层搞懂。

3. 学习中不要纠结细节,要学会抓大放小。

4. 学完后自己画脑图,回顾学习的过程中那些不理解在花时间去看,此过程就是查漏补缺。

最后,如果大家对安卓逆向的学习感兴趣的可以私信我,我们可以共同探讨对安卓逆向这方面的学习。

-----------------更新一下 安卓逆向使用目前比较通用的工具

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ida使用方法及注意事项

    ida反编译so文件,注意事项:ida版本最好是7.0往上的版本,否则有些so文件反编译之后,f5不能查看伪代码。

    dengfeng1638205133
  • flask 常用总结

    dengfeng1638205133
  • Android群控黑盒调用 - Sekiro食用手册

    之前尝试用过virjar大佬的hermesagent, 后来大佬又迭代出新的基于长链接的Sekiro, 一直想看都被耽搁了, 今天正好抽空尝试一下, 顺便写篇笔...

    dengfeng1638205133
  • pytorch torch.nn 实现上采样——nn.Upsample

    上采样一个给定的多通道的 1D (temporal,如向量数据), 2D (spatial,如jpg、png等图像数据) or 3D (volumetric,如...

    于小勇
  • 一位普通Android程序员呕心沥血八次大小厂的面试复盘总结,你的知识体系需要扩展了!

    小公司会比较偏重于业务,面试上也偏重业务,比如做了什么,大概方案,用了哪些库,库的原理。

    Android技术干货分享
  • 面经分享|中科院老哥的算法&开发岗面经总结

    往昔的回忆使我们激动,我们重新踏上旧日的路,一切过去日子的感情,又逐渐活在我们的心里;使我们再次心紧的是,曾经熟悉的震颤;为了回忆中的忧伤,真想吐出一声长叹……

    石晓文
  • 信息学奥赛考察知识点

    http://www.noi.cn/RequireFile.do?fid=Dt8gjEaa&attach=n

    海天一树
  • 冒死偷发python爬虫班的vip课程,爬取头条小姐姐街拍图片

    云飞
  • 反编译apk或exe文件简介(起个头有空更新后续)

    小小咸鱼YwY
  • [C#]UDP实现广播

    原文链接:http://blog.csdn.net/humanking7/article/details/51125620

    祥知道

扫码关注云+社区

领取腾讯云代金券