在論壇里常常碰到求助的,說訪問限制的密碼忘記了,或者是鎖屏密碼忘記了,導致有些程序(如短信,通訊錄等重要程序)打不開,影響正常使用。又嫌麻煩,不願意刷機。是不是就沒有辦法解決了呢?答案也是否定的。別忘了,ADB還有個shell命令呢。(本教程針對Miui系統,以DEFY為例,機子要求已經root,其他機型方法類似,但個別地方有細微變動,恕不細說)
首先介紹下什么是shell。
Linux系統的shell作為操作系統的外殼,為用戶提供使用操作系統的接口。它是命令語言、命令解釋程序及程序設計語言的統稱。
shell是用戶和Linux內核之間的接口程序,如果把Linux內核想象成一個球體的中心,shell就是圍繞內核的外層。當從shell或其他程序向Linux傳遞命令時,內核會做出相應的反應。
shell是一個命令語言解釋器,它擁有自己內建的shell命令集,shell也能被系統中其他應用程序所調用。用戶在提示符下輸入的命令都由shell先解釋然后傳給Linux核心。
有一些命令,比如改變工作目錄命令cd,是包含在shell內部的。還有一些命令,例如拷貝命令cp和移動命令rm,是存在於文件系統中某個目錄下的單獨的程序。對用戶而言,不必關心一個命令是建立在shell內部還是一個單獨的程序。
而本節課要說的內容,恰好跟adb shell命令有關。
首先我們要知道的是,MIUI的訪問限制的密碼是圖形密碼,它儲存在根目錄的/data/system路徑下,名字為access_control.key如下圖
<ignore_js_op>
<ignore_js_op>


當你忘記密碼的時候,首先想到的是進入RE管理器刪除該文件,但是假如RE管理也被訪問限制了呢?此時ADB命令就又大顯神威了。
將手機鏈接至電腦,熟悉的進入ADB命令行界面,只需輸入
- adb shell rm /data/system/access_control.key
<ignore_js_op>

密碼什么的頓時被搞定,重新去試試被限制的程序,可以打開了吧?再去看看訪問限制的菜單,發現已經自動停用了~!
<ignore_js_op>

同理,鎖屏密碼也是位於該目錄下
<ignore_js_op>
<ignore_js_op>
<ignore_js_op>



假如是在屏幕未鎖定的情況下忘記了鎖屏的密碼,趕緊在屏幕鎖住之前到RE管理器的/data/system/下找到gesture.key(圖形密碼)或者password.key(數字及密碼),刪除之。假如是一不小心在鎖屏的狀態下忘記了密碼,可以將手機連接至電腦,進入ADB執行
- adb shell rm /data/system/gesture.key
<ignore_js_op>

可以刪除鎖屏圖形密碼;
執行
- adb shell rm /data/system/password.key
<ignore_js_op>

可以刪除鎖屏數字密碼兩種加密方式
開屏,是不是不需要輸入密碼了呢?再看設置菜單里,密碼已經被重置為無。
<ignore_js_op>

我覺得這是ADB命令里最有用的一個地方了。
當然,以上都是建立在USB調試模式開啟的狀況下。如果你悲劇的沒有開啟,如下圖所示
<ignore_js_op>

那么可以通過其他途徑刪除密碼。
重啟手機,亮藍燈的時候按音量下進入【bootmenu】菜單,選擇【Tools】

<ignore_js_op>

可以發現手機已經鏈接,此時就可以通過adb shell命令來刪除密碼了
按照課程一給出的方法,進入ADB環境,
依次輸入
- adb shell
- mount /data/
- rm /data/system/access_control.key
- reboot
結果如圖
<ignore_js_op>

當然,以上是進入shell里完成的,也可以逐條執行,效果是一樣的
- adb shell mount /data/
- adb shell rm /data/system/access_control.key
- adb reboot
同理鎖屏密碼(圖形、數字字母密碼)也可以通過此方法刪除,只不過是將access_control.key換成gesture.key或者password.key罷了。小米機型需要注意的是,在使用shell命令前,請先輸入adb root ,取得root權限
當然刪除密碼的途徑不只此一種,如果你手機端安裝的有終端模擬器,那就更方便了,無論你是否開啟了調試模式,只要賦予終端模擬器root權限,然后輸入
- su
- rm /data/system/access_control.key