文章目录

  • 一、加固厂商在 ART 下使用的两种类加载器 ( InMemoryDexClassLoader | DexClassLoader )
  • 二、InMemoryDexClassLoader 源码分析

一、加固厂商在 ART 下使用的两种类加载器 ( InMemoryDexClassLoader | DexClassLoader )


脱壳就是要在加固厂商使用类加载器加载 DEX 文件时 , 从加载过程中 , 从内存中获取 DEX 文件 ;

  • 在 Dalvik 虚拟机的 Android 系统 中 , 即 Android 4.44.44.4 及以下的系统 , 加固厂商 使用 DexClassLoader 加载 DEX 字节码文件 ;

  • 在 ART 虚拟机的 Android 系统 中 , 即 Android 5.05.05.0 及以上的系统 , 加固厂商使用 InMemoryDexClassLoader 或者 DexClassLoader 加载 DEX 字节码文件 ;

  • 其中 InMemoryDexClassLoader 是 Android 8.08.08.0 引入的类加载器 ;

由于要分析 ART 虚拟机下的 InMemoryDexClassLoader 和 DexClassLoader 类加载器 , 这里分析 Android 8.08.08.0 源码 ;

二、InMemoryDexClassLoader 源码分析


在 InMemoryDexClassLoader 类加载器源码中 , 只定义了构造函数 , 没有定义实际业务逻辑 , 与 DexClassLoader 类似 ;

第 222 个构造函数调用了第 111 个构造函数 , 第一个构造函数中 , 调用了 BaseDexClassLoader 的构造函数 ,

super(dexBuffers, parent);

InMemoryDexClassLoader 源码 :

package dalvik.system;import java.nio.ByteBuffer;/*** 一个{@link ClassLoader}实现,从* 包含DEX文件的缓冲区。这可用于执行以下代码:* 尚未写入本地文件系统。*/
public final class InMemoryDexClassLoader extends BaseDexClassLoader {/*** 使用给定的DEX缓冲区创建内存中的DEX类装入器。* * @param dexBuffers 包含之间的DEX文件的缓冲区数组* <tt>缓冲区。位置()</tt>和<tt>缓冲区。限制()</tt>。* @param parent 委托的父类加载器。* @隐藏*/public InMemoryDexClassLoader(ByteBuffer[] dexBuffers, ClassLoader parent) {super(dexBuffers, parent);}/*** 创建一个新的内存中DEX类装入器。* * @param dexBuffer缓冲区,包含之间的DEX文件内容* <tt>缓冲区。位置()</tt>和<tt>缓冲区。限制()</tt>。* @param parent委托的父类加载器。*/public InMemoryDexClassLoader(ByteBuffer dexBuffer, ClassLoader parent) {this(new ByteBuffer[] { dexBuffer }, parent);}
}

源码路径 : /libcore/dalvik/src/main/java/dalvik/system/InMemoryDexClassLoader.java

【Android 逆向】ART 脱壳 ( InMemoryDexClassLoader 脱壳 | 加固厂商在 ART 下使用的两种类加载器 | InMemoryDexClassLoader 源码 )相关推荐

  1. 几款最主流的音乐播放器应用源码-android源码

    影音播放 优雅音乐播放器应用源码 这是一款不错的音乐播放器应用源码案例,优雅音乐播放器应用源码,该应用的界面有点类似小米音乐播放器,应用的整天布局还没有那 人气:3328运行环境:/android/i ...

  2. Android逆向与安全——360 dex加固与脱壳

    前言 现在市面上对APP的安全合规管控越来越严格了,也就要求了APP在上架之前一定要做合规检测和加固处理.对APP就是加固的好处,可以提高APP的安全性,提高APP被逆向分析破解的门槛,同时通过加固保 ...

  3. Android逆向之脱掉“360加固”的壳

    转载自:https://blog.csdn.net/jiangwei0910410003/article/details/51769447 此处仅作为学习记录一用.至于评论问答环节,请去上面地址翻阅四 ...

  4. 【Android 逆向】类加载器 ClassLoader ( Android 的八种类加载器 | ClassLoader | BaseDexClassLoader | DexClassLoader )

    文章目录 一.Android 类加载器 1.ClassLoader 抽象类 2.BootClassLoader 3.BaseDexClassLoader 4.PathClassLoader 5.Dex ...

  5. 【Android 热修复】热修复原理 ( Dex 文件拷贝后续操作 | 外部存储空间权限申请 | 执行效果验证 | 源码资源 )

    文章目录 一.Dex 文件准备 二.外部存储空间权限申请 1.清单文件申请权限 2.动态申请权限 三.文件拷贝 1.文件拷贝 2.执行效果 四. 源码资源 一.Dex 文件准备 在 [Android ...

  6. 【Android 进程保活】应用进程拉活 ( JobScheduler 拉活 | JobScheduler 使用流程 | JobService 服务 | 不同版本兼容 | 源码资源 )

    文章目录 一. JobScheduler 用法简介 二. JobScheduler 拉活完整代码 1. JobService 2.清单文件 3.启动 JobScheduler 任务 4.运行效果 三. ...

  7. android手机卫士、3D指南针、动画精选、仿bilibli客户端、身份证银行卡识别等源码...

    Android精选源码 android身份证.银行卡号扫描源码 android仿bilibili客户端 android一款3D 指南针 源码 android手机卫士app源码 android提醒应用, ...

  8. 自编Win8风格Android音乐播放器应用源码(单机版)

    用闲暇的两天时间,研究编写了一个类Win8风格的android音乐播放器,实现了大部分基本功能.下面看具体描述: 基本实现功能: 注意事项:Android系统版本须在2.2以上,保证手机安装有SD卡( ...

  9. Android IT资讯网络阅读器应用源码

    这个是Android IT资讯网络阅读器应用,也是一款通过jsoup解析Html获取内容的网络阅读器,和前面的其实是类似的,也是大学时期闲暇完成,对照CSDN的Web页面元素设计进行解析提取内容,核心 ...

最新文章

  1. Ubuntu find命令详解
  2. SAP MM 巴西采购订单中的NCM Code
  3. C 语言判断大端小端
  4. Scala语言将加入宏指令
  5. log4j 日志配置
  6. 可信云十年,重磅研究成果与2021云计算十大关键词悉数发布
  7. Linux安装tomcat8
  8. 计算机维修师高级证书好考吗,本人在考计算机维修工证书,现有诸多典型问题,求答案...
  9. Vuepress 如何引入百度统计和谷歌统计
  10. 表单及阿里巴巴矢量图
  11. Python判断html的元素,python判断网页元素是否存在的方法
  12. 小米手机TCP连接一些奇怪现象
  13. VS将复制过来的文件或文件夹显示到解决方案管理
  14. mysql numeric 空值_mysql数据库不能添加NULL值,该怎么解决 - numeric
  15. 触摸识别,智能分拣……看AI如何为垃圾分类赋能
  16. Android面试知识库,线程和进程的区别【Android面试送命题】
  17. 后端 php mysql_搭建并部署PHP + MySQL后端环境
  18. mapper parameterType
  19. SSH命令行使用方法
  20. 点评2008年九大经济学家惊人语录

热门文章

  1. linux内核网络接收数据流程图【转】
  2. mysql 创建库设置中文
  3. [转]iis部署php项目
  4. 如何在tomcat前部署一个nginx
  5. Python学习---Python安装与基础1205
  6. 【NOIP2013模拟】黑魔法师之门
  7. 饭卡(HDOJ2546)
  8. mvc tips:在模板页中使用javascript
  9. distinct 只针对一个字段
  10. 二叉树的建立和遍历的各种问题