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 文件数据

    总会有不期而遇的温暖. 和生生不息的希望。
  • 相关阅读:
    启智树提高组Day4T3 2的幂拆分
    拉格朗日插值
    #3342. 「NOI2020」制作菜品
    P6776 [NOI2020]超现实树
    P6773 [NOI2020]命运
    P5298 [PKUWC2018]Minimax
    每日总结5.20
    每日总结5.19
    每日总结5.18
    每日总结5.17
  • 原文地址:https://www.cnblogs.com/devi1/p/13486451.html
Copyright © 2011-2022 走看看