找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 163|回复: 0

DexClassLoader加载流程

[复制链接]

2万

主题

137

回帖

13万

积分

管理员

积分
139366
发表于 2021-12-15 16:11:25 | 显示全部楼层 |阅读模式 IP:山东省 移动/数据上网公共出口

登录后更精彩...O(∩_∩)O...

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 mind 于 2021-12-15 16:22 编辑

DexClassLoader加载流程
总结:过程中出现dex起始地址和大小的还是可以进行dump的。另外,openDexFileNative中的dex2oat的流程可以dump,但是有些壳干掉了这个流程,不一定可以dump下来,

还是先来到DexClassLoader的初始化函数
路径:8.0.0_r4/xref/libcore/dalvik/src/main/java/dalvik/system/DexClassLoader.java


进入BaseDexClassLoader
路径:
8.0.0_r4/xref/libcore/dalvik/src/main/java/dalvik/system/BaseDexClassLoader.java

进入DexPathList
路径:
8.0.0_r4/xref/libcore/dalvik/src/main/java/dalvik/system/DexPathList.java

进入makeDexElements


进入loadDexFile


进入DexFile.loadDex
路径:
8.0.0_r4/xref/libcore/dalvik/src/main/java/dalvik/system/DexFile.java


进入DexFile构造函数


进入openDexFile


进入openDexFileNative,已经到了native函数


进入native函数实现
路径:
8.0.0_r4/xref/art/runtime/native/dalvik_system_DexFile.cc

进入OpenDexFilesFromOat就是编译dex2oat的过程
OpenDexFilesFromOat->MakeUpToDate->GenerateOatFileNoChecks->Dex2Oat(这里已经开始准备需要编译的参数了)->Exec->ExecAndReturnCode
阻断dex2oat会增加app启动速度

如果阻断了dex2oat生成,OpenDexFilesFromOat函数就会走到以下流程加载dex文件,通过调用DexFile::Open最终又会走到openCommon函数



流程和InMemoryDexClassLoader基本差不多,主要还是在dex2oat的流程中,最终都会走到openCommon
————————————————
版权声明:本文为CSDN博主「986227498」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34581212/article/details/108731786

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|时间戳|加密|CTF WiKi|CTF平台汇总|CTF show|ctfhub|棱角安全|rutracker|攻防世界|php手册|peiqi文库|CyberChef|猫捉鱼铃|手机版|小黑屋|cn-sec|IOTsec-Zone|在线工具|分享屋 ( 鲁ICP备2021028754号 )

GMT+8, 2024-9-19 10:04

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表