android 逆向笔记

  1. 壳检测工具 GDA

2. 逆向分析APP 一般流程

 1. 使用自动化检测工具检测APP是否加壳,或者借助一些反编译工具依靠经验判断是否加壳
 2. 如果apk加壳,则需要先对apk进行脱壳
 3. 使用`jeb`, `jadx`, `apktool`等反编译工具对apk进行反编译
 4.  先依据静态分析得到的关键字符串、关键API调用快速定位到需要分析的函数和流程
 5. 如果关键字符串或者关键API无法快速定位,则apk可能使用了字符串加密、反射调用等手段;此时可以使用hook或动态调试等手段
 6. 定位到关键函数后,再跟进是java实现还是JNI实现进一步做分析,其中so中的函数逻辑分析难度较大

3. JAVA 的双亲委派模型原理及作用

原理:

  1. Bootstrap ClassLoader(引导类加载器)
    C/C++ 实现的加载器,用于加载JDK的核心类库,比如: java.lang、java.util
    等系统类。JAVA虚拟机启动就是通过Bootstrap ClassLoader;在JAVA里无法获取该类和对象,负责加载/lib下的类
  2. Extention ClassLoader (拓展类加载器)
    JAVA 实现的加载器,提供了除了系统类之外的额外功能,可以在java里获取,负责加载/lib/ext下的类
  3. Application ClassLoader (应用程序类加载器)
    JAVA 实现的加载器,开发人员写的代码默认就是由它来加载,ClassLoader.getSystemClassLoader返回的就是它

双亲委派模型:
当一个加载器要加载一个类时,会向上让父类去加载该类,该类加载不了,再向下加载,都加载不了,则该加载器加载
加载器加载类的顺序
Boostrap -> Extension -> Application -> 自定义的类加载器

作用:

  1. 避免重复加载,如果一个类被加载过了,则直接读取该记载的class
  2. 更加安全,无法通过自定义的类来替代系统的类,防止核心API库被随意篡改
posted @ 2023-03-02 20:28  明月照江江  阅读(93)  评论(0编辑  收藏  举报