职位描述:
  1. 负责移动应用安全测试和安全事件应急响应‍;
  2. 负责移动应用安全平台建设;
  3. 负责信息安全策略/流程的制定,安全培训/宣传及推广;
  4. 跟踪最新漏洞信息,进行业务产品的安全检查。

职位要求:
  1. 熟悉Android开发环境,能够较为熟练的开发Android程序;
  2. 了解ARM、Smali汇编语言;
  3.  熟悉IDA、Gdb等调试分析工具;
  4. 有Android漏洞挖掘、漏洞利用经验优先;
  5. 最好熟悉Android/Linux底层框架,熟悉系统的工作原理和细节;
  6. 最好能够深入研究Android系统底层,分析漏洞和潜在风险;
  7. 最好能够跟踪国内外的Android安全动态,分享Android安全的最新技术。

学习路线:
  • Android基础知识
    学习Android开发编程,了解其原理。
    1. 熟悉Java,C和C++三种在Android系统中使用较多的语言,了解几种语言的特性。
    2. 学习Android开发,推荐使用Android studio进行开发,也可以使用eclipse。完成一些小程序,学习Native开发,利用NDK完成一些native程序。在过程中了解Android系统的层次结构,四大组件等Android系统的基本知识。尽可能的了解Andorid系统的概貌。 
    3. 在基础学习的过程中学习有效的使用搜索引擎,对不熟悉的属于进行了解学习。
    4. written by: 路人甲
  • 逆向基础知识
    学习逆向基础相关知识和工具、并试图动手实践。
    1.  熟悉Android逆向工具的使用,如dex2jarJEBAndroidKillerAndroguard等,SecWiki上收录d的移动安全工具也很多,并且有很多开源,尝试自己搜索并使用自己喜欢的。
    2. 大致学习APK中包含的各文件格式,最好的方式是阅读Android系统解析APK的源码。也可以利用开源项目Androguard来学习。推荐《Android软件安全与逆向分析
    3. 学习和熟悉smali语言。
    4. 尝试自己写小程序,并利用工具逆向,对比学习。
    5. 尝试逆向一些小程序,分析其功能逻辑。
    6. written by: 路人甲
  • 逆向进阶学习
    对ARM汇编、Smali语法、相关调试工具等进行学习。
    1. 学习和熟悉ARM汇编指令;
    2. 学习学习并熟悉IDAgdb两种逆向工具的使用; 
    3. 学习Smali调试的方法,参考书籍《Android软件安全与逆向分析》;
    4. 学习使用IDA静态分析Native程序,自己写Native程序并逆向,对比学习;
    5. 使用IDA和gdb对Native程序进行调试
    6. 分析和调试一些带有Native代码的APK;
    7. 开始学习Android系统知识,推荐《Android系统源代码情景分析》;
    8. written by: 路人甲。
  • 逆向实战
    病毒分析语脱壳学习
    1. 找一些病毒木马分析博客跟着博客内容的教程进行分析实践推荐用Ransomware类和木马类进行学习
    2. 找一些分析加壳程序的分析文章进行手动脱壳
    3. written by: 路人甲
  • 漏洞分析与挖掘
    学习漏洞类型和原理。
    1. 学习常见的漏洞类型,例如堆溢出栈溢出UAF等,可以参考SecWiki漏洞分析相关书籍
    2. 关注android security bulletin,根据提供的diff分析漏洞成因;
    3. 学习并调试以前的经典漏洞分析文章
    4. 学习漏洞挖掘fuzzing思路,参考书籍《Android安全攻防权威指南》;
    5. written by: 路人甲。