Android 逆向ART 脱壳 ( dex2oat 脱壳 | aosp 中搜索 dex2oat 源码 | dex2oat.cc#main 主函数源码 )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 逆向ART 脱壳 ( dex2oat 脱壳 | aosp 中搜索 dex2oat 源码 | dex2oat.cc#main 主函数源码 )相关的知识,希望对你有一定的参考价值。

前言

【Android 逆向】ART 脱壳 ( DexClassLoader 脱壳 | exec_utils.cc 中执行 Dex 编译为 Oat 文件的 Exec 和 ExecAndReturnC函数 ) 博客中 , 将 dex 文件编译为 oat 文件 , 编译过程是由 dex2oat 可执行程序完成的 , 这是一个有 main 函数的可执行程序 ;





一、搜索 dex2oat 源码



进入源码搜索页面 http://aospxref.com/android-8.0.0_r36/ ,

" Project " 中 选中所有的模块 , 在 " Full Search " 中 , 搜索 " dex2oat " , 即可搜索出相关的源码 ;

AOSP 搜索方法 : 此处可以搜索可以选择 声明 Definition , 变量或字符串 Symbol , 文件路径 File Path , 历史 History , 类型 Type 等搜索类型 , 选择 " Full Search " 可以以所有搜索类型为依据 ;

此处搜索出的 dex2oat 源码路径是 /art/dex2oat/dex2oat.cc ;





二、dex2oat.cc#main 主函数源码



dex2oat.cc#main 主函数中 , 调用了 art::Dex2oat 方法 , 执行 oat 文件编译操作 ;


dex2oat.cc#main 主函数源码 :

int main(int argc, char** argv) 
  int result = static_cast<int>(art::Dex2oat(argc, argv));
  
  // 一切都已完成,请在此处显式退出,以避免运行占用时间的运行时析构函数
  // 时间(bug 10645725),除非我们是调试版本或在valgrind上运行。注:Dex2Oat类
  // 在这种情况下,不应破坏运行时。
  if (!art::kIsDebugBuild && (RUNNING_ON_MEMORY_TOOL == 0)) 
    _exit(result);
  
  return result;

源码路径 : /art/dex2oat/dex2oat.cc#main

以上是关于Android 逆向ART 脱壳 ( dex2oat 脱壳 | aosp 中搜索 dex2oat 源码 | dex2oat.cc#main 主函数源码 )的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向ART 脱壳 ( InMemoryDexClassLoader 脱壳 | DexFile 构造函数及相关调用函数 | Android 源码中查找 native 函数 )

Android 逆向ART 脱壳 ( 修改 /art/runtime/dex_file.cc#OpenCommon 系统源码进行脱壳 )

Android 逆向ART 脱壳 ( InMemoryDexClassLoader 脱壳 | InMemoryDexClassLoader 类加载器脱壳点总结 )

Android 逆向ART 脱壳 ( InMemoryDexClassLoader 脱壳 | 加固厂商在 ART 下使用的两种类加载器 | InMemoryDexClassLoader 源码 )(代码

Android 逆向ART 脱壳 ( InMemoryDexClassLoader 脱壳 | dex_file.cc 中创建 DexFile 实例对象的相关函数分析 )

Android 逆向ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )(代码片段