2021 大厂 Android 面试最火问题,透彻分析源码
第一阶段: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 自解析重构技术;
三代梆梆加固原理分析;爱加密加固原理分析;
360 加固与脱壳机,360 加固 VM 与置换表;
辅助脱壳机,IDA 动态调式脱爱加密壳;
IDA 动态调式脱 360 壳,IDA 动态调式脱 SO 壳;
脱 360 壳-dex2oat,脱 360 壳-drizzleDumper;
百度加固 DD 大法,百度加固 VM 与置换表;
阿里加固与脱壳机,腾讯乐固;
ARSC 资源保护与注解;
脱壳神器 ZjDroid:
捕鱼达 3 加固技术总结;
Android 脱壳与反脱壳分析:
Android 脱壳中的思路,技巧 elf 结构详解:
动态运行库 so 文件的文件组成结构 elf 结构详解:
加载 so 文件的流程 elf 文件变形与保护,elf 文件修复分析,so 加壳文件修复常用调试检测方法与过检测方法
Android 源码定制添加反反调试机制 Android dvm 脱壳,Dalvik dex 处理分析 IDA 脱壳脚本编写,Odex 修复方法,
IDAOdex 修复脚本编写
进阶知识总结和企业级实战(逆向进阶):
病毒分析与脱壳学习,用 Ransomware 类和木马类进行学习;
手动脱壳《王者 X 耀》练习;
从 0 开始打造自己的破解代码库;
第三阶段:Android 漏洞分析和挖掘:
学习常见的漏洞类型和原理。例如堆溢出,栈溢出,UAF 等,可以参考漏洞分析相关书籍;
关注 Android Security Bulletin,根据提供的 diff 分析漏洞成因;
学习并调试以前的经典漏洞;
学习漏洞挖掘 fuzzing 思路,参考书籍推荐《Android 安全 XXXX》;
病毒分析与病毒脱壳实战;
Android 虚拟机技术、系统源码分析、刷机机制介绍、制作 ROM 刷机包:
ASP 代码注入式写法;
Android 免 root 进行 hook;
Android 虚拟机原理,Android 多开原理讲解;
在 apk 内部写一个虚拟机,在 apk 内安装 apk;
虚拟机适配 Android 10 和 64 位系统;
从 0 开始开发自己的虚拟机库;
最完善的刷机工具 :魔趣 ROM;
最完善的刷机工具 :Devices - TWRP;
尾声
最后,我再重复一次,如果你想成为一个优秀的 Android 开发人员,请集中精力,对基础和重要的事情做深度研究。
对于很多初中级 Android 工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。 整理的这些架构技术希望对 Android 开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。
这里,笔者分享一份从架构哲学的层面来剖析的视频及资料分享给大家梳理了多年的架构经验,筹备近 6 个月最新录制的,相信这份视频能给你带来不一样的启发、收获。
Android 进阶学习资料库
一共十个专题,包括了 Android 进阶所有学习资料,Android 进阶视频,Flutter,java 基础,kotlin,NDK 模块,计算机网络,数据结构与算法,微信小程序,面试题解析,framework 源码!
评论