首先我們需要了解了安卓的目錄結構,我們使用的軟體是yaffs2img浏覽器。
#Android目錄結構
* data
* app:使用者安裝的應用
* data:應用的專屬檔案夾
* system:系統的配置資訊,系統資料庫檔案
* anr:anr異常的記錄資訊
* dev:devices的縮寫
* 存放裝置所對應的檔案
* mnt:mount的縮寫
* 挂載在系統上的裝置:sdcard,u盤
* proc:硬體配置,狀态資訊
* cpuinfo、meminfo
* sbin:system bin
* 系統重要的二進制執行檔案
* adbd:伺服器的adb程序
* system:
* app:存放系統應用,預設不能删除
* bin:Android中可執行的linux指令檔案
* etc:host:主機名和ip位址的映射
* fonts:Android中自帶的字型
* framework:存放谷歌提供的java api
* lib:核心功能的類庫,C/C++檔案
* media/audio:存放Android的音效檔案
* tts:語音發聲引擎,預設不支援中文
* usr:使用者裝置的配置資訊,鍵盤編碼和按鍵編碼的映射
* xbin:是專為開發人員準備的二進制指令
#Android下的Linux指令
* su:superuser
* 切換到超級使用者
* rm:remove,删除檔案
* rm 檔案名
* ls:列出目錄下的所有檔案和檔案夾
* ls -l:檢視檔案的詳細資訊
* ls -a:檢視隐藏檔案
* cd:切換到某個目錄
* cat:檢視檔案内容
* cat 檔案名
* 不要cat二進制可執行檔案
* mv:move 修改檔案名
* mv 原檔案名 新檔案名
* mkdir:建立檔案夾
* mkdir 檔案夾名字
* rmdir:删除檔案夾
* rmdir 檔案夾名字
* touch:建立新檔案
* touch 檔案名
* chmod:change mode,切換檔案通路權限
* chmod 777 檔案名
* echo:回顯資料;重定向資料
* echo 資料 > 檔案名
* sleep:睡眠幾秒
* df:顯示指定目錄的容量
* id:列印目前使用者的id
* uid=0:root
* uid=1000:system
* uid=2000:shell
* uid=10000+:一般應用程式的id
* ps:列出系統中運作的所有程序
* kill:殺死指定pid的程序
* kill pid
* chown:change owner,修改擁有者
* chown 0.0 檔案名
* mount:挂載檔案系統
* mount -o remount rw /:挂載目前目錄為可讀可寫權限
* mount -o remount rw /system:重新挂載指定目錄
# Android中特有的指令
* am:ActivityManager,可以進行跟activity相關的操作
* am start -n com.itheima.createfile/com.itheima.createfile.MainActivity:開啟指定Activity
* am kill com.itheima.createfile:結束非前台程序
* am force-stop com.itheima.createfile:結束程序
* pm:PackageManager
* pm disable 包名:當機指定應用
* pm enable 包名:解凍指定應用
* monkey -p com.itheima.createfile 1000:自動點選指定應用1000次
---
#刷模拟器,rom寫檔案(su)
* 如果想讓真實手機運作這些指令,手機必須要有root權限
* 刷root原理:把su二進制檔案拷貝到/system/bin或者/system/xbin
* Android刷root軟體,工作的原理全部都是利用系統的漏洞實作
* rom:可以了解為android系統的安裝檔案
* 把su檔案和superuser.apk寫入img檔案
* 執行su指令
Runtime.getRuntime().exec("su");
#小案例:當機解凍應用
* 當機和解凍指定的應用
*
RootTools.sendShell("pm disable " + package, 300000);
RootTools.sendShell("pm enable " + package, 300000);
---
#小案例:零權限讀取使用者隐私資料
* 直接修改短信資料庫通路權限
RootTools.sendShell("chmod 777 data/data/com.android.providers.telephony/databases/mmssms.db", 300000);
SQLiteDatabase db = SQLiteDatabase.openDatabase("data/data/com.android.providers.telephony/databases/mmssms.db", null, SQLiteDatabase.OPEN_READONLY);
Cursor cursor = db.query("sms", new String[]{"body", "address"}, null, null, null, null, null);
while(cursor.moveToNext()){
String body = cursor.getString(0);
String address = cursor.getString(1);
System.out.println(body + ";" + address);
}
RootTools.sendShell("chmod 660 data/data/com.android.providers.telephony/databases/mmssms.db", 300000);
#靜默安裝
* 為什麼有靜默安裝的需求
1. 正規應用。電子市場,友善使用者靜默安裝
2. 流氓軟體。背景偷偷下載下傳安裝。
* 自動下載下傳應用,然後靜默安裝
//靜默安裝
RootTools.sendShell("pm install sdcard/flowstat.apk", 30000);
//打開
RootTools.sendShell("am start -n com.jijian.flowstat/com.jijian.flowstat.TrafficWidgetSetting", 30000);
//解除安裝應用
RootTools.sendShell("pm uninstall com.jijian.flowstat", 30000);
//删除下載下傳的apk包
RootTools.sendShell("rm sdcard/flowstat.apk", 30000);
#修改字型
* 把ttf檔案刷進img中
* Android系統預設的中文字型為DroidSansFallBack.ttf
* 用你想使用的字型ttf檔案替換掉這個檔案即可
#修改開機動畫
* 從真機中得到bootanimation.zip
* 把bootanimation.zip放入system/media目錄下
#删除鎖屏密碼
* 删除data/system下的key檔案
* 文本密碼為password.key
* 手勢密碼為gesture.key