smali 코드
An assembler/disassembler for Android's dex format의 약자
dex 바이너리를 사람이 읽을 수 있도록 표현한 언어
dex에는 Android 런타임에서 궁극적으로 실행되는 코드가 포함
(달빅 가상머신리 dex 포맷의 바이트 코드를 해석하여 실행)
dex는 기계어로 되어 있고 이를 디컴파일하면 smali 코드가 됨
smali는 재컴파일이 가능하기 때문에, 코드를 수정하고 재컴파일 함으로써 프로그램 수정 가능
기존
아무것도 뜨지 않고 앱이 실행됨
1. apk 파일 가져오기
아래 명령어를 통해 패키지 리스트 확인
pm list packages -f | grep b3nac
adb pull로 apk 파일을 윈도우로 가져옴
adb pull /data/app/b3nac.injuredandroid-1/base.apk injured_smali.apk
2. APK Easy Tool을 사용하여 해당 파일을 디컴파일
3. smali 코드 확인
jadx를 사용해 AndroidManifest.xml을 확인
b3nac.injuredandroid.MainActivity가 메인으로 동작하는 것을 확인
MainActivity로 이동
onCreate 함수 확인
4. 코드 변경
아까 디컴파일한 injured/smali/b3nac/injuredandroid/MainActivity.smali에서 코드 수정
.locals 1으로 변경
사용할 레지스터 개수를 의미
const-string p1, "seomj test"
"seomj test"라는 메시지를 출력
재설치
APK Easy Tool을 사용하여 컴파일
컴파일한 파일을 push하여 재설치
결과
'Study > App' 카테고리의 다른 글
[App]InjuredAndroid FLAG THREE - RESOURCES (0) | 2022.09.11 |
---|---|
[App]InjuredAndroid FLAG TWO - EXPORTED ACTIVITY (1) | 2022.09.11 |
[App]InjuredAndroid FLAG ONE - LOGIN (0) | 2022.09.11 |
[App]InjuredAndroid XSS (0) | 2022.09.11 |
[App]모바일 burp 프록시 환경 구성하기 (0) | 2022.09.07 |