본문 바로가기
Mobile/🩷 Android

12. FridaLab 실습_Challenge 01 문제 풀이

by snowflower.DY 2024. 5. 12.
FridaLab Challenge01 문제 풀이
1. change class Challenge_01's variable 'chall01' to :1
[해석] Challenge_01 클래스의 chall01 변수의 값을 1로 변경

 

1. Jadx를 통하여 AndroidMainfest.xml 내 패키지 이름을 확인 한다.

<?xml version="1.0" encoding="utf-8"?> 
# mainfest xmlns 태그 내 Packege 이름 확인
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" 
android:versionName="1.0" android:compileSdkVersion="28" android:compileSdkVersionCodename="9" 
package="uk.rossmarks.fridalab" platformBuildVersionCode="1" platformBuildVersionName="1">
    <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28"/>
    <application android:theme="@style/AppTheme" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:allowBackup="true" android:supportsRtl="true" android:roundIcon="@mipmap/ic_launcher_round" android:appComponentFactory="android.support.v4.app.CoreComponentFactory">
        <activity android:name="uk.rossmarks.fridalab.MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>
</manifest>

 

2. Jadx의 검색 기능을 이용하여 Challenge_01  클래스 내 chall01 변수를 확인한다.

package uk.rossmarks.fridalab;

/* loaded from: classes.dex */
public class challenge_01 {
    static int chall01; // 해당 chall01 변수의 값을 1로 변경

    public static int getChall01Int() {
        return chall01;
    }
}

 

3. 아래와 같이 코드를 작성한다.

setImmediate(function(){ # 프로세스 타임아웃 예방
    Java.perform(function(){ # 현재 스레드가 가상머신에 연결 여부 확인 후 fn호출
        # ↓ Java.use 명령어를 이용하여 클래스 객체를 변수로 설정
        var chall_01 = Java.use("uk.rossmarks.fridalab.challenge_01"); 
        # ↓ uk.rossmarks.fridalab.challenge_01 내 chall01의 값을 1로 변경
        chall_01.chall01.value = 1;	
        console.log("\n[♥] Solved challenge 01");
    })
})