gal2xy's blog
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于
  • 友链
  •   
  •   

InMemoryDexClassLoader加载内存dex的流程

一、前言在之前分析dex文件加载流程中(dex文件加载流程(一)(二)(三)),我们分析过了DexClassLoader和PathClassLoader这两个类加载器加载dex的流程。它们两个都是用来记载文件dex的,但是在Android 8新增了InMemoryDexClassLoader,专门用于加载内存dex,接下来我们就根据源码来剖析内存dex的加载流程。 二、InMemoryDexCla
2023-12-06
Android
#Android源码解析

对Java反射方法进行封装

在这之前,我们需要分析一下封装Java反射方法是为了干什么。 显然在Android第一代加固壳的原理及实现一文中,我们重复地使用到了Java反射来获取类、字段、方法,无一例外,获取它们的最终目的是获取字段值、修改字段值、调用方法。为了实现这些目的,我们写了很臃肿的代码,因为太多重复的反射获取,所以我们可以将这些代码封装起来,形成一个自定义类,这样一来,加固的代码就可以变得轻巧了,且这个封装类以后还
2023-12-04
Android
#Java反射

关于一代壳的一些理解

想解释一下一代壳的脱壳代码为什么这么写,以及一些代码中的细节,解释全在代码注释中!!! 思维有点乱,可能有错误的地方,烦请告知,谢谢! 话不多说,直接看handleBindApplication(),想要详细跟踪Application的创建请阅读Android中Application的创建流程。 12345678910111213141516171819202122232425262728293
2023-12-02
Android
#Android加固

Android第一代加固壳的原理及实现 —— 落地加载

一、前言学习加壳之前,建议先把前置知识学习再说。我们需要先学习dex文件结构、java反射、Android中的ClassLoader、Application以及它的加载流程、App启动流程。 不然我真不建议直接莽它,不懂原理只能学到皮毛! 二、第一代加固壳原理第一代加固壳原理如下图所示: 在图中涉及到三个程序: 待加壳程序的APK(源程序APK) (脱)壳程序APK(负责解密源程序APK并加载
2023-12-01
Android
#Android加固

Android中的Application类

一、Application是什么Application同Activity、Service一样,都是Android系统的组件。当应用程序启动过程中,最先创建的是Application实例(有且仅有一个),它的创建早于应用程序启动以及任何Activity、Service或接收者对象(不包括ContentProvider)的创建。Application的生命周期是整个应用程序中最长的,它的生命周期就等于
2023-12-01
Android

Android中Application的创建流程

一、前言System进程和App进程都运行着一个或多个App,每个App都会有一个对应的Application对象(该对象跟LoadedApk一一对应)。下面分别解析以下两种进程创建Application的过程: System Server进程 App进程 二、System Server进程在Android系统启动流程一文中,讲到过Zygote通过回调函数进入到System Server阶段,
2023-11-27
Android
#Application #Android源码解析

Android中的ClassLoader

一、ClassLoader的类型java中的ClassLoader和Android中的ClassLoader并不完全相同,因为java的可执行文件为class文件,而Android的可执行文件为dex文件,他们所加载的文件不同,因而所使用的ClassLoader也不相同。 Android中的ClassLoader分为两种类型,分别如下: 系统类加载器:BootClassLoader、PathCl
2023-11-25
Android
#Android源码解析 #ClassLoader

java反射技术学习

一、什么是反射反射是指在程序运行时动态地获取类的信息,包括类名、字段、方法等。Java提供了一系列反射方法来操作(如获取、创建、修改、调用)Class对象、构造函数、方法、字段等。通过反射,我们可以创建对象、调用方法和访问字段,而不需要提前知道类的具体定义。同时反射也是一种实现动态加载的技术之一。 二、基于反射进行动态加载贴一段用于辅助测试的代码: 123456789101112131415161
2023-11-23
Android
#Java反射

dex文件加载流程(三)

书接上文dex文件加载流程(二) (gal2xy.github.io)。 一、DexFile::Open()根据上一篇文章的学习可知,在OpenDexFilesFromOat()方法中,如果能够从oat文件中加载dex文件,则最终在OatFile::OatDexFile::OpenDexFile()方法中调用带8个参数的DexFile::Open()方法: 12345678DexFile::Ope
2023-11-20
Android
#Android源码解析 #dex

dex文件加载流程(二)

书接上文dex文件加载流程(一)(gal2xy.github.io)。 一、DexFile_openDexFileNative()学习完上一篇文章,我们知道:不管是用PathClassLoader还是DexClassLoader加载dex文件,它们最终都会调用openDexFileNative()方法,该方法对应art/runtime/native/dalivk_system_DexFile.cc
2023-11-20
Android
#Android源码解析 #dex
1…45678…14

搜索

Hexo Fluid
总访问量 次 总访客数 人