在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...