学习Android逆向之前,必备条件。【必备,出去面试正经公司的安全岗位都会问的基础问题】

  • 从事3-5年真实的Android开发工作,熟练使用C/C++,Java,kotlin,dart等Android开发常用语言;
  • 熟悉Android NDK开发和JNI技术,熟悉Log原理。最好有几年FrameWork开发经验;
  • 熟悉Android虚拟机机制,打包原理,系统启动流程,App启动流程;
  • 了解ARM、Smali汇编语言,熟悉IPC原理,能够熟练搭建IPC框架;
  • 熟练使用Fiddler和Charles抓包工具进行抓包;
  • 最好熟悉Python基础语法,并能写简单的脚本和爬虫。

第一阶段:Android 基础知识回顾:

  • 回顾Android 开发编程,深入理解Android系统原理和层次结构,深入分析Handler源码和原理;
  • 回顾Java,C/C++,Kotlin、dart 在Android开发中必用的语言,熟悉一下几种语言混淆后的特性;
  • 回顾Android IPC和JNI的底层原理和热更新技术回顾Native开发要点,使用C++结合NDK完成Android Native开发;
  • 回顾Android开发中常用的 AMS、PMS、WMS原理和App启动中服务加载的流程;
  • 回顾Android开发中必用的 Google的MVVM框架:DataBinding+LiveData+ViewModel;
  • 回顾Android开发中必用的 Google的MVP框架:Dagger2;
  • 回顾Android开发必用的网络架构:Okhttp3+RxJava2+Retrofit2+Rxdownload4+Rxcache+Glide;

Android 逆向基础知识:

  • 熟悉Android逆向工具的使用,如apktool,IDA,dex2jar,JEB,Androidkiller,Androguard等;
  • 深入分析APK中包含的各文件格式,分析Android系统源码中解析APK的相关代码;学习和熟悉smali语言(重点);
  • 仿微信写一个APP,并利用工具逆向出apk内的代码,并对比源码分析。

入门知识总结和实战(逆向入门):

  • 知识梳理,常用工具安装,adb命令与Linux常用命令,常见登录逻辑分析;
  • 分析ELF可执行程序,调式ELF可执行程序;ARM汇编与寄存器,ARM反汇编速成,ARM指令机器码,常用ARM指令集;
  • 反编译ELF文件与ObjDump,ELF文件解析与readelf,ELF文件解析与010Editor,深入分析ELF文件结构;IDA静态分析,IDA动态调式;
  • 简易计算器实现及分析(练习);
  • 字符串加密与解密,冒泡排序算法分析;

  • 键android_server文件检测,IDA调试端口检测;
  • ELF可执行程序加载so库,DEX解析与dexDump,DEX解析与010Editor;
  • 实现自己的Dex解析工具与GDA(练习);
  • Androidkiller动态调试smali代码插件,AS+smalidea调式smali代码;
  • Log注入实现免注册,如何定位关键代码,去除java层签名验证,去除广告和弹窗(实战);
  • 推荐阅读《AndroidXXXXXX……》随便找本系统源码讲解的书看看吧;

Android 基础算法和安全协议:

  • 密码学,对称加密算法,非对称加密算法,散列函数;
  • 数字签名,数字证书,SSL证书检测,协议与安全协议;
  • 了解服务器端与客户端通信协议分析;
  • 使用Charles抓登录封包和验证码,协议构造与Java层MD5算法,动态调式smali代码与sign字段;
  • 协议构造类与SO层DESCBC算法,协议关键字段SIGN与SO层MD5算法,动态调试协议字段,动态调式协议关键字段SIGN;
  • 协议关键字段pwad和sign,动态调式协议字段拼接与MD5加密,分析so层OpenSSLSHA1算法;
  • 封包加密与反编译失败,使用方法跟踪分析加密;java层逆向分析,分析so层TEA算法;
  • 练习:抓取验证码和登录封包,分析协议关键字段与RSA算法,证书与RSA原理及源码分析;
  • 对称加密AES、PBE与CRC算法,数字签名RSA、DSA算法;

第二阶段:Android 逆向进阶学习:

  • Android 系统结构深入分析,自定义 ClassLoader,自定义注解和元注解原理分析;
  • 了解AndroidNDK,静态注册,动态注册,SO加载分析,
  • App保护策略去除霸哥磁力搜素APK签名验证,一键去除签名验证,静态代{过}{滤}理,动态代{过}{滤}理Hook Activity启动函数,
  • Hook签名验证函数介绍xposed框架:Xposed框架:
  • 绕过验证码注册Xposed框架:
  • 登陆劫持Xposed框架:
  • 篡改IMEI信息介绍CydiaSubstrate框架:
  • Java层Hook:
  • 篡改系统文字颜色Java层Hook:
  • 修改方法返回值绕过登录Java层Hook:
  • 篡改游戏金币Java层Hook:
  • 篡改主机名和端口号
  • Native层Hook:
  • ADBI框架:ELFARMHOOK框架内存抠取Dex文件过反调试技巧C++游戏
  • 逆向练习:动态调试2048纯算法游戏,Zygote+Hook使2048游戏秒过关;

Android NDK与JNI全面剖析:

  • so动态库的介绍
  • JNI动态注册和静态注册
  • NDK Build 工具介绍
  • Cmake工具介绍
  • JNI.h介绍
  • Android 源码工具和技巧
  • ijkplayer 源码分析及原理讲解
  • AndFix 源码分析及原理讲解
  • Java调用so库的动态流程解析
  • NDK实现增量更新
  • 案例:NDK实现换脸等工业级图像识别
  • 案例:NDK文件实现拆分和加密处理

Android 加固防护和脱壳简介:

  • DEX文件、ODEX文件与OAT文件;
  • XML文件与ARSC文件;
  • 分析App加固的产生及背景,最初加固方式,加固技术的发展;
  • HOOK制作脱壳机,定制自己的脱壳系统;
  • DexClassLoader动态加载分析,DEX自解析重构技术;
  • 三代梆梆加固原理分析;爱加密加固原理分析;
    加固技术的发展;
  • HOOK制作脱壳机,定制自己的脱壳系统;
  • DexClassLoader动态加载分析,DEX自解析重构技术;
  • 三代梆梆加固原理分析;爱加密加固原理分析;

Android逆向 学习Android安全和逆向开发的路线总结,android开发平台的发展相关推荐

  1. 【Android底层学习总结】1. 驱动开发基础

    0 目录 1 前言 2 驱动开发认识 2.1 驱动 2.1.1 设备驱动程序的主要功能 2.1.2 驱动程序的主要类型 2.1.3 设备文件 2.1.4 sys文件系统: 3 基础编程 3.1 内核模 ...

  2. Android SurfaceFlinger学习

    重学系列 1.Android 重学系列 SurfaceFlinger的概述 2.Android 重学系列 Ashmem匿名共享内存 3.Android 重学系列 SurfaceFlinger 的初始化 ...

  3. 硬件街机游戏开发,单片机游戏开发,CPLD/FPGA、ARM平台游戏开发群成立

    本超级QQ群成立,上限人数为500. 目标是发展中国游戏产业,提升硬件游戏开发技术交流.提供大的平台. 发展的方向是游戏动漫相结合,此群不是网络游戏开发,为单板街机游戏开发. 所属第三产业.以电脑板游 ...

  4. Android逆向 学习Android安全和逆向开发的路线总结,啃下这些Framework技术笔记

    此篇整理了最完整的–Android逆向学习线路知识体系.希望给迷糊的入门者指出一个明确的方向. 真心建议:先正向开发几年再搞逆向吧--正向都不会破解的是啥?不看代码只会脱壳?只会xposed ?远远不 ...

  5. android逆向学习路线

    学习路线: 8周 Android基础知识 学习Android开发编程,了解其原理. 熟悉Java,C和C++三种在Android系统中使用较多的语言,了解几种语言的特性. 学习Android开发,推荐 ...

  6. Android逆向学习之如何在抖音发链接

    背景 本文处于Android安全学习为目的. 众所周知,抖音目前不支持发送自定义链接消息,前段时间也是在开发SDK公布了分享内容到抖音的功能.那么就给发卡片提供了一种途径. 功能实现 这个功能最简单的 ...

  7. 安卓逆向学习笔记:native层开发、分析和调试基础

    安卓逆向学习笔记:native层开发.分析和调试基础 本笔记主要是自己看,所以如果有看不懂的地方也请多多包涵,这一篇的笔记主要是<Android应用安全防护和逆向分析>的部分内容. 一 A ...

  8. Android:日常学习笔记(8)———探究UI开发(2)

    Android:日常学习笔记(8)---探究UI开发(2) 对话框 说明: 对话框是提示用户作出决定或输入额外信息的小窗口. 对话框不会填充屏幕,通常用于需要用户采取行动才能继续执行的模式事件. 提示 ...

  9. Android:日常学习笔记(8)———探究UI开发(5)

    Android:日常学习笔记(8)---探究UI开发(5) ListView控件的使用 ListView概述 A view that shows items in a vertically scrol ...

  10. 【安卓开发】android studio 学习入门篇

    以下内容转载自:https://blog.csdn.net/myosotis5/article/details/79208707 (为防止链接失效,特备份文章内容,侵删) 开发第一应用 可以开发属于自 ...

最新文章

  1. 为什么企业选择年底裁员?如何选择一个正确的公司!
  2. AI一分钟 | 传阿里百度京东6月回归A股;汽车合资股比限制将取消,特斯拉或成最大赢家...
  3. 随机森林算法参数解释及调优 转胡卫雄 RF模型可以理解成决策树模型嵌入到bagging框架,因此,我们首先对外层的bagging框架进行参数择优,然后再对内层的决策树模型进行参数择优
  4. 设计模式使用率排行榜
  5. matlab imdilate_MATLAB--数字图像处理 数学形态学应用
  6. ospf避免环路_13、OSPF的选路规则及路由控制
  7. 通过微信查找SAP TCODE代码
  8. 计生专干招聘计算机,请求解决招聘计生专干待遇
  9. 发那科机器人override指令_发那科FANUC机器人编写简单的程序详细教程
  10. Java实现简单计算器
  11. 左耳朵耗子:如何超过大多数人
  12. Filebeat自定义index和fields
  13. idea 注释 rendered view
  14. java校验特殊字符_java中文及特殊字符的校验方法
  15. 关于HTTP的几个个人预言
  16. iOS10新特性及开发者要注意什么
  17. Java学习笔记(二):Java程序基础
  18. 《多元统计分析》学习笔记之多元正态分布
  19. 什么时候要把方法写成静态的。什么时候写成实例化方法。
  20. 百度云盘搜索引擎微信公证号_微信公众号被百度搜索引擎收录?SEO优化诞生新方法!...

热门文章

  1. 实习日记——Day29
  2. js-对Math对象中数学函数的总结
  3. 初次使用python(2)之如何下载ipdb模块
  4. 计算机在线应用字体,在线预览电脑中的字体
  5. 网站设计--多语言网站实现方案
  6. 软件生命周期模型知识点总结(瀑布模型、演化模型、增量模型、V模型、W模型、螺旋模型、构件组装模型、RAD模型、RUP模型、极限编程模型)
  7. 连接不上sa数据库的几种解决方案
  8. 数据库分离后找不到文件在哪里怎么办?
  9. python编程游戏代码tkinter,python编程游戏代码大全
  10. 出现”429:activex部件不能创建对象“解决办法