1.3 前言

前  言


视频知识点主要分为:

入门知识点,初级知识点,中级知识点,高级知识点,特级知识点。


  • 入门知识点:

主要只需要会Java语言即可学会的。


  • 初级知识点:

需要一定的基础,不需要前奏知识。会常用的Xposed等框架。


  • 高级知识点:

可能需要对C++,Java,安卓FK层有一定了解。对安卓体系有一定了解。


  • 特级知识点:

学习起来比较吃力,需要不断尝试才可以解决问题。(很多问题可能百度找不到答案)

需要有独立分析安卓源码的能力。需要对各种架构,安卓FK等深入理解,知识比较杂,需要用到前置技能等。


因为每个人的基础并不相同,所以观看视频的切入点也不一样,所以整理一份学习视频的流程图。  方便大家找到适合自己的学习路径和学习方法。

当然,如果你有一定基础只是想提升自己的话,也可以根据QQ资料群里面的思维导图根据自己喜欢的 或者需要的课程进行选择性观看。不懂的话也可以随时在群里问的 :)。


-------《真正的大师,永远保持一颗学徒的心》



流 程

此视频需要一定的Java基础,如果您没有Java基础,可能不太适合。

 

可以去bilibili找一套排名较高的Java视频作为入门语言。

刚开始学习不要急躁,沉下心,一天大约2-3小时学习时间足够了。跟着demo自己尝试敲一遍。看看相关语法。

可以用IDEA去写,很多视频刚开始用Ecplice,后面转成IDEA时候可能还需要适应,

所以建议刚开始学的时候就用IDEA,或者直接使用Android Studio。



(入门知识点)Xposed基础:

如果您从没有使用过Xposed或者不了解Xposed,对环境搭建,API等常用功能不了解。   可以参考视频25,26,27。详细介绍了Xposed 从0-1搭建,Hook demo的实现。

方便入门。


逆向相关:

如果想提升App的分析能力,跳转到App分析技巧。

如果想继续提升Xposed的了解可参考Xposed进阶。(主要是明白原理,增加知识沉淀)    对App抓包有困扰的可跳转到抓包相关。

App防护&空白混淆(App安全相关)

算法分析相关安卓知识点杂记



(初级知识点)App分析技巧:

主要参考视频第一集

App分析常用工具的使用。JADX,

DDMS 方法追踪,

Encryptstack(第一节课件可能不是最新版记得去git下载最新版去编译,原理), UiautomatorViewer (查看App的页面布局工具)

BuildProp Enhancer 修改手机Debug模式



Xposed进阶:

进阶主要分为几点,可能需要C++的知识储备。


  • 1(高级知识点)安卓启动流程分析&Xposed实现原理&如何实现Hook的?(参考视频:20 )


面试常见问题,Xposed实现原理,方法替换实现,为什么需要把方法变成Native?

8.0以上和7.1方法调用区别?什么时候替换入口 quick入口 ? 解释器入口?为什么要将Dex Method index 置为0?

 为什么要组织OAT编译?JIT和OAT的关系?


  • 2(高级知识点)Xposed实现Native Hook 细节点&兼容Android10 (参考视频 :2,3)

 Xposed实现Native   Hook以后,可以打开另一扇大门,很多以前不可能做的事情,都可以做到。使用C++ 开发。使用也比较方便。为后面IO重定向等进阶知识点打下基础。


  • 3(初级知识点)Xposed 自动化点击框架 XposedAppiu使用&原理(参考视频:22,23)

App实现自动化点击,不连接USB,完全自动化。Xposed模块激活。

使用方便,对App二次打包以后,丢到云手机上,安装以后自动化点击都变得轻而易举。群控必备框 架。


  • 4(高级知识点)动态注册对抗(参考视频:4)

很多AppNative方法都是动态注册的,如何通过Hook注册地址,确定注册的函数在So内部的相对偏移

详细介绍了JNI->RegiestNative  方法流程安卓源码分析跟进,在最后一部进行Hook打印方法注册的签名,方法的注册地址。

如何调用PrettyMethod方法打印Native方法签名?C++ class方法隐藏参数this指针的使用



(初级知识点)抓包相关(参考视频:5):

单项&双向现阶段比较常用的抓包手段。

justTrustMePlush 使用,原理,常用框架,单双向检测手段等。


文件格式&加载原理:

主要包含DEX,So文件。

  • 1(初级知识点)Dex文件格式(参考视频:6,7)

如果喜欢研究加壳,脱壳,必备知识点。解释执行,什么是操作数?什么是操作码

一条指令包含哪些内容?安卓底层如何运行对应的指令的?


  • 2(初级知识点)ELF文件格式(参考视频:14)

平时用的不多,面试经常问,功能和作用之类的。

如果经常分析So,So可能会加固和混淆,或者想做一些So的加固,脱壳,解析,修改等。则是必备知识点。


  • 3(高级知识点)安卓加固相关知识(参考视频:8,9)

简单介绍了一些App加固的发展历史,对抗方法和手段等。

 

  • 4(高级知识点)ELF文件动态链接&重定位详解

ELF文件的动态链接过程,主要包括各种为什么要动态链接,动态链接都做了哪些事情。Rel表,Got表,Plt表 rel.plt表 功能,作用,面试必备知识点。



(初级知识点)App防护&空白混淆(参考视频:10,11,12)

通过修改Proguard生成不可见字符串,混淆App,抛弃原有a,b,c,d等。

还有包括App字符串加密使用等。让对方Hook变得更加艰难,包括如何对抗一些特殊字符串的App。如果对保护App有需求还是必须要学的东西。



算法分析

涉及的点比较多,包括Arm汇编,各种算法特征,IDA使用等相关,

常用的一些方法,比如So黑盒调用,RPC远程调用,So算法还原,后面还会有unidbg专题


  • 1(初级知识点ARM基础知识(32位(参考视频:13)) 

这个可以百度看看,需要了解SP,LR,PC等常用寄存器的功能 在讲IDA算法会重新讲一次。                                       


  • 2(初级知识点)黑盒调用So(参考视频35)

黑盒直接调用So,调用问题排查等


  • 3(初级知识点)RPC方案调研So&Demo演示(参考视频:36)

 sekiro框架搭建&演示,和之前的区别。对抗手段,缺点,优点。


  • 4(高级知识点)IDA相关&常见加密算法特征(参考视频:34-42) 


介绍了常见的if,for,while等常见代码汇编流程。

还有AES,BASE64,MD5,RSA,DES等算法特征,还有Base64 异或变种算法分析流程

Demo提供,核心知识点建议进阶必备观看。


(特级知识点)IO重定向(参考视频:43-51)

前奏知识点:

dobby的使用(参考视频:21)

cmake开发等相关知识(参考视频:45)


介绍了IO重定向的实现,包括遇到的一些问题,实现的一些问题点。可能需要对C++ 有一定了解

可以解决什么问题?实现原理,

过Root检测,过签名检测,签名检测的常用方法,IDA反调试检测,文件调用监听,linker无符号的

Hook,dlopen&linker的区别都详细介绍了

SD模拟,隐藏文件等都会用到。在逆向过程成很常用的方法和手段都有详细的介绍。


安卓知识点杂记

  • 1,(初级知识点)Java设计模式动态代理(参考视频:28)

在RPC等方向经常会用到动态代理知识点,RPC调用一个方法接口为参数的时候可能需要动态生成一个实例,所以用到动态代理的知识点


  • 2,(初级知识点)SVC指令的使用&内联汇编介绍(参考视频:30)

 介绍了svc指令的使用,如何用svc去获取文件信息,svc原理等。


  • 3,(初级知识点)安卓文件架构等介绍(参考视频:19)

介绍了安卓各种文件的目录的功能,比如/data/app/  ,/data/data/...等包括一些分区的知识,分区的作用,刷机的一些知识点。

还有SELinux的安全机制的介绍,什么是SELinux包括SELinux和正常Linux的区别(参考视频:31)


  • 4,(高级知识点)Strace使用(参考视频:18)

一个Linux的框架,通过源码编译可产出。可以监听所以的Native的调用,包括参数的打印


  • 5,(初级知识点)重打包相关(参考视频:29)

很多人经常用apktools重打包,问题很大。回编译很容易失败,用MT当成zip直接替换文件即可


  • 6,(初级知识点)热修复相关(参考视频:29)

介绍了热修复的实现,用Xposed实现热修复,可以动态替换安卓源码。省去编译。包括Tlinker的实现原理复现。


Android逆向进阶视频结构脑图

请单击左侧 “资料”按钮,下载PDF附件。