分析android逆向的学习路线

俗话说:“一入逆向深似海,从此头发是路人”。

在这里插入图片描述

安卓逆向作为当下热门行业“网络安全”的主要技术之一,已经受到了越来越多人的青睐。但是很多刚入门的新手小伙伴对于怎么去学习却还很是迷糊。本文就分享一下android逆向的学习路线供大家参考。

目前学习安卓逆向的人群大约分为两种:
第一种是完全没有任何基础的计算机纯小白;
第二种是本来就做开发懂编程的IT行业人员。
我们就针对这两个不同的人群做一下安卓逆向的学习路线分析。

一、无基础小白想入门
作为没有任何基础想要入门的计算机纯小白,学习上推荐参照以下步骤:

(一)基本功:读代码、写代码

在这里插入图片描述

1.语言
既然要做IT行业,首先最为基础的就是看懂专用语言。入门计算机行业的基本语言是汇编语言、C语言、C++等,至少得学一个低级语言和高级语言。
汇编语言:
1)了解处理器的基本架构以及执行环境
2)理解处理器取指令、解释指令、执行指令的流程及其其他相关流程
3)熟悉常见汇编指令及其与高级语言的关系
C语言:
1)掌握基本语法
2)熟悉编译、链接、程序转载运行的过程
3)了解基本数据类型、结构体、公用在内存中的表现形式
4)熟悉使用IDE环境开发、调试程序
5)理解数据组寻址方式
6)熟悉使用C语言
C++语言:
1)了解C++对C扩充的原因
2)熟悉面向对象编程
3)了解基类对象、继承对象在内存中的表现形式
4)了解C++中多态编程的技术原理.
在这里插入图片描述

2.数据结构
看得懂代码,后面一步就是学习写代码,写代码要掌握的基本技能就是熟悉数据结构。
数据结构这个领域,着重于两点。第一点是了解复杂度的概念、面对日常任务,能够选出最合适;第二点是利用泛型编程,手工实现常用数据结构库,例如链表、栈、堆、数组等。
在这里插入图片描述

(二)开发技能
首先,要学习逆向的前提是要懂开发。至少学习安卓逆向,要对安卓开发的各方面原理、运行机制、保护机制等有所了解。
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020092115362693.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hhY2tlcl9ieV9W,size_16,color_FFFFFF,t_70#pic_center
其次,需要了解JAVA框架(至少一种框架)。
Java框架需要学习的包括:
1)Java的类和对象
2)Java的封装
3)Java中的继承
4)Java多态

其他技能:
1)编程语言开发
2)数学基础、英语基础
3)数学结构与算法
4)操作系统
5)编译原理
6)软件分析
7)常用逆向技巧工具

(三)安卓逆向基础知识
这个部分包括安卓相关和逆向相关。到了这个步骤,基本功也应该是打好了,接下去就是入门安卓逆向了。包括环境搭建、了解apk、APP开发和运行机制、APP防护机制等。

(四)实践
在这里插入图片描述

(五)学习途径
1.自学:
对于刚刚入门计算机行业的同学,很多培训班是不想收的,因为要花大量时间去给你补习基础,会影响教学效率。如果真的很感兴趣也愿意去学的话,前期多关注各种论坛和社区、贴吧,各种入门的教程和经验分享还是很齐全的。
2.培训班学习:
虽然大部分培训班是不收纯小白的,但是好的培训班也是会专门开设基础班的,如果自学能力不强、坚持不下来的话,建议综合各方面因素去寻找一个真正好的、适合自己的培训班去学习。有些培训班采取师徒制,其实也很适合新手,毕竟新手不懂的话,还是很需要人解答帮助的。

(七)小白学习安卓逆向容易遇到的误区以及建议
误区:
1.缺乏详细系统的学习规划,越学越迷茫,不知道应该往哪学,容易想放弃。
2.搞不清学习方向,学习的技术并不是当前企业所需,跟不上时代,不具备职业竞争力。
3.学习效率非常低,遇到一个小问题解决起来很费时间,甚至有的时候会卡几个小时,导致信心受挫,对自己适不适合产生怀疑。
4.没有掌握学习安卓逆向的方法和技巧,导致走的弯路特别多,钻进程序坑死胡同出不来。

建议:
1.初学者不可能自己解决所有问题,死啃只会浪费大量时间,消耗耐心,前期最好有一个懂这行的人指路,可以随时答疑随时交流,会有很好的学习效果,效率也高。
2.技术更新的快,所以不要全部指望去啃论坛上的老教程,既然选择学习安卓逆向就要以当前企业所需的技术层面为学习依据。
3.根据自己了解的,找个师父找个靠谱的老师教都是很好的,当然前提是靠谱。
二、有基础人员想转行
对于原本就长期从事编程或者开发的人员,想要转行而去学习安卓逆向的,相对什么基础都没有的小白来说,就容易很多了。

既然都隶属于IT范畴,那么无论如何,都是有各种内部外部联系的,学习起来的话很多知识是相通相融的,会省去很多坑。

对于这类有基础的人员来说,学习安卓逆向可以参考这些步骤:
(一)安卓逆向基础
1.环境搭建:进行环境安装,把所有需要的东西都准备好,正式进入安卓逆向学习。
2.分析apk文件:了解apk的开发机制、生成打包机制、运行机制等等。
3.掌握apk反编译及回编译
(二)进阶逆向学习
1.Java层逆向
1)掌握Java语法基础,认识并能使用
2)了解smali语法,能看懂smali代码
3)掌握逆向分析apk中常用的方法和技巧

2.native层逆向
1)了解安卓操作系统和四大组件
2)了解NDK开发流程
3)ARM汇编指令学习
4)ARM处理器八大寻址方式
5)了解ida工具,熟练使用

3.apk保护机制
1)了解Java代码混淆以及资源混淆等混淆方式
2)掌握签名验证、文件校验、模拟器检测
3)本地验证和网络云验证等验证方式

4.掌握安卓调试与反调试

5.hook框架学习
1)hook插件开发
2)了解常用框架,Fridad等

6.常见加密算法
1)编码算法
2)对称与非对称算法
3)Java加密与解密
4)数字签名算法

7.协议加密与解密分析
1)了解客户端与服务器的交互机制
2)了解常用的抓包方式及环境配置,HTTP协议等

8.文件结构
1)了解常用文件结构如:DEX、ELF、XML、ARSC等

9.系统源码
1)常用虚拟机、So加载流程
2)安卓系统启动流程

10.安卓系统常用加固与脱壳
1)DEX文件整体加解密
2)DEX代码抽取
3)So文件整体加密
4)常用加壳方式
5)常用混淆方式
6)常用加壳方式

(三)实践
学习途径参考上文,不再赘述。
总结:
不管是新手还是欲转行有基础有经验的,要学习好安卓逆向,最重要的就是打好基础,基础打好了,剩下的去深入研究,不管是自学还是跟班培训,才能真正学好,不会浪费时间金钱。
加油吧!小伙伴

笔者也给大家整理了一些安卓逆向方面的学习参考资料,包括电子书、课件、教程等,需要的小伙伴可以自取。

如有雷同纯属巧合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值