【原】Android 裝置,如何root,執行adb shell,查看裝置中的資料庫資訊等

來源:互聯網
上載者:User

標籤:

 

(一)第一步:root

使用百度一鍵root 等app,一鍵就可root,步驟略

 

(二) 

1、執行

adb shellsu 獲得root許可權ls 查看目前的目錄

 

cd data/datals

 

選com.tencent.cm為例

cd com.tencent.cm/databasels

 

 

看到裡邊有一些 .db資料庫檔案

這時候,執行

sqlite3 tes_db.db

 

如果你的裝置中有sqlite3,這句應該會執行成功,接下來就可以 執行select 語句了,

----------------------------------------------------------------下邊就不用看了--------------------------------------------------------------

 

 

 

本文主要說明 一些小米和其他手機中沒有sqlite3的情況,和我一樣,執行會發現  

sqlite3:not found

 

附  Android的每個版本對應的sqlite3 版本:

SQLite 3.8.4.3:21-5.0-Lollipop20-Android L Developer Preview
SQLite 3.7.11:19-4.4-KitKat18-4.3-Jelly Bean17-4.2-Jelly Bean16-4.1-Jelly Bean
SQLite 3.7.4:15-4.0.3-Ice Cream Sandwich14-4.0-Ice Cream Sandwich13-3.2-Honeycomb12-3.1-Honeycomb11-3.0-Honeycomb
SQLite 3.6.22:10-2.3.3-Gingerbread9-2.3.1-Gingerbread8-2.2-Froyo
SQLite 3.5.9:7-2.1-Eclair4-1.6-Donut3-1.5-Cupcake
Note: Android SDK level links show where the android.database.sqlite package has changed. Where there is no link (e.g. SDK level 17), indicates no changes to that package.
Note: Here are some anomalies (list by no means exhaustive):SQLite 3.7.13 (instead of 3.7.11):LG Optimus L70 MS323 LGMS323|KOT49I.MS32310b (19-4.4-KitKat)LG Optimus G E975 LG-E975|JZO54K (16-4.1-Jelly Bean)LG G2 D802 LG-D802|JDQ39B (17-4.2-Jelly Bean)
SQLite 3.7.6.3 (instead of 3.6.22):LG Optimus Sol E730/myTouch E739/myTouch Q C800 (10-2.3.3-Gingerbread, GRJ22)LG Optimus Vu F100S/F100L (10-2.3.3-Gingerbread, RK39F)LG Optimus LTE TAG F120K/F120L (10-2.3.3-Gingerbread, GRK39F)LG Optimus LTE L-01D (10-2.3.3-Gingerbread, GRJ90)LG Optimus Net P690b (10-2.3.3-Gingerbread, GINGERBREAD)LG Prada KU5400 (10-2.3.3-Gingerbread, GWK74)LG Prada P940 (10-2.3.3-Gingerbread, GWK74)LG LU6200/SU640 (10-2.3.3-Gingerbread, GRJ90)s
SQLite 3.7.5 (instead of 3.7.4):Samsung Galaxy Note (15-GT-N7000|IML74K.ZSLPF)Samsung Galaxy SII (15-SC-02C|IML74K.OMMP4 and GT-I9100|IML74K.DXLP7)Samsung Galaxy S Duos (15-GT-S7562|IMM76I.S7562XXBMD6)Samsung Galaxy Tab 7.7 (15-GT-P6810|IMM76D.ZSLP8)
SQLite 3.7.0.1 (instead of 3.6.22):LG Esteem MS910 (10-2.3.3-Gingerbread, GSE-_v.05)AndroTab (8-2.2-Froyo, 1.0.7100.0385)GPLUS MUSN M500 (8-2.2-Froyo, FRG83G)
SQLite 3.6.23.1 (instead of 3.5.9):Motorola Backflip MB300 (7-2.1-Eclair, ERD79)Garmin-Asus nüvifone A10/A50/Garminfone (7-2.1-Eclair, ERE27)Note: adb command to get SQLite version only works on emulators and on devices with sqlite3 available: http://stackoverflow.com/a/3645800/444761

 

比較簡單的擷取對應版本的Sqlite的方法:

1、查看你手機的Andorid的版本,比如我的是 4.32、在eclipse中開啟對應版本(很重要,否則會提示cannot locate ‘sqlite3_enable_load_extensions‘)的模擬器(建立 如果沒有)並且啟動3、在DDMS視窗的File Explorer面板下展開system > xbin看到了sqlite3 了嗎?ok。點擊右上方的磁碟片表徵圖(pull a file from the device) 將其儲存到其他位置4、然後串連你的手機,開啟控制台,輸入adb shell。(什嗎?提示adb命令無效?那去配置環境變數吧)5、然後查看一下提示符 如果是 # 那就不用管了,如果是 $ ,那麼說明你需要獲得root許可權進行下面的操作6、保持手機螢幕沒有鎖屏最好是常亮模式 在提示符下敲入 su 或者 su root,如果手機彈框提示是否允許獲得root許可權請選擇 是。點擊後發現 $ 變成 # 了。OK 可以進行下面的操作了7、將先前儲存其他位置的sqlite3 在DDMS面板中通過右上方手機表徵圖(push a file onto the device) 將檔案push到sdcard中,準確的是在/mnt/sdcard8、然後在命令列敲入 cat /mnt/sdcard/sqlite3 > /system/xbin/sqlite3 複製檔案(為什麼不用mv?我也試過,不過報failed on ‘/sdcard/test.mp3‘ - Cross-device link 錯誤)9、ok,檢查手機/system/xbin下多了一個sqlite3檔案,不過還不能執行。10、繼續敲入 chmod 4755 /system/xbin/sqlite3好的 大功告成。你可以試試敲入sqlite3試試了。可以看到可以正常使用了。

 

 

-------------------------------------------------------------如果你成功了,不用看下邊-------------------------------------------------------------------------

首先,機器上沒有對應android 4.3的avd,所以參考http://www.cnblogs.com/localhost/archive/2012/04/09/2439558.html的方法

下載了sqlite3檔案包,地址為http://files.cnblogs.com/localhost/sqlite3_not_found.rar(事實證明他這個包的版本,我不能用,他這個版本太老了)

下這個:http://pan.baidu.com/share/link?shareid=534077&uk=839950715 

 

報了異常,因為直接push進 /system/xbin目錄中了,沒許可權

 

建一個臨時檔案夾

 

push進這個臨時檔案夾中

 

再將sqlite3從

  /mnt/sdcard/tmp

拷貝到

  /system/xbin 目錄中,不會報錯

cp /mnt/sdcard/tmp/sqlite3 /system/xbin/sqlite3 

注意:這一步可能報兩種錯,

第一種: cp not found,將命令換成cat /mnt/sdcard/tmp/sqlite3 > /system/xbin/sqlite3,

第二種:permission denied,說明/system是唯讀,此時需要重新mount,改為可讀寫,然後繼續拷貝

 

為什麼除了sqlite3,還要push進去libncurse.so,因為缺乏依賴庫,報了以下異常

  

我的出現了第二種許可權錯誤 ,執行mount操作

mount -o remount,rw /system

 

mount命令的解釋在 http://blog.csdn.net/progbelief/article/details/6032518  

重點解釋這條語句的作用mount -o remount,rw -t yaffs2 /dev/block/mtdblock6 /system  簡單來說就是將塊裝置“/dev/block/mtdblock6” 掛載到/system目錄上,掛載格式為yaffs2,這裡主要的問題是“/dev/block/mtdblock6”是個什麼東東。  mtdblock就是手機 的flash存放裝置,但是這個分塊號則依機型的不同而有所變化,比如:Droid 的/system是掛載在/dev/block/mtdblock4上的,歐版的milestone 在/dev/block/mtdblock7上,港版的在/dev/block/mtdblock6上,HTC 系列的機器 則好像是在/dev/block/mtdblock3上。而現在有的教程 上寫的命令不盡相同,也有這樣寫的       mount -o remount,rw /dev/block/mtdblock3 /system這多半上從HTC的論壇 上抄來的吧。  但是有些人可能會說,我就是用這條命令成功了!(好吧,其實我也是的……汗,真是好險 ),甚至用任何分塊號mtdblock3、mtdblock4、mtdblock11等等都能正常運行!那麼這種錯誤命令為什麼能成功呢?其實我們的命令參數“-o remount”其實自動 忽略了/dev/block/mtdblock? 這一段參數,只是簡單的把/system重新掛載了一下而已。這條命令的偷懶不知道救回了多少人的愛機啊!  好吧,說到這裡大家應該明白了吧,雖然這條命令即使錯誤也可以成功,但你畢竟試圖將一個錯誤的塊掛載到/system上,悄有不慎肯定變磚。  所以強烈建議大家在執行此命令時使用     cat /proc/mtd來檢查下自己的JJ具體參數,再套用命令,或者強烈建議新手使用      mount -o remount,rw /system這樣的簡化命令來代替上述命令使用!

 

 

 有了上邊的解釋, 擷取你的裝置mount資訊,執行

mount

 

從螢幕列出來的mount資料中找到/system的mount資訊,空格隔開的,第一列表示裝置名稱,第二列表示目錄,第三列表示檔案系統,第四列表示許可權。網上其他教程在這一步都直接列出了他們的命令,由於裝置名稱和檔案系統不一樣,所以執行不成功

mount命令為:mount  -o  remount,rw  -t  第三列資訊  第一列資訊  /system

 如,注意看圈紅的地方:


mount成功後,再執行上面說的檔案copy的步驟,然後就能copy到 /system/xbin目錄下了

需要改下檔案的許可權,命令:

chmod 4755 /system/xbin/sqlite3

最後運行下,sqlite3,發現成功了吧

 

---------------------------------------------------------------你又成功了,我又沒有----------------------------------------------------------

執行了mount,結果如下(沒有system啊,但是上邊的 mount -o remount,rw /system 執行成功了,所以也無所謂了 ):

 

 

這時候執行sqlite3命令,出現了Illegal instruction錯誤

 

這大概說明,我的sqlite3版本不對,下了個比較新的: http://pan.baidu.com/share/link?shareid=534077&uk=839950715

拷進去,改許可權,執行

成功

 

在sqlite的...> 狀態退不出來的時候,一般是進入SQL資料語言模式了,此時輸入個;(分號) 就可以退回到sqlite>狀態

 

.quit 退出 sqlite.help 查看協助
.schema 抓出資料庫中所有的表
.tables 抓出資料庫中所有的表和索引(都可以使用LIKE來匹配)

 

 

附:

sqlite的官網

http://www.sqlite.org/lang.html

 

【原】Android 裝置,如何root,執行adb shell,查看裝置中的資料庫資訊等

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.