天天看點

必須要知道的小黑技術——零權限、破解密碼等安卓知識

首先我們需要了解了安卓的目錄結構,我們使用的軟體是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