【Android 逆向】ART 脱壳 ( dex2oat 脱壳 | aosp 中搜索 dex2oat 源码 | dex2oat.cc#main 主函数源码 )
文章目錄
- 前言
- 一、搜索 dex2oat 源碼
- 二、dex2oat.cc#main 主函數(shù)源碼
前言
在 【Android 逆向】ART 脫殼 ( DexClassLoader 脫殼 | exec_utils.cc 中執(zhí)行 Dex 編譯為 Oat 文件的 Exec 和 ExecAndReturnC函數(shù) ) 博客中 , 將 dex 文件編譯為 oat 文件 , 編譯過程是由 dex2oat 可執(zhí)行程序完成的 , 這是一個(gè)有 main 函數(shù)的可執(zhí)行程序 ;
一、搜索 dex2oat 源碼
進(jìn)入源碼搜索頁面 http://aospxref.com/android-8.0.0_r36/ ,
" Project " 中 選中所有的模塊 , 在 " Full Search " 中 , 搜索 " dex2oat " , 即可搜索出相關(guān)的源碼 ;
AOSP 搜索方法 : 此處可以搜索可以選擇 聲明 Definition , 變量或字符串 Symbol , 文件路徑 File Path , 歷史 History , 類型 Type 等搜索類型 , 選擇 " Full Search " 可以以所有搜索類型為依據(jù) ;
此處搜索出的 dex2oat 源碼路徑是 /art/dex2oat/dex2oat.cc ;
二、dex2oat.cc#main 主函數(shù)源碼
dex2oat.cc#main 主函數(shù)中 , 調(diào)用了 art::Dex2oat 方法 , 執(zhí)行 oat 文件編譯操作 ;
dex2oat.cc#main 主函數(shù)源碼 :
int main(int argc, char** argv) {int result = static_cast<int>(art::Dex2oat(argc, argv));// 一切都已完成,請?jiān)诖颂庯@式退出,以避免運(yùn)行占用時(shí)間的運(yùn)行時(shí)析構(gòu)函數(shù)// 時(shí)間(bug 10645725),除非我們是調(diào)試版本或在valgrind上運(yùn)行。注:Dex2Oat類// 在這種情況下,不應(yīng)破壞運(yùn)行時(shí)。if (!art::kIsDebugBuild && (RUNNING_ON_MEMORY_TOOL == 0)) {_exit(result);}return result; }源碼路徑 : /art/dex2oat/dex2oat.cc#main
總結(jié)
以上是生活随笔為你收集整理的【Android 逆向】ART 脱壳 ( dex2oat 脱壳 | aosp 中搜索 dex2oat 源码 | dex2oat.cc#main 主函数源码 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 逆向】ART 脱壳 (
- 下一篇: 【Groovy】构建工具 ( 构建工具引