본문 바로가기
App/AndroGoat

AndroGoat.apk | 바이너리 패치 (smali)

by 09337 2021. 9. 20.

0. 기본 세팅

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

 

1. 바이너리 패치

apk를 실행한 후 Binary Patching을 확인해보면 권한이 없다고 나타난다.

 

2. apk 디컴파일

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

2.1. package명 및 Binary Patching 탐지 영역 체크

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

 

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

//owastp.sat.agoat.BinaryPatchingActivity

if (this.isAdmin) {
      TextView textView = (TextView) _$_findCachedViewById(R.id.isAdminText);
      Intrinsics.checkExpressionValueIsNotNull(textView, "isAdminText");
      textView.setText("You are Admin Now");
      Button button = (Button) _$_findCachedViewById(R.id.adminButton);
      Intrinsics.checkExpressionValueIsNotNull(button, "adminButton");
      button.setEnabled(true);
}

if문을 통해 탐지된 결과물이 나타난다.

 

3. BinaryPachingActivity.smali 변조

apk easy tool로 디컴파일한 다음 경로에서 BinaryPachingActivity.smali 파일을 열어 if문을 변조시킨다.

 

4. 컴파일 후 바이너리 패칭

apk easy tool로 Sign APK → Compile을 진행하고, 새로 컴파일한 apk 재설치 후 바이너리 패칭을 해보면 다음과 같이 권한이 생긴 것을 확인할 수 있다.

댓글