본문 바로가기
App/AndroGoat

AndroGoat.apk | 루팅 탐지 (smali)

by 09337 2021. 9. 17.

0. 기본 세팅

AndroGoat.apk 파일을 다운받은 후, 에뮬레이터(Nox)로 옮겨준다.

 

나는 Nox 자체 설정에서 루팅을 켜놓았다.

 

1. 루팅 탐지

어플리케이션을 실행한 후, Root Delection에 들어가 루팅 탐지를 해보면 "Device is rooted"라며 제대로 탐지되는 것을 확인할 수 있다.

 

2. apk 디컴파일

apk easy tool을 사용해서 해당 apk 파일을 디컴파일 해준다.

 

2.1. package명 및 Root Detection 탐지 영역 체크

디컴파일 후 나온 AndroidManifest.xml 파일을 통해 package명과 Root Detection을 탐지하는 영역을 확인한다.

 

jadx로 위에서 확인한 영역을 보면 아래와 같은 코드가 있다.

// owasp.sat.agoat.RootDetectionActivity

public final boolean isRooted() {
    boolean result = false;
    for (String files : new String[]{"/system/app/Superuser/Superuser.apk", "/system/app/Superuser.apk", "/sbin/su", "/system/bin/su", "/system/xbin/su", "/data/local/xbin/su", "/data/local/bin/su", "/system/sd/xbin/su", "/system/bin/failsafe/su", "/data/local/su", "/su/bin/su", "re.robv.android.xposed.installer-1.apk", "/data/app/eu.chainfire.supersu-1/base.apk"}) {
        result = new File(files).exists();
        if (result) {
            break;
        }
    }
    return result;
}

5번 라인이 루팅을 탐지하는 코드로, String[] 중 확인되는 것이 있다면 루팅되어있다는 문장이 나타난다.

 

3. RootDetectionActivity.smali 변조

다시 apk easy tool로 디컴파일한 다음 경로에서 RootDetectionActivity.smali 파일을 열어, String[]에 해당되는 내용들을 모두 변경해준다.

주의할 점은 b 같이 이미 존재하는 파일 등으로 이름을 설정하게 되면 해당 파일이 인식되어 루팅이 탐지된다고 뜰 수 있으니, 없을 법한 이름으로 바꿔주어야한다.

 

4. 컴파일 후 루팅 탐지

다시 apk easy tool로 Sign APK → Compile을 진행하고, 루팅 탐지를 해보면 "Device is not rooted" 라고 나타난다.

댓글