安卓檔案分析 ODEX OAT

2021-10-17 04:08:02 字數 1487 閱讀 6945

在android5.0之前,主要使用dalvik,dalvik對

apk的dex檔案進行一定程度的優化,解析dex檔案並生成odex檔案

比dex多了以下內容

dexoptheader:odex檔案頭,描述了odex檔案的基本資訊

dependences:依賴庫列表,描述了odex檔案載入時可能使用的依賴庫

classlookups:優化資料塊的類索引列表資訊

registermaps:優化資料塊的暫存器圖資訊

struct dexoptheader

struct dependencestable[numdeps];}

優化資料塊有如下三種型別

enum

kdexchunkend表示優化資料塊結束

kdexchunkclasslookup表示ckasslookup資料

kdexchunkregistermaps是registermaps資料

odex先反編譯成smali,再編譯成dex,叫做"deodex"

工具:baksmali smali

指令碼命名deodex

rm -rf ./outdex

rm -rf ./outdex.dex

baksmali -a 19 -x "$1" -d 目錄 -o ./outdex

smali ./outdex -o outdex.dex

echo

done

oat是優化過的,用於art虛擬機器執行的dex檔案?(odex 5.0前) 5.0後

和elf差不多

struct oatheader 

;header中有dex_file_count就有幾個oatdexfile?(不是乙個都包涵了嗎)

struct oatdexfile

只有oat時用010editor指令碼

指令碼如下

littleendian();

int i;

char filename[512];

filename = getfilename();

int filenum = getfilenum();

tfindresults r = findall("dex\n035");//搜尋所有dex

int pos,sz;

char dexname[512];

char ext[128];

for(i = 0 ; i < r.count; ++i)

fileclose();

fileselect(filenum);//這個幹嘛?

printf("wrie %s ok\n",filename);

selselection(0,1);

copytoclipboard();

setselection(0,0);

}printf("done.\n");

安卓快取檔案

首先我們要弄清楚幾個概念 getcachedir data data getfilesdir data data 一般來說,上面這兩個目錄是使用者不可見的,屬於應用內部,比如webview等一些快取就存放於getcachedir 我是分割線 getexternalfilesdir sdcard an...

安卓檔案讀寫

獲取各種路徑 內部儲存 外部儲存 例子 內部儲存 1.獲取快取路徑 主要時context物件。handler是做其他留下來的很本例程無關 public tcpview handler handler,context context 2.儲存 private file getfilefrombytes...

安卓系統檔案結構

這是公尺1的根目錄 adb連線的時候會有是否永久允許除錯,這個就是允許列表,根ssh rsa免登是一樣的。cache 系統快取,還有一些日誌檔案,看起來是比較底層的log,recovery和小公尺自用的adb。data anr dalvik cache data 系統做cache的資料庫 cache...