唐天宇 发表于 2023-7-19 19:48:55

安卓逆向和手游辅助学习路线

一.安卓逆向基础(建议1周)

1. 学习安卓逆向第一步必须先把环境搭建好,这是你学习安卓逆向的开始,环境搭建好后表示正式迈入安卓逆向。在环境安装的工程中会遇到很多细节上的问题。

2. 第二步就是要了解我们要分析的是什么文件,很多0基础的同学都不知道安卓逆向分析的什么文件。我们要分析的是应用程序或者安装包(就是.apk文件),了解apk是怎么生成的以及如何安装到我们的手机里面,apk是怎么运行的,也是我们探讨的内容。

3. 第三步如何逆向分析.apk文件,掌握apk反编译及回编译,完成这个操作使用的工具是apktool。

一.Java层逆向(建议3周)

1. 掌握Java语法基础,达到能看懂Java代码。

2. 了解smali语法,能看懂smali代码。

3. 掌握逆向分析apk中常用的方法和技巧。

二.Native层逆向(建议4周)

1. 了解安卓操作系统和四大组件。

2. 了解NDK开发流程,自己编写案例练习。

3. 掌握常用ARM汇编指令,达到能看懂ARM汇编指令。

4. 掌握ida工具的使用,熟练使用ida进行各种操作

三.APK保护策略(建议1周)

1. 了解Java代码混淆、资源混淆

2. 掌握签名验证、文件校验、模拟器检测

3. 本地验证、网络验证

4. 案例练习

四.反调试与反-反调试(建议1周)

1. 掌握常用反调试方法及过反调试技巧,比如关键文件检测、调试端口检测、进程名称检测、防附加、轮训检测TracerPid值、时间检测、信号检测等反调试。

2. 掌握IDA过反调试思路

3. 案例练习。

五.HOOK框架(建议2周)

1. 掌握HOOK插件开发。

2. 掌握Xposed、Substrate、Fridad等框架。

3. 案例练习。

六.常见加密算法(建议2周)

1. 掌握编码算法、消息摘要算法、对称加密算法(Java加密与解密的艺术)。

2. 掌握非对称加密算法、数字签名算法。

七.协议加解密分析(建议4周)

1. 了解客户端与服务器如何进行交互的(OSI模型、TCP/IP模型)。

2. 掌握常用的抓包工具及环境配置,HTTP协议与HTTPS安全协议,数字证书、SSL证书检测(计算机网络与通信、信息安全工程师)。

3. 案例练习。

八.文件结构(建议2周)

1. 掌握DEX、ELF、XML、ARSC等文件结构。

2. 自编写文件解析工具。

九.系统源码分析(建议2周)

1. 了解安卓操作系统启动流程、Zygote启动流程。

2. 掌握Dalvik虚拟机、ART虚拟机、SO加载流程。

十.加固与脱壳(建议4周)

1. 了解dex文件整体加密、Dex代码抽取加密。

2. 了解so文件整体加密、函数加密、区段加密、加壳、混淆。

3. 分析通用脱壳机的实现原理及应用场景。

4. 了解主流加固特点及对应的脱壳技巧。

十一.按键+内存(建议2周)

1. 环境搭建,搜索内存数据,对内存数据进行读写操作。

2. 市面上的模拟器辅助,有一部分就是通过搜索内存数据来找特征码,因为游戏中有的数据是不会发生变化的,我们选择这部分不变的数据作为特征码。通过特征码来搜索内存数据,找到特征码的地址,再通过特征码的地址+距离(偏移)来实现定位。

3. 案例练习。

十二.篡改内存数据+注入技术+HOOK技术(建议4周)

1. 掌握模块基地址获取、非注入式篡改数据、注入式篡改内存数据。

2. 掌握注入技术原理(Ptrace注入、Zygote注入、静态感染ELF文件注入)。

3. 掌握HOOK技术的实质,就是对函数进行重写(Inline HOOK、异常HOOK、导入表HOOK)。

4. 掌握C++游戏逆向分析技巧。

5. 案例练习。

十三.Lua游戏(建议4周)

1. 掌握Lua游戏逆向分析流程,第一步查看lib文件夹的so文件就可以确定该游戏是不是Lua游戏,第二步如果是Lua游戏就在assets文件夹下查找lua脚本。

2. Lua游戏功能实现都在Lua脚本,重点分析Lua脚本(Lua明文、LuaC、Luajit)。

3. Lua文件加密与加密,内存dump Lua脚本,HOOK插件开发。

4. Cocos2dx-Lua引擎源码分析

5. 案例练习

十四.Unity 3D游戏(建议4周)

1. 掌握Unity 3D游戏逆向分析流程,第一步查看lib文件下的so文件就可以确定该游戏是不是Unity 3D游戏,第二步如果是Unity 3D游戏就在assets文件下查找相应的文件。

2. Unity 3D有两种框架(MONO框架、IL2CPP框架),MONO框架对应的游戏逻辑实现在dll文件,IL2CPP框架对应的游戏逻辑实现在libil2cpp.so文件。

3. Unity 3D引擎源码分析。

4. DLL文件处理,DLL混淆,DLL隐藏,DLL加密。

5. 内存dump dll文件,HOOK插件开发,注入+HOOK。

6. 案例练习

十五.游戏协议(建议2周)

1. WPE环境搭建,拦截发送包和接收包,多截包对比分析封包数据。

2. 分析喊话功能,找出加密规律,各种游戏功能封包拦截分析。

3. 案例练习。

十六. 学习方法

1. 看一遍教程后自己实战操作,养成做笔记的习惯。

2. 注重基础,一定要把Java层和Native层搞懂。

3. 学习中不要纠结细节,要学会抓大放小。

4. 学完后自己画脑图,回顾学习的过程中那些不理解在花时间去看,此过程就是查漏补缺。


页: [1]
查看完整版本: 安卓逆向和手游辅助学习路线