安卓安全工程师

Android Security Learning

==========================================================================

1.Basic Requirements

熟悉Android开发环境,能够较为熟练的开发Android程序

了解ARM、Smali汇编语言

熟悉IDA、Gdb等调试分析工具

熟悉Android/Linux底层框架,熟悉系统的工作原理和细节

研究Android系统底层,分析漏洞和潜在风险

2.Learning Route

​ 2.1 Android基础知识

学习Android开发编程,了解其原理。

   1.熟悉Java,C和C++三种在Android系统中使用较多的语言,了解几种语言的特性。

   2.学习Android开发,推荐使用Android studio进行开发,也可以使用eclipse。

   3.完成一些小程序,学习Native开发,利用NDK完成一些native程序。

   4.在过程中了解Android系统的层次结构,四大组件等Android系统的基本知识。

   5.尽可能的了解Andorid系统的概貌。

   6.在基础学习的过程中学习有效的使用搜索引擎,对不熟悉的属于进行了解学习。


​ 2.2  逆向基础知识

学习逆向基础相关知识和工具、并试图动手实践。

   1. 熟悉Android逆向工具的使用,如dex2jar,JEB,AndroidKiller,Androguard等.

   2.大致学习APK中包含的各文件格式,可以阅读Android系统解析APK的源码,也可以利用开源项目 Androguard来学习。

   3.学习和熟悉smali语言。

   4.尝试自己写小程序,并利用工具逆向,对比学习。

   5.尝试逆向一些小程序,分析其功能逻辑。

​ 2.3 逆向进阶学习

对ARM汇编、Smali语法、相关调试工具等进行学习。

   1.学习和熟悉ARM汇编指令;

   2.学习学习并熟悉IDA,gdb两种逆向工具的使用;

   3.学习Smali调试的方法,参考书籍《Android软件安全与逆向分析》;

   4.学习使用IDA静态分析Native程序,自己写Native程序并逆向,对比学习;

   5.使用IDA和gdb对Native程序进行调试;

   6.分析和调试一些带有Native代码的APK;

   7.开始学习Android系统知识,推荐《Android系统源代码情景分析》;

​ 2.4 逆向实战

病毒分析语脱壳学习

  1.找一些病毒木马分析博客跟着博客内容的教程进行分析实践推荐用Ransomware类和木马类进行学习

  2.找一些分析加壳程序的分析文章进行手动脱壳

​ 2.5 漏洞分析与挖掘

学习漏洞类型和原理。

   1.学习常见的漏洞类型,例如堆溢出,栈溢出,UAF等,可以参考SecWiki漏洞分析相关书籍;

   2.关注android security bulletin,根据提供的diff分析漏洞成因;

   3.学习并调试以前的经典漏洞和分析文章;

   4.学习漏洞挖掘fuzzing思路,参考书籍《Android安全攻防权威指南》;

3.Website Summary

Exercise

​ DIVA  Android

​ Android安全项目入门篇

Skill

​ Android App漏洞学习(一)

​ Android App漏洞学习(二)

wiki android

​ Android组件安全

​ 通过 WebView 攻击 Android 应用

Complement: IOS

​ OSX/iOS reverse engineering

你可能感兴趣的:(安卓安全工程师)