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

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

文章目录

前言

一、搜索 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 ;


image.png






二、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开发
安卓设备签到,还是用视觉智能平台人脸搜索1:N
安卓设备签到,还是用视觉智能平台人脸搜索1:N
179 2
|
5月前
|
Ubuntu 开发工具 Android开发
Repo下载AOSP源码:基于ubuntu22.04 环境配置,android-12.0.0_r32
本文介绍了在基于Ubuntu 22.04的环境下配置Python 3.9、安装repo工具、下载和同步AOSP源码包以及处理repo同步错误的详细步骤。
294 0
Repo下载AOSP源码:基于ubuntu22.04 环境配置,android-12.0.0_r32
|
6月前
|
存储 Java 编译器
🔍深入Android底层,揭秘JVM与ART的奥秘,性能优化新视角!🔬
【7月更文挑战第28天】在Android开发中,掌握底层机制至关重要。从Dalvik到ART, Android通过采用AOT编译在应用安装时预编译字节码至机器码,显著提升了执行效率。ART还优化了垃圾回收,减少内存占用及停顿。为了优化性能,可减少DEX文件数量、优化代码结构利用内联等技术、合理管理内存避免泄漏,并使用ART提供的调试工具。
131 7
|
4月前
|
存储 Java 编译器
🔍深入Android底层,揭秘JVM与ART的奥秘,性能优化新视角!🔬
【9月更文挑战第12天】在Android开发领域,深入了解其底层机制对提升应用性能至关重要。本文详述了从早期Dalvik虚拟机到现今Android Runtime(ART)的演变过程,揭示了ART通过预编译技术实现更快启动速度和更高执行效率的奥秘。文中还介绍了ART的编译器与运行时环境,并提出了减少DEX文件数量、优化代码结构及合理管理内存等多种性能优化策略。通过掌握这些知识,开发者可以从全新的角度提升应用性能。
86 11
|
5月前
|
Android开发 Docker 容器
docker中编译android aosp源码,出现Build sandboxing disabled due to nsjail error
在使用Docker编译Android AOSP源码时,如果遇到"Build sandboxing disabled due to nsjail error"的错误,可以通过在docker run命令中添加`--privileged`参数来解决权限不足的问题。
997 1
|
5月前
|
开发工具 uml git
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
本文分享了下载AOSP源码的方法,包括如何使用repo工具和处理常见的repo sync错误,以及配置Python环境以确保顺利同步特定版本的AOSP代码。
654 0
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
|
5月前
|
Java Android开发 芯片
使用Android Studio导入Android源码:基于全志H713 AOSP,方便解决编译、编码问题
本文介绍了如何将基于全志H713芯片的AOSP Android源码导入Android Studio以解决编译和编码问题,通过操作步骤的详细说明,展示了在Android Studio中利用代码提示和补全功能快速定位并修复编译错误的方法。
227 0
使用Android Studio导入Android源码:基于全志H713 AOSP,方便解决编译、编码问题
|
5月前
|
API 开发工具 Android开发
Android Studio:解决AOSP自编译framework.jar引用不到的问题
在Android Studio中解决AOSP自编译framework.jar引用问题的几种方法,包括使用相对路径、绝对路径和通过`${project.rootDir}`动态获取路径的方法,以避免硬编码路径带来的配置问题。
360 0
Android Studio:解决AOSP自编译framework.jar引用不到的问题
|
5月前
|
Android开发
我的Android 进阶修炼(1): AOSP源码根目录结构
本文介绍了AOSP源码的根目录结构,提供了基于MTK9269 Android 9.0源码的目录说明,帮助读者了解AOSP源码的组织方式和各目录的功能。
262 0
我的Android 进阶修炼(1): AOSP源码根目录结构
|
5月前
|
开发工具 Android开发 git
全志H713 Android 11 :给AOSP源码,新增一个Product
本文介绍了在全志H713 Android 11平台上新增名为myboard的产品的步骤,包括创建新的device目录、编辑配置文件、新增内核配置、记录差异列表以及编译kernel和Android系统的详细过程。
248 0