android逆向的自学路线

  • A+
所属分类:移动安全

     安卓安全方面的人才需求日益增加,对安卓APP的逆向分析也会成为安全从业人员的必备技能之一,但是很多刚入门的新手小伙伴对于怎么去学习却还很是迷糊。

     为了实现对安卓APP的逆向分析,需要在得到对应的apk文件以后,使用静态分析工具对apk进行反编译和代码分析,那么我们都需要学习哪些知识呢。


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.数据结构

看得懂代码,后面一步就是学习写代码,写代码要掌握的基本技能就是熟悉数据结构。

数据结构这个领域,着重于两点。第一点是了解复杂度的概念、面对日常任务,能够选出最合适;第二点是利用泛型编程,手工实现常用数据结构库,例如链表、栈、堆、数组等。

(二)开发技能

首先,要学习逆向的前提是要懂开发。至少学习安卓逆向,要对安卓开发的各方面原理、运行机制、保护机制等有所了解。

其次,需要了解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)So文件整体加密

3)常用加壳方式

4)常用混淆方式

5)常用加壳方式

6)DEX文件整体加解密

(三)实践

学习途径参考上文,不再赘述。

总结:

不管是新手还是欲转行有基础有经验的,要学习好安卓逆向,最重要的就是打好基础,基础打好了,剩下的去深入研究,不管是自学还是跟班培训,才能真正学好,不会浪费时间金钱。

参考文献:

https://www.jianshu.com/p/8699ab99e0b1

https://mp.weixin.qq.com/s/6JyLiUj1HlIcGtgoOCP8Jw



android逆向的自学路线

工具获取后台回复"安卓逆向”

android逆向的自学路线

长按-识别-关注

android逆向的自学路线

Hacking黑白红

一个专注信息安全技术的学习平台

android逆向的自学路线

点分享

android逆向的自学路线

点收藏

android逆向的自学路线

点点赞

android逆向的自学路线

点在看

本文始发于微信公众号(Hacking黑白红):android逆向的自学路线

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: