FridaLab의 일곱 번째 문제는 check07Pin() 메서드를 브루트포스하여 올바른 4자리 PIN 코드를 찾고, chall07() 메서드로 확인하는 연습을 다룹니다. 이번 포스팅에서는 07번 문제를 풀며 프리다로 check07Pin()을 브루트포스하고 chall07()를 호출하는 방법을 알아보겠습니다.
문제: Bruteforce check07Pin() then confirm with chall07()
chall07() 메서드가 어디에 있는지 확인하기 위해 jadx-gui를 사용하겠습니다.
public void chall07(String str) {
if (challenge_07.check07Pin(str)) {
this.completeArr[6] = 1;
} else {
this.completeArr[6] = 0;
}
}
🔶 핵심 내용
package uk.rossmarks.fridalab;
public class challenge_07 {
static String chall07;
public static void setChall07() {
chall07 = BuildConfig.FLAVOR + (((int) (Math.random() * 9000.0d)) + 1000);
}
public static boolean check07Pin(String str) {
return str.equals(chall07);
}
}
🔶 핵심 내용
브루트포스 방식으로 1000~9999 사이의 숫자를 시도하여 check07Pin()이 true를 반환하는 PIN을 찾고, 이를 chall07()에 전달하겠습니다
var c_07 = Java.use("uk.rossmarks.fridalab.challenge_07");
//후킹 및 PIN 설정
c_07.setChall07.implementation = function () {
this.setChall07();
return;
};
// 먼저 setChall07 호출하여 PIN 초기화
c_07.setChall07();
// 브루트포스 check07Pin
var pin;
for (var i = 1000; i <= 9999; i++) {
var pinStr = i.toString();
console.log("PIN 확인 중: " + pinStr); // 확인 과정 출력
if (c_07.check07Pin(pinStr)) {
pin = pinStr;
break;
}
}
// MainActivity.chall07 호출
Java.choose("uk.rossmarks.fridalab.MainActivity", {
onMatch: function (instance) {
if (pin) {
instance.chall07(pin);
console.log("PIN True: " + pin);
} else {
console.log("PIN을 찾지 못했습니다.");
}
},
onComplete: function () {
console.log("movement!!!!!!");
},
});
🔶 추가된 코드 설명
이번 포스팅에서는 FridaLab 07번 문제를 풀며 프리다로 브루트포스를 통해 4자리 PIN 코드를 찾고, 이를 메서드에 전달하는 방법을 배웠습니다.
루팅 탐지 우회 (0) | 2025.04.19 |
---|---|
FridaLab_08 (0) | 2025.04.18 |
FridaLab_06 (1) | 2025.04.17 |
FridaLab_05 (0) | 2025.04.17 |
FridaLab_04 (0) | 2025.04.15 |