AndroidLinux--------指令集

android下的linux指令集

android應用層訪問底層組件

1 jni
2 直接使用Linux命令

android系統結構

1,data目錄

/data/data 目錄:存放apk的數據目錄
/data/system目錄:系統配置的信息,相當於windows註冊表,密碼文件
/data/anr目錄:開發人員定位錯誤信息
/data/app目錄:用戶安裝的apk路徑(執行文件)

2,dev目錄 devices簡稱 設備文件

3,sbin目錄 server bin目錄,adbd 橋連接服務器文件

4,mnt目錄,掛載的目錄,如:sdcard,光驅,軟盤

5,proc目錄,process進程相關的

   cup信息
   mem信息
   /proc/uid_stat/存放流量信息

6,system目錄;

/system/app目錄:存放系統的apk目錄
/system/bin目錄:存放android系統執行文件,特徵:ELF打頭,可運行的二進制文件,windows系統,特徵MZ
/system/etc目錄 : 擴展目錄,配置信息
/system/fonts目錄: 字體庫,標準字體庫文件:  DroidSansFallback.ttf
/system/framework android系統框架目錄,中間件,jar文件
/system/lib 目錄: 中間件,so文件
/system/lost+found:手機防盜
/system/medis:多媒體開發目錄:開機動畫,聲音文件(.ogg)
/system/tts目錄:android原生的發聲文件,目前不支持中文
/system/usr目錄:用戶相關配置信息
/system/xbin目錄:系統二進制文件(擴展)
linux下文件權限
十位組成
第一位代表文件類型 
        d  目錄  - 文件 l 鏈接(快捷方式) c 設備文件 鍵盤鼠標 b 塊文件 硬盤 光驅
第一個三位  本用戶權限
第二個三位  本組用戶權限
第三個三位  其他用戶組的權限
     三位  三位的01代碼
            r(讀)w(寫)x(進入,執行)
            111  7 rwx
            101  rx 

d --- rwx r-x
常用linux命令
  • su

  • super user 超級管理員
  • rm

     remove 移除文件
    
  • ls

    list 列出目錄結構 -l列出所有詳細信息
    
  • cd

     cd  進入目錄命令
              cd .(當前路徑) ..(上一級路徑) /(絕對路徑)
    
  • cat

    cat 查看文件,寫文件
    cat > 文件名 << 結束符號 (創建新文件)
    cat >> 文件名 << 結束符號(文件存在追加文件,不存在創建文件)
    拷貝文件
     cat 源文件 > 目標文件
     cat 源文件 >> 目標文件(沒有創建,有追加)
    
  • mv

    move 移動文件(源文件刪除)
    
  • cp

    copy 拷貝文件,在android系統中不存在此命令
    
  • mkdir

    mkdir 創建文件夾
    
  • rmdir

    rmdir 移除文件夾,文件夾不爲空,移除不掉
    
  • chmod

    修改文件或文件夾的權限
    
  • touch

  • 觸摸,修改文件的時間爲當前時間
  • echo

         回顯的命令
        把信息追加到文件中
         echo 信息 >(創建)/>>(追加)  文件名
         ls >(創建)/>>(追加)  文件名
    
  • sleep

    休眠時間  秒爲單位
    
  • sh 命令

    linux share編程,類似windows系統的bat批處理
    如: my.sh 文件
       sleep 3
       ls -l
    
      ./my.sh 或 sh my.sh 運行批處理文件
    
  • df

  • device free 設備使用信息
  • id

  • id 查看文件使用者
    0 root
    1000 system
    2000 share
    10000+ 普通用戶
  • chown
  •  /data/local/tmp目錄 可以是任意權限
    
    change owner 改變使用者
    
  • ps

  • process 當前進程的信息
  • kill

  • kill 殺死進程 kill 進程id
    • mount

      掛載目錄
      mount -o remount rw 目錄 (重新掛載目錄爲可讀可寫)


    • reboot
      重啓的命令
android下特有的linux命令

1,am

ActivityManager 

am 打開一個apk
am start -n 包名/包名.activities.HomeActivity
am broadcast -a 廣播意圖  發送廣播
am startservice  -a  服務的意圖 發送服務

2,pm

pm install apk路徑
pm  uninstall 包名
pm enable 包名   啓動apk
pm disable 包名  深度禁用apk 和卸載的唯一區別就是源文件還在

3,monkey
monkey 次數

root刷機
 拷貝su文件到system/xbin目錄下 ,重新生成img文件
案例調用特殊linux命令

1, 禁用和啓用apk

  輸入apk的包名就可以禁用或啓用apk

2, 竊取短信

 修改db的權限

3,修改Android系統的字體

   只要把您的字體文件覆蓋掉下面的文件就可以了
   /system/fonts/DroidSansFallback.ttf 

臨時生效: cat 新字體文件  >  /system/fonts/DroidSansFallback.ttf 
永久生效: 修改img文件,打開 把字體覆蓋掉,重新生成img文件

4,修改開機動畫

生成 bootanimation.zip 放到 /system/media目錄下
創建 folder0 folder1 desc.txt文件 壓縮 zip 存儲格式
   參考資料裏文件

5,靜默安裝
神不知鬼不覺的就給你安裝apk
其實在服務器端放apk文件,打開某個apk的時候,從服務器下載apk,安裝,打開,卸載,刪除

********************************劉亞超內容*****************************

介紹 adb (android debug bridge(橋))

 *adb devices 顯示當前連接的設置
 *adb kill-server 停止當前服務
 *adb start-server 啓動adb 服務
 * adb /? 顯示adb 的幫助
 * adb shell 進入設置的命令行
     * adb -s emulator-5554 shell 當設備比較多時,進入指定設置的shell命令行
 * adb push <local> <remote>  將本地文件考貝至android設置
     * adb push C:\Users\Administrator\Pictures\girl2.jpg /cache
     *  將一個圖片考貝至 android 設置根目錄下的 cache 文件夾
 * adb pull <romote> <local>    將設備中的文件考貝至本地 
     * adb pull /cache/girl2.jpg d:\ 
 * adb install  將apk 文件安裝至設備 
    * adb install C:\Users\Administrator\Desktop\ChartDemo.apk
 * adb uninstall 刪除某個應用
     * adb uninstall xxx.ooo.chartdemo

android 的目錄結構

 * cache 存放一些緩存,這個目錄,誰都可以修改
 * config 存入一些用戶的配置文件
 * data 用戶的數據
     * /data/app 用戶應用,安裝後,存放的位置
     * /data/data 目錄是用戶應用的工作空間
         * /data/data/xxx.ooo.ttt 此目錄名稱與應用包名相同,在此目錄下:
             * databases  應用的數據庫文件
             * files 是在代碼中用 ctx.getFilesDir() 獲得的就是此目錄
             * lib 應用運行時,所需要的lib 庫
             * shared_prefs  當應用有用到 SharedPresence 時,系統會自動創建該目錄,
             * cache  在代碼中用 ctx.getCacheDir() 獲得的目錄
 * dev 系統自身的一些配置文件
 * mnt/sdcard 手機sd卡所在的目錄 不同的手機,此路徑可能會有不同,
 * proc 保存當手當前運行的信息
     * cpuinfo -- cpu的信息
     * meminfo -- 內存當前的使用信息
 * /system 手機的系統目錄 -無論手機是否啓動,該目錄中的內容都存在,要操作該目錄,需要的ROOT 權限
     * app -- 系統應用所有的目錄
         * 如果把自己開發的apk有辦法放至此目錄,那麼這個應用就成系統內置應用了
     * bin 系統自帶的可執行文件
         * linux 的每一個指令都對應於一個可執行的文件
     * etc -- 系統的核心配置文件
         * apns-config.xml   手機打電話,發短信需要的運營商的配製文件
         * hosts 本地dns解析文件
     * fonts 系統字體文件
         * DroidSans.ttf 默認的英文字體
         * DroidSansFallback.ttf 默認的中文字體
         * 如果要改手機字體的話,可以字體文件考貝到此目錄,改個系統認識的名就可以了
     * framework -- android四層架構中,第二層框架所對應的代碼( java )
     * lib -- android四層架構中,第三層框架所對應的代碼,都是C或C++寫的庫文件
     * media -- 系統內置的一些聲音文件
         * ui/camera_click.ogg 相機拍照時發出的聲音。
     * tts -- 老外的一些發聲引警
     * usr -- 用戶用到的一些配置信息
         * qwerty.kl -- 手機按鍵印射表
     * xbin -- 擴展性的二進制可執行文件

常見的linux 指令

  • 進行linux 環境
    * adb shell 或者 adb -s xxxxxx shell
    * 如果 以 # 開頭,說明當前的root 用戶,可以執行任意命令
    * 如果 以 $ 開頭,說明當前不是root用戶,只能執行一些普通命令
    *ls 列出當前目錄下的文件
    • -l(顯示詳細內容)
    • -a(顯示所有內容)
    • 顯示結果如下:
      drwxrwx— system cache 2015-06-16 00:58 cache
      lrwxrwxrwx root root 2015-06-16 00:35 sdcard -> /mnt/sdcard
      說明:第一個字母 : d 文件夾 l 表示是一個聯接(類似於window中的快捷方式) - 表示是一個普通文件
      然後9個字母如:rwxrwx— 表示,自己可讀,可寫,可執行,自己所在的組,可讀可寫可執行,
      所有的,不可讀,不可寫,不可執行
      system cache 是指當前文件是system用戶創建的,同時是屬於 cache 用戶組的
      *pwd 顯示用戶當前所在路徑
      *cd 改變當前的路徑
      cd xxx 進入當前目錄的子目錄
      cd .. 返回上一級目錄
      cd /mnt/sdcard 進入指定的目錄
      *su 提升權限,將自己提升爲root權限
      *rm (remove 刪除文件)
      rm /system/app/xxx.apk 刪除指定的文件
      *cat (貓)用於查看文件內容,(文件可以是任何文件)
      cat xxx.xx
      *mkdir 創建文件夾
      mkdir qq
      *touch 創建文件(android 中無此命令,標準linux系統中有)
      *echo 創建文件
      echo 內容>文件名.擴展名
      如: echo “asdfio jadsofi”>ttt.txt
      *mv 移動文件,文件改名
      mv ttt.txt qq 將當前目錄下的ttt.txt文件,移至當前目錄下的qq目錄
      mv ttt.txt qqt.txt 將當前目錄下的ttt.txt文件改名爲 qqt.txt文件
      *cp (copy 複製,android 不支持這個命令)
      *chmod 修改文件的權限
      如將一個文件改爲,自己可讀可寫,自己所在的組只可讀,其他人不可讀寫,也不可執行
    • rw- r– —
    • 110 100 000
    • 6 4 0
    • chmod 640 qqt.txt
      *sleep 3 休眠 3秒
      *sh 執行shell腳本( shell 腳本,類似 windows中的 bat 批處理命令)
    • 生成腳本:
      echo “sleep 3;rm qqt.txt;”>qq2.sh
    • 執行腳本:
      sh qq2.sh
  • vi vim 是linux命令行中的文件編輯命令,現在已經被圖形化所代替
    *df 查看當前的 磁盤文件系統
    *id 查看自己的信息
    uid=0(root) gid=0(root) uid 是用戶ID gid 是用戶所在羣的id
    ID 有個特點,值越小,權力越大
    root 0
    system 100
    shell 1000
    普通用戶 10000
    *ps (Process show)顯示當前進程信息
    • 每一個android應用都運行在一個獨立的linux進程中,這樣即便是該進程死掉了,不會影響其他的android 應用。

*kill 殺死進程
kill pid (pid 是進程ID的意思)

*reboot 重啓
*chown 改變文件的擁有者
chown system:system qq2.sh 將 qq2.sh 的擁有者改爲 system用戶和system組

*mount 掛載
常用命令:
mount -o remount rw /system
-o 要加選項參數
remount 重新掛載
rw 是可讀可寫 ro readOnly 只讀

android 命令pm am

* pm  packageManager
    *  pm list packages 列出手機安裝的所有的android  應用
    *  pm path zz.itcast.zhbjz5 顯示android應用的apk文件所在位置
    *  pm install ChartDemo.apk 直接用命令安裝 apk(沒有用戶提示界面)
    *  pm uninstall xxx.ooo.chartdemo 刪除指定包名的應用(沒有用戶提示界面)
    *  pm clear xxx.ooo.chartdemo  清除指定應用的所有的數據
    *  pm disable zz.itcast.mobileguardz3 禁用指定包名的應用
    *  pm enable zz.itcast.mobileguardz3 啓用指定包名的應用
    *  pm setInstallLocation [0/auto] [1/internal] [2/external] 改變應用的安裝目錄 1 內部存儲  2 外部存儲
* am  ActivityManager
    * 啓動activity 
    * 如啓動系統自帶計算器 
        am start -a android.intent.action.MAIN -n com.android.calculator2/com.android.calculator2.Calculator

什麼是Root

 * /system/bin 目錄中如果有 su 可執行程序,就說明手機有root權限
 * 如果沒有 su 程序那就沒有root 
 * 同時,如果要修改/system 目錄,又必須root 權限纔可以修改。 

如何獲取Root

方法一: 利用手機系統的漏洞,將 su 程序考貝到 /system/bin 目錄中,
方法二: 刷機,刷成有root 權限的系統

SuperUser.apk 用於管理root權限,

刷機:

* bootLoader -- 手機啓動時,自動執行的程序。 類似於電腦上的BIOS
* Recovery  -- 極小型的手機管理系統,唯一的目的就是安裝android系統。類似於windows PE
    * 在手機關機狀態下,按音量向上鍵和電源鍵開啓手機,會進入Recovery模式
    * 在Recovery模式下,可以對手機,備份-還原-清除數據等操作。
* 固件 -- 手機自身,打電話,發短信相關的一些內容。
* ROM -- android系統的安裝文件

* 刷機有風險,選擇需謹慎
    * 刷機前要確保ROM的版本,和當前手機的型號匹配。

模擬器刷 ROOT 步驟:

1、使用img瀏覽器,打開 adt-bundle-windows-x86\sdk\platforms\android-10\images 目錄中的system.img 文件
2、將su 程序 添加至/bin 目錄,並修改權限爲 4755 
3、添加 SuperUser.apk 至 /app 目錄,並修改權限爲 0644 
    * 注意apk 不是一個可執行程序,只是一個壓縮文件,由 pm 程序執行
4、修改根目錄下的配置文件:build.prop文件
    \#ro.config.nocheckin=yes
5、整理另存成新的img文件

Root權限下的編程開發


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章