| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- smali
- 블록체인
- injuredandroid
- BOB후기
- 솔루션개발
- blockchain
- 안드로이드 앱 진단 환경설정
- BOB10기
- golang
- SlubBackdoor #응용 #악성코드 #악성코드_제작 #Python #깃허브를_이용한_악성코드
- Frida
- 보안제품개발
- XSS
- bitcoin
- Burp Suite CA
- jadx
- AndroGoat
- FlagTwoActivity
- UTXO
- BOB10기합격후기
- apk easy tool
- 앱변조
- Burp Suite
- BOB면접
- FlagOneLoginActivity
- NOX
- injuredandroid.apk
- 자산추적
- BOB 합격후기
- 비트코인
- Today
- Total
Kye0m's Security
[injuredandroid.apk] smali 변조를 통한 안드로이드 앱 변조 본문
smali 변조를 통한 안드로이드 앱 변조
Injuredandroid.apk
injuredandroid.apk는 안드로이드 취약점 공부를 위해서 CTF 형식으로 제작된 애플리케이션이다.
구글 플레이스토어를 통해 앱을 설치한다.
이 글에서는 해당 앱을 변조하여, 간단한 문구를 띄워보는 것을 실습해 볼 예정이다.

디컴파일
실습을 위해서 디컴파일을 진행해야한다.
pm list packages -f | grep "injured"
디컴파일을 진행하기 위해서 pm명령어를 통해서 injuredandroid.apk의 설치경로를 알아낸다.

위를 통해서 package:/data/app/b3nac.injuredandroid-1/base.apk=b3nac.injuredandroid 위치에 있는 것을 확인할 수 있다.
해당 경로를 통해서, nox에 있는 앱을 분석환경으로 가져와야한다.
adb pull "package:/data/app/b3nac.injuredandroid-1/base.apk"
adb pull 명령어를 이용하여 앱을 가져오도록 한다.
해당 앱을 가져온 후에는 'APK Easy Tool'을 사용한다.
'APK Easy Tool'은 모바일 어플리케이션의 컴파일 및 디컴파일을 도와주는 도구이다.

방금 가져온 앱의 경로를 설정하고 Decompile 버튼을 누르면

다음과 같은 경로에, 디컴파일되어 저장된 것을 볼 수 있다.
smali 변조
안드로이드는 MainActivity의 onCreate 함수를 시작으로 동작한다.
jadx로 MainActivity를 확인하여 원하는 값을 변조해보도록 하자.
<activity android:name="b3nac.injuredandroid.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
AndroidManifest.xml 파일을 확인해보면 위와같은 코드를 확인할 수 있다. intent.action이 해당하는 값이 MAIN이므로,
b3nac.injuredandroid.MainActivity 가 MainActivity임을 알 수 있다.
'디컴파일된 폴더'\smali\b3nac\injuredandroid에 가보면 MainActivity 파일이 있는것을 확인할 수 있다.
onCreate 함수를 변조하기 위해서 에디터로 MainActivity.smali 파일을 열고 onCreate함수를 아래와 같이 변조한다.
.method public onCreate(Landroid/os/Bundle;)V
.locals 1 // 변수를 사용하기 위해서 locals 값을 1로 설정함
invoke-super {p0, p1}, Landroidx/appcompat/app/c;->onCreate(Landroid/os/Bundle;)V
const p1, 0x7f0b0031
invoke-virtual {p0, p1}, Landroidx/appcompat/app/c;->setContentView(I)V
invoke-direct {p0}, Lb3nac/injuredandroid/MainActivity;->F()V
const-string p1, "ccit test" // p1에 "ccit test"라는 변수값 입력
const/4 v0, 0x1
invoke-static {p0, p1, v0},
Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;
move-result-object p0
invoke-virtual {p0}, Landroid/widget/Toast;->show()V
return-void
.end method
파일을 저장 후, APK Easy Tool에서 다시 컴파일을 진행시킨다. 이후,
adb install "컴파일된 변조 앱 경로"
를 입력해주면 성공적으로 앱이 변조된 것을 확인할 수 있다.

'앱 모의해킹 > Injuredandroid.apk' 카테고리의 다른 글
| [injuredandroid.apk] Flag Four - Login2 (0) | 2022.09.12 |
|---|---|
| [injuredandroid.apk] FlagThree - Resources (0) | 2022.09.12 |
| [injuredandroid.apk] FlagTwo - Exported Activity (0) | 2022.09.12 |
| [injuredandroid.apk] FlagOne - Login (0) | 2022.09.12 |
| [injuredandroid.apk] XSS (0) | 2022.09.12 |