今天要來分享的也是一個我在工作上遇到的問題

由於我最近的案子是做一個跟金融相關的APP,而在金融相關的APP上往往資安上的處理都必須要做得比較嚴格億點點

 

所以有天客戶(應該吧)那邊就突然要我們做所謂的「脱獄化検知」的這個操作

注:因為我在日本上班所以脱獄化検知這個詞是日文

截圖 2023-04-23 下午2.36.49

 

什麼脱獄化?我還以為是什麼政府的新政策勒

後來我查一了一下

喔,原來是刷Root啊!(台灣講刷機)

講個那麼有鋼鐵墳墓之感的用詞我還真的一時沒有意會到(笑)

 

好啦,那回歸正題。先來看一下效果

hasRoot

 

其實也就是一個判斷而已,跟Android好像關係不大(笑)

不過我姑且有上傳Git,在裏面的Readme也有寫一些步驟,大家可以去看一下

->Github

 


 

1. 上~~~程~~~式

 

MainActivity.java

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ((TextView)(findViewById(R.id.text_hello))).setText("裝置是否刷機?: "+isRoot());
    }

    private boolean isRoot(){
        try{
            Process process = Runtime.getRuntime().exec("su");
            process.destroy();
            return true;
        }catch (IOException e){
            return false;
        }
    }
}

 

好,結束

欸欸

恩,對。就這樣

其原理也就是對著Android的系統發一個名為「su」的指令,然後去檢證他有沒有反應

有的話就是有刷機,沒有反應就是沒刷機,就真的只是這樣而已(笑

 

那麼今天的文章就到這邊,喜歡的話....

 

 

 

 

 

欸不是,我會寫出這種文字那麼少的文章嗎??

(好像也不是不行(?))

 

好啦,認真講就是如果你的需求只有到上面而已,那我想已經夠了

不過如果你跟我一樣,需要驗證給上頭讓他們可以有個交代的話,那倒是建議你繼續往下看看

 

就著實務來說吧,一般人也很難馬上生出一支刷好機的手機去驗證

所以相對來說嘗試著去刷Android Studio的模擬器(以下簡稱AVD)可能更實際一些

 

於是後來我找到了這個專刷AVD的工具

 

rootAVD

從名字來看,這就是一個妥妥的刷模擬器的工具唄

而且開發者不但幫你寫好,他還很貼心的教你怎麼用這套工具

而我ㄋ..就當我搬運工吧,直接把他的教學消化完寫成中文給你看XD

 

好啦,廢話不多說,開始吧

 


 

2. 開始刷AVD之前

 

首先雖然他的庫Mac、Windows跟Linux都可以使用

不過因為我本人手邊沒有Windows電腦(一般不是反過來嗎XD),因此本文沒辦法用Windows操作給你看

這個函式庫的作者有提供Windows的安裝影片教學,可能只能麻煩你們去看原文了....

那,我就直接開始安裝了

 

首先在安裝之前,要先去Android Studio去開啟模擬器

開模擬器的方法隨便找隨便有,我就放一個別人的影片供參考吧

 

OK,開好模擬器之後,揪下來進入到adb操作

以下步驟我在readme都有寫,要看精簡版也可以去看readme

->README

 

首先第一步,我們要先找到能夠執行adb的資料夾

而adb的位置通常會被安裝在

~/Library/Android/sdk/platform-tools/

的路徑底下,因此我們先打開終端機(terminal),並輸入

cd ~/Library/Android/sdk/platform-tools/

 

再來我們可以檢證一下adb是否可用,也順便檢查模擬器是否有開

輸入

./adb shell

這時候如果模擬器有開的話,應該會進入到模擬器的內部

這時候打上id的話,他就會告訴你一些訊息

截圖 2023-04-23 下午1.24.12

 

確認好後,打上exit退出

 


 

3. 開始刷AVD

 

接下來就要實際刷機了,首先我先回到sdk的主要資料夾

cd ..

 

再來下載rootAVD

git clone https://github.com/newbit1/rootAVD.git

截圖 2023-04-23 下午1.29.45

 

(跑跑跑🎵向前跑🎵經過小巷和大道🎵)←靠北這多久的歌了...

 

接下來是安裝,在安裝之前必須先給一個環境變數

export PATH=~/Library/Android/sdk/platform-tools:$PATH

 

再來進入rootAVD資料夾

cd rootAVD

後,開始安裝

./rootAVD.sh ~/Library/Android/sdk/system-images/android-31/google_apis_playstore/x86_64/ramdisk.img

 

截圖 2023-04-23 下午2.11.10

 

基本上沒意外的話就是一直跑...跑很大一串後安裝完成

在這裡,模擬器會被自動重開,而重開完成後就會在面上看到Magisk軟體,基本上跟我們沒什麼關係(笑)

Screenshot_20230423_134459

 

最後再開一次我們的驗證程式,就可以看到已經完成刷機囉

hasRoot

 


 

其實刷機喔..我覺得近幾年除了喜歡玩手機的玩家以外,一般人也不太刷機了

因為最早要刷機的理由不外乎都是優化系統或者某些APP需要刷機才能用等等

但近幾年Android越做越好,我感覺慢慢地似乎也越來越沒有刷機的必要了

不過世界那麼大,也真的無法保證現在還有經常拿著刷好的手機在路上跑的人就是了(苦笑

 

好啦,那今天的文章就到這,希望對你有幫助囉

TK

arrow
arrow

    碼農日常 發表在 痞客邦 留言(2) 人氣()