apktool d InsecureBankv2.apk
Insecure Content Provider Access 취약점에서 위와 같이 AndroidManifest.xml 파일을 변경했었는데, 변경된 파일로 다시 빌드를 해보자. res/values/strings.xml 파일에서 is_admin이 no로 설정된 것을 yes로 바꾸고 다시 빌드해보자.
apktool b InsecureBankv2
apktool로 decompile 시 얻은 InsecureBankv2의 AndroidManifest.xml 파일을 변경 후, 해당 InsecureBankv2 파일에 대해 빌드를 진행한다.
빌드된 apk 파일은 dist 경로에 있으며, sign을 하지 않아 안드로이드 디바이스에서 실행할 수 없다.
Android Studio에서 InsecureBankv2 폴더를 열고, [Build]-[Generate Signed Bundle or APK]에서 APK를 선택한다.
그럼 지정된 경로에 key.jks 키가 생성된다.
$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore D:\AndroidReversing\key.jks InsecureBankv2.apk key
jarsigner 명령어를 사용하여 sign을 진행한다.
앱을 애뮬레이터에 재설치한다.
"이 앱은 현재 bluestacks 버전에 설치할 수 없습니다" 오류가 뜨면, [안드로이드 설정]-[애플리케이션]에서 InsecureBankv2 앱을 제거한 후 다시 apk 설치로 설치한다.
[Preferences]에서 server IP와 port를 설정한 후, adb shell로 앱의 쉘에 접속하여 다음의 명령어를 실행하면, Insecure Content Provider Access 취약점에서 테스트했을 때와 다르게 Permission Denial이 뜨는 것을 확인할 수 있다.
is_admin을 yes로 설정하여 "Create User" 버튼이 생성된 것을 확인할 수 있다.
버튼을 누르면 위와 같이 Toast 메시지가 뜬다.
apk를 아무나 사용할 수 있기 때문에, 완전히 patching을 방지할 수는 없지만, patch를 어렵게 할 수는 있다.