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
重啓的命令
- 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文件