Skip to content

📖 从 0 到 1,系统化学习 Android 逆向,让学习变得有趣、好玩、易上手!

License

Notifications You must be signed in to change notification settings

Evil0ctal/AndroidReverse101

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔥 AndroidReverse101 | 100 天精通 Android 逆向工程

  • 更新时间:2025年2月24日
  • 作者:Evil0ctal
  • GitHub 仓库:AndroidReverse101
  • 欢迎各位 Star、Fork,PR,一起交流和学习 Android 逆向!

📖 从 0 到 1,系统化学习 Android 逆向,让学习变得有趣、好玩、易上手!
💡 学习目标

  1. 新手友好,即使没有编程经验也能逐步上手。
  2. 深入底层,掌握 CPU 架构、汇编语言、ARM 指令集、Android 运行机制等知识。
  3. 实战驱动,每天一个知识点+实验,学完即能应用。
  4. 破解与安全并重,既能学习破解技巧,也能理解 Android 安全体系。

🚀 第一阶段:计算机基础 & 逆向概论(Day 1 - Day 20)

🔹 目标:理解计算机底层架构,掌握 16 进制、CPU 指令集、汇编语言、Android 运行原理。

Day 主题 内容
🏁 Day 1 什么是逆向工程? 现实世界 vs. 软件世界,逆向的应用场景
🔍 Day 2 Android 逆向的历史 & 发展 从早期 APK 破解到现代应用保护
⚙️ Day 3 什么是 CPU 指令集? CISC vs. RISC,为什么 Android 采用 ARM
🔥 Day 4 进制转换:为什么 16 进制很重要? 2 进制、10 进制、16 进制转换与应用
🏗 Day 5 汇编语言基础 汇编和机器码的关系,寄存器的作用
🏹 Day 6 x86 vs. ARM 汇编 x86 指令与 ARM 指令的区别
📜 Day 7 ARM 汇编指令解析 MOVADDSUBLDRSTR 指令
🚀 Day 8 函数调用与返回 BLBXCALLRET 指令解析
🏗 Day 9 Android CPU 架构解析 ARMv7、ARMv8、ARM64 的区别
📦 Day 10 Dalvik vs. ART 运行时 Android 的 Java 虚拟机如何执行代码
🔥 Day 11 Android 进程管理 什么是 Zygote 进程,APP 进程的生命周期
🚀 Day 12 Android 权限机制 AndroidManifest.xml 里的权限如何影响应用安全?
📂 Day 13 Android APP 目录结构 /data/data 目录解析,APP 数据存储位置
🔍 Day 14 APK 是如何加载的? Android 进程如何解析 APK
🛠 Day 15 手写 ARM 汇编代码(实验) 编写简单的 ARM 汇编程序,并运行
🔬 Day 16 反汇编工具介绍 IDA Pro、Ghidra、objdump 等工具
🏴 Day 17 ELF 文件解析 readelf 解析 so 文件结构
🔥 Day 18 如何调试 Native 层? LLDB / GDB 调试 so 文件
🚀 Day 19 Android APP 安全机制 SELinux、应用沙盒、Root 检测
🛡 Day 20 CTF 逆向挑战(初级) 参加一个 Android 逆向 CTF 题目

🔍 第二阶段:APK 逆向基础(Day 21 - Day 50)

🔹 目标:掌握 APK 结构、DEX 反编译、Smali 语言、动态调试等核心技能。

Day 主题 内容
🛠 Day 21 APK 文件结构解析 AndroidManifest.xml、资源文件、DEX 文件
🔄 Day 22 如何反编译 APK? jadxapktoolbaksmali 介绍
📜 Day 23 DEX 文件结构解析 ClassDefItemMethodIdItemStringIdItem
📦 Day 24 Smali 语言入门 Smali 代码结构、指令解析
📝 Day 25 Smali 代码修改实验 手动修改 smali 代码,绕过 VIP 限制
🚀 Day 26 APK 重新打包 & 签名 apktool 修改 APK,重新打包并签名
🔍 Day 27 动态调试入门 logcat 观察应用行为
🔬 Day 28 使用 Frida Hook Java 方法 修改 Java 方法返回值
🏹 Day 29 Frida Hook 实战 绕过 Root 检测
💉 Day 30 逆向 JNI 和 Native 方法 如何分析 libnative.so
🔥 Day 31 Xposed 入门 Hook Java 方法,修改应用行为
🚀 Day 32 实战:破解 VIP 限制 Hook isVip() 方法,解锁 App 会员功能
🔗 Day 33 绕过 SSL Pinning 破解 HTTPS 请求拦截,抓取 API 数据
🛡 Day 34 Android 代码混淆与解混淆 ProGuard、R8 的工作原理
🔍 Day 35 逆向加密算法(MD5、AES、RSA) 分析应用的加密逻辑
🔥 Day 36 分析 WebSocket & API 请求 使用 Burp Suite 进行协议分析
🚀 Day 37 破解应用限制(实战) 绕过 isForceUpdate() 方法
🏹 Day 38 游戏破解基础 Hook buyItem(),模拟游戏内购
🔬 Day 39 反反调试 绕过 ptrace() 保护
🏴‍☠️ Day 40 Android 加固原理 360 加固、腾讯加固的工作方式
🔍 Day 41 解密加固 APK(初级) 脱壳工具 Frida DumpDex

🚀 第三阶段:高级逆向 & CTF 挑战(Day 51 - Day 100)

🔹 目标:深入研究 Android 加固与反加固、协议分析、漏洞挖掘。

Day 主题 内容
🔥 Day 60 深入分析 CTF 逆向挑战 分析高难度 APK
🏴‍☠️ Day 70 逆向挖掘 0Day 漏洞 逆向真实应用,寻找安全漏洞
🏆 Day 100 终极挑战:逆向一个完整 APP 还原加密算法,分析协议,破解 VIP

🔥 100 天后,你将具备完整的 Android 逆向能力!
🔓 破解应用、分析安全漏洞、探索 Android 底层奥秘! 🚀


🔍 Crackme 题目

Crackme 是逆向工程中常见的挑战题目,用于练习逆向技术。

题目 描述 难度
Crackme 1 此应用程序的某处隐藏着一个秘密字符串,请想办法提取它。 ⭐️
Crackme 2 此应用程序内藏秘密,可能包含本机代码的痕迹。 ⭐️⭐️

📚 附录:学习资源 & 工具推荐

  1. 书籍推荐

    • 《Android 安全攻防实战》
    • 《Android 逆向工程》
    • 《Android Hacker's Handbook》
    • 《Android 漏洞与逆向分析》
    • 《Android 安全攻防权威指南》
  2. 工具推荐

    • 反编译工具:jadx、apktool、dex2jar
    • 动态调试工具:Frida、Xposed
    • 逆向工具:IDA Pro、Ghidra、Hopper
    • 调试器:LLDB、GDB
    • 加固工具:360 加固、腾讯加固、阿里加固
    • 逆向平台:Cuckoo、VirusTotal
    • 网络代理:Burp Suite、Charles、Fiddler、Wireshark、mitmproxy、reqable
    • 沙箱:DroidBox、AndroBugs、QARK
  3. 学习网站

  4. 社区 & 论坛

  5. CTF 竞赛

  6. 安全会议

  7. 赏金猎人平台

  8. 安全博客

📝 作者的话

🔥 Android 逆向工程是一门既有趣又具有挑战性的技能!

🚀 通过系统化学习,你将掌握逆向的核心技能,成为一名优秀的安全研究员!

📚 学无止境,持续学习,不断进步!

👨‍💻 加油!