zoukankan      html  css  js  c++  java
  • 【移动安全基础篇】——15、Dalvik dex处理分析

    1. Dex  加载流程
    Vm->native->dalvik_system_DexFile->openDexFile
                     openDexFile,读取内存中的 Dex 文件数据并加载
    Dalvik_dalvik_system_DexFile_openDexFile_bytearray

    1)  转换存储的 dex 格式为执行的 dex 格式
    dvmRawDexFileOpenArray(pBytes, length, &pRawDexFile) //将 byte 数据转换成 Android可以加载的数据
    2)  添加到 gDvm 中
    addToDexFileTable(pDexOrJar);
    脱壳点之一的函数:dvmDexFileOpenPartial

    2. 壳实现加载流程
    1)  内存中解密 dex 函数
    2)  将 dex 存储结构转换为执行结构
    3)  添加到 gDvm 中
    部分壳是自己实现了该功能,部分壳是调用系统的函数,一般这里可以作为一个脱
    壳点
    4)  抹去 dex 存储结构中的有效数据

    3. 脱壳思路
    dvmHashTableLookup(gDvm userDexFiles, hash, pDexOrJar, hashcmpDexOrJar, true);加载后的 Dex 数据会添加到userDexFiles 哈希表中,通过遍历 userDexFiles 获取到当前所有已经加载的 Dex 文件数据

    总会有不期而遇的温暖. 和生生不息的希望。
  • 相关阅读:
    家庭记账本开发记录2
    家庭记账本开发记录1
    构建之法阅读笔记——具体职位、用户和行业篇
    构建之法阅读笔记——团队篇
    js学习17
    js学习15
    js学习14
    js学习13
    js学习12
    js学习11
  • 原文地址:https://www.cnblogs.com/devi1/p/13486451.html
Copyright © 2011-2022 走看看