모바일 프로그래밍/안드로이드 프로그래밍

android 루팅여부 체크하기.

zelkova 2020. 3. 31. 16:12

<목차로 돌아가기>

공사중....

메모장 대신 끄적끄적...

 

package arabiannight.tistory.com;
 
import java.io.File;
 
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
 
public class TestRootingCheckActivity extends Activity {
 
    public static final String ROOT_PATH = Environment.
            getExternalStorageDirectory() + "";
    public static final String ROOTING_PATH_1 = "/system/bin/su";
    public static final String ROOTING_PATH_2 = "/system/xbin/su";
    public static final String ROOTING_PATH_3 = "/system/app/SuperUser.apk";
    public static final String ROOTING_PATH_4 = "/data/data/com.noshufou.android.su";
     
    public String[] RootFilesPath = new String[]{
            ROOT_PATH + ROOTING_PATH_1 ,
            ROOT_PATH + ROOTING_PATH_2 ,
            ROOT_PATH + ROOTING_PATH_3 ,
            ROOT_PATH + ROOTING_PATH_4
    };
     
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
         
        boolean isRootingFlag = false;
 
        try {
            Runtime.getRuntime().exec("su");
            isRootingFlag = true;
        catch ( Exception e) {
            // Exception 나면 루팅 false;
            isRootingFlag = false;
        }
         
        if(!isRootingFlag){
            isRootingFlag = checkRootingFiles(createFiles(RootFilesPath));
        }
         
        Log.d("test""isRootingFlag = " + isRootingFlag);
    }
 
    /**
     * 루팅파일 의심 Path를 가진 파일들을 생성 한다.
     */
    private File[] createFiles(String[] sfiles){
        File[] rootingFiles = new File[sfiles.length];
        for(int i=0 ; i < sfiles.length; i++){
            rootingFiles[i] = new File(sfiles[i]);
        }
        return rootingFiles;
    }
     
    /**
     * 루팅파일 여부를 확인 한다.
     */
    private boolean checkRootingFiles(File... file){
        boolean result = false;
        for(File f : file){
            if(f != null && f.exists() && f.isFile()){
                result = true;
                break;
            }else{
                result = false;
            }
        }
        return result;
    }
}



출처: https://arabiannight.tistory.com/entry/안드로이드Android-루팅-여부-확인-하기 [아라비안나이트]

 

 

 TestRootingCheck.zip

 

 

 

안드로이드 루팅

 

1. 라이브러리 추가

implementation 'com.lahm.library:easy-protector-release:1.1.2'

 

2. 루팅 체크

        if (EasyProtectorLib.checkIsRoot()) {

            Toast.makeText(getApplicationContext(),"탈옥기기는 해당 서비스를 이용하실 수 없습니다.",Toast.LENGTH_SHORT);

            finish();

        } else {

            // 정상

        }

 

 

<목차로 돌아가기>

반응형