Android下的linux指令集
阿新 • • 發佈:2018-12-31
Android目錄結構
data
- app:使用者安裝的應用
- data:應用的專屬資料夾
- system:系統的配置資訊,登錄檔檔案
- anr:anr異常的記錄資訊(預設是沒有的只有當程式發生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:unix system resrouces 系統應用程式和相關檔案 (鍵盤編碼和按鍵編碼的對映存放在這裡)
- xbin:是專為開發人員準備的二進位制指令
Android下的Linux指令
- id:列印當前使用者的id
- uid=0:root
- uid=1000:system
- uid=2000:shell
- uid=10000+:一般應用程式的id
- chown 0.0 檔名 修改該檔案的所有者為root
- mount:掛載檔案系統
- mount -o remount rw /:掛載當前目錄為可讀可寫許可權
- mount -o remount rw /system:重新掛載指定目錄
Android中特有的指令
am:ActivityManager,可以進行跟activity相關的操作
- am start -n 應用包名/應用包名.MainActivity:開啟指定Activity
- am kill 應用包名:結束非前臺程序 (嘗試結束在不影響使用者使用的程序)
- am force-stop 應用包名:結束程序 (強制結束)
pm:PackageManager
- pm disable 包名:凍結指定應用
- pm enable 包名:解凍指定應用
monkey -p 應用包名 1000:自動點選指定應用1000次
刷機,rom寫檔案(su)
- 如果想讓真實手機執行這些指令,手機必須要有root許可權
- 刷root原理:把su二進位制檔案拷貝到/system/bin或者/system/xbin(這裡會出現一個死迴圈,複製su進入/system/bin需要root許可權,而我們就是要獲取root許可權而這樣搞。這時我們可以自己修改rom,把su命令弄進去,此時注意這個su命令的許可權必須是4755。755不用多說就是rwx的三個組合,而前面的4表示SUID許可權。s屬性出現在檔案所有者的x許可權上 如linux系統上:/usr/bin/passwd 是屬性s。作用是:僅在執行該程式的過程中有效.執行者將會具有該程式的所有者(owner)的許可權)
- Android刷root軟體,工作的原理全部都是利用系統的漏洞實現
- rom:可以理解為android系統的安裝檔案
- 刷機的具體過程是把su檔案和superuser.apk寫入ROM的img檔案 (superuser.apk是當某個應用需要root許可權是我們可以通過這個apk來選擇是否允許它擁有root許可權,su檔案寫入到/system/bin或者/system/xbin中,而superuser.apk寫入到系統app的檔案下。兩個檔案的許可權全部寫為4755)
在程式碼中執行指令:已執行su指令為例:
Runtime.getRuntime().exec("su");
小案例:凍結解凍應用(這裡執行指令通過第三方jar包完成RootTools.jar)
- 凍結和解凍指定的應用
-
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);
靜默安裝
- 為什麼有靜默安裝的需求
- 正規應用。電子市場,方便使用者靜默安裝
- 流氓軟體。後臺偷偷下載安裝。
自動下載應用,然後靜默安裝
//靜默安裝 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檔案刷進ROM包img中
- Android系統預設的中文字型為DroidSansFallBack.ttf
- 用你想使用的字型ttf檔案替換掉這個檔案即可
修改開機動畫
- 從真機中得到bootanimation.zip
- 把bootanimation.zip放入system/media目錄下
刪除鎖屏密碼
- 刪除data/system下的key檔案
- 文字密碼為password.key
- 手勢密碼為gesture.key