IT용어위키



루팅

리눅스 기반 OS인 안드로이드 운영체제에서 루트(root) 권한을 획득하는 행위

Pre-boot

Fastboot

부트로더를 이용하여 su가 설치된 커스텀 시스템 이미지로 바꾸어 부팅

Custom Recovery

루트 권한을 가진 Recovery 모드를 이용하여 su 설치

Post-boot

리눅스 취약점을 이용하여 루트 권한을 취득

루팅 확인

  • su파일 존재여부 확인
 1 public String[] RootFilesPath = { ROOT_PATH + "/system/bin/su", ROOT_PATH + "/system/xbin/su", ROOT_PATH + "/system/app/SuperUser.apk", ROOT_PATH + "/data/data/com.noshufou.android.su" };
 2 private boolean checkRootingFiles(File... paramVarArgs)
 3 {
 4   int j = paramVarArgs.length;
 5   int i = 0;
 6   for (;;)
 7   {
 8     boolean bool = false;
 9     if (i < j)
10     {
11       File localFile = paramVarArgs[i];
12       if ((localFile != null) && (localFile.exists()) && (localFile.isFile())) {
13         bool = true;
14       }
15     }
16     else
17     {
18       return bool;
19     }
20     i += 1;
21   }
22 }
23 
24 protected void onCreate(Bundle paramBundle) {
25   ...
26   this.isRootingFlag = true;
27   if (!this.isRootingFlag) {
28     this.isRootingFlag = checkRootingFiles(createFiles(this.RootFilesPath));
29   }
30   Log.d("test", "isRootingFlag = " + this.isRootingFlag);
31   ...
32 }
  • su명령어 실행 확인
Runtime.getRuntime().exec("su");
  • SuperSU 어플리케이션 확인
  • 루트 권한을 요구하는 어플리케이션 확인
    • 이미 알려진 유명 어플리케이션들을 리스팅 해 두고 설치 되어 있는지 확인
  • Build.Tag 확인
    • 시스템 이미지가 커스트마이징된 이미지인지 확인
if (Build.TAGS.equals("test-keys")) {
   this.ec = true;
}

루팅 탐지 우회

  • SpapaSU
    • SuperSU를 리패키징하여 SuperSU와 SU의 특징을 숨김
  • Xposed RootCloak
    • Xposed의 기능 사용
    • 루팅 탐지에 대한 후킹을 수행하여 루팅을 숨김

  출처: 공대위키(공대위키에서 최신 문서 보기)
  * 본 페이지는 공대위키에서 미러링된 페이지입니다. 일부 오류나 표현의 누락이 있을 수 있습니다. 원본 문서는 공대위키에서 확인하세요!