2026. 2. 17. 18:08ㆍWriteUp & Reference - Wargames, CTFs/Mobile
https://github.com/DERE-ad2001/Frida-Labs/tree/main/Frida%200x4
Frida-Labs/Frida 0x4 at main · DERE-ad2001/Frida-Labs
The repo contains a series of challenges for learning Frida for Android Exploitation. - DERE-ad2001/Frida-Labs
github.com
PS C:\Users\after\Downloads> adb install Challenge_0x4.apk
Performing Streamed Install
Success
adb 상에 설치하고 MainActivity부터 시작해보나 특이점은 없어보이니 com.ad2001.frida0x4 클래스중 Check 클래스를 확인해준다.

위 함수를 보면 get_flag() 메서드가 보인다. 중간에 보면 ^로 XOR 연산이 이루어지는 것을 볼 수 있다. 키 15를 이용해 I]FKNtW@]JKPFA\\[NALJr 라는 문자열을 디코딩한다. 게다가 get_flag() 메서드는 코드 전체에서 호출되는 구간이 없다
(따라서 frida로 이 함수를 호출 해 a가 1337일 때 동작하는 것으로? 의도하고 호출해주면 될 거 같다.)
앞 문제들과의 차이점인데, 디스어셈블한 java 코드에서 호출방식에 static와 instance 차이가 존재한다.
Frida에서 static vs instance 호출 차이
- static: ClassName.method(…)
- instance: var obj = ClassName.$new(); obj.method(…)
이런 차이점이 있다.
static 메서드가 아닌 경우 frida에서 instance를 먼저 생성해준 후 메서드를 호출할 수 있다.
Check ch = new Check();
String flag = ch.get_flag(1337);이 함수는 문자열을 반환하므로 그 반환값을 변수에 저장해야 한다.
Java.perform(function() {
var <class_reference> = Java.use("<package_name>.<class>");
var <class_instance> = <class_reference>.$new(); // Class Object
<class_instance>.<method>(); // Calling the method
})
Frida에서 Java 클래스의 인스턴스를 생성하려면 $new() 메서드를 사용한다. 이 메서드는 Frida 전용 메서드로 특정 클래스의 객체를 생성할 수 있게 해준다.
주어진 정보로는
- 패키지 이름: com.ad2001.frida0x4
- 클래스 이름: Check
- 메서드 이름: get_flag
와 같은 정보들이 있다.
Java.perform(function(){
var check=Java.use("com.ad2001.frida0x4.Check");
var check_obj=check.$new();
var res = check_obj.get_flag(1337);
console.log("FLAG" + res);
})위와 같이 코드를 짤 수 있다.
PS C:\Users\after\Downloads> frida -U -f com.ad2001.frida0x4
____
/ _ | Frida 17.5.1 - A world-class dynamic instrumentation toolkit
| (_| |
> _ | Commands:
/_/ |_| help -> Displays the help system
. . . . object? -> Display information about 'object'
. . . . exit/quit -> Exit
. . . .
. . . . More info at https://frida.re/docs/home/
. . . .
. . . . Connected to Android Emulator 5554 (id=emulator-5554)
Spawning `com.ad2001.frida0x4`... Spawned `com.ad2001.frida0x4`. Resuming main thread!
[Android Emulator 5554::com.ad2001.frida0x4 ]-> Java.perform(function(
){
var check=Java.use("com.ad2001.frida0x4.Check");
var check_obj=check.$new();
var res = check_obj.get_flag(1337);
console.log("FLAG" + res);
})
FLAGFRIDA{XORED_INSTANCE}플래그가 출력되는 것을 확인할 수 있다!
'WriteUp & Reference - Wargames, CTFs > Mobile' 카테고리의 다른 글
| [모바일 보안] Frida-Labs 0x6 (0) | 2026.02.17 |
|---|---|
| [모바일 보안] Frida-Labs 0x5 (0) | 2026.02.17 |
| [모바일 보안] Frida-Labs 0x3 (0) | 2026.02.17 |
| [모바일 보안] Frida-Labs 0x2 (0) | 2026.02.16 |
| [모바일 보안] Frida-Labs 0x1 (0) | 2026.02.16 |