Study/App

[App]InjuredAndroid injured.apk smali 변조

seomj 2022. 9. 10. 11:12

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하여 재설치

 

 

결과