프리까지 배운 프리다 기술을 연습할 수 있는 훌륭한 학습 도구로 FridaLab이 있습니다. FridaLab은 프리다 스크립팅 실력을 향상시키기 위해 설계된 안드로이드 애플리케이션으로, 다양한 난이도의 문제를 제공합니다. 이번 포스팅에서는 FridaLab의 8가지 문제를 간단히 살펴보고, 설치 및 디컴파일 도구를 설치하는 과정을 단계별로 안내하겠습니다.
🔶 FridaLab
FridaLab은 프리다를 처음 접하는 사용자부터 고급 사용자까지 모두에게 유용한 학습 환경을 제공합니다. 주요 장점은 다음과 같습니다.
직관적인 학습 구조: 8개의 문제가 쉬운 것부터 어려운 것까지 단계적으로 구성되어 있어 프리다의 기본 API부터 고급 기법까지 자연스럽게 익힐 수 있습니다.
현실적인 연습 환경: 실제 안드로이드 앱을 대상으로 후킹, 변수 조작, 함수 호출 등 실무에서 활용되는 기술을 연습할 수 있습니다.
코드 디컴파일 가능: 앱이 난독화되지 않아 초보자도 쉽게 소스코드를 분석하고 프리다 스크립트를 작성할 수 있습니다.
다양한 도전 과제: 변수 변경, 함수 호출, UI 조작, 브루트포싱등 프리다의 다양한 기능을 체험할 수 있는 문제들이 포함되어 있습니다.
커뮤니티 지원: 많은 사용자가 FridaLab을 통해 학습하며 솔루션을 공유하고 있어, 막히는 부분을 해결할 수 있는 자료가 풍부합니다.
FridaLab의 8가지 요약
FridaLab은 총 8개의 문제로 구성되어 있으며, 각 문제는 프리다의 특정 기능을 연습할 수 있도록 설계되어 있습니다. 아래는 각 챕터를 한국어로 간단히 요약한 내용입니다.
challenge_01의 변수 'chall01'을 1로 변경하기
클래스 challenge_01에 있는 정수 변수 chall01의 값을 1로 바꿔야 합니다. 프리다의 Java.use를 사용해 변수 값을 직접 수정하는 연습입니다.
chall02() 함수 실행하기
MainActivity 클래스에 정의된 chall02() 함수를 호출해야 합니다. 인스턴스 메서드 호출을 위해 Java.choose를 활용하는 방법을 배웁니다.
chall03() 함수가 true를 반환하도록 만들기
chall03() 함수의 반환값을 false에서 true로 변경해야 합니다. 함수 오버라이딩기법을 연습합니다.
chall04()에 "frida" 문자열 전달하기
chall04() 함수에 인자로 "frida"를 전달해 호출해야 합니다. 특정 인자를 사용한 함수 호출을 다룹니다.
chall05()가 항상 "frida"를 받도록 하기
chall05() 함수가 어떤 인자를 받든 항상 "frida"를 처리하도록 수정해야 합니다. 함수의 인자를 조작하는 고급 후킹을 연습합니다.
10초 후 chall06()를 올바른 값으로 실행학기
chall06() 함수를 10초 뒤에 올바른 값으로 호출해야 합니다. 타이밍과 변수 값을 분석하는 복합적인 문제를 다룹니다.
check07Pin()을 브루트포싱 후 chall07()로 확인하기
check07Pin()을 통해 올바른 핀 코드를 찾아낸 뒤, chall07()로 이를 확인해야 합니다. 브루트포싱과 결과 활용을 연습합니다.
'CHECK'버튼의 텍스트를 'Confirm'으로 변경하기
UI 요소인 'CHECK' 버튼의 텍스트를 'Confirm'으로 바꿔야 합니다. 프리다를 사용한 UI 조작을 배우는 문제입니다.
FridaLab 설치 및 준비 과정
FridaLab을 시작하려면 먼저 앱을 다운로드하고 설치한 뒤, 소스코드를 분석하기 위해 디컴파일 도구를 준비해야 합니다. 아래는 단계별 안내입니다.
FridaLab 다운로드
다음 주소로 접속해 FridaLab APK 파일을 다운로드합니다 http://rossmarks.uk/blog/fridalab
녹스 에뮬레이터에서 설치
녹스 에뮬레이터를 실행하고 CMD 창을 엽니다.
nox_adb install [다운로드한 파일 경로] 입력해 다운로드한 APK 파일을 설치합니다.
설치가 완료되면 Success 메시지가 출력되고, 녹스 에뮬레이터에 FridaLab 앱이 설치된 것을 확인할 수 있습니다.
FridaLab 앱 실행.
앱을 실행하면 8개의 문제와 'CHECK' 버튼이 표시됩니다.
'CHECK' 버튼을 누르면 미해결 문제는 빨간색, 해결된 문제는 초록색으로 표시됩니다.
패키지 이름 확인
FridaLab 앱을 실행한 상태로, Python 3 환경에서 frida-ps -Ua 입력해 패키지 이름을 확인합니다.
소스코드 분석을 위한 디컴파일 도구
FridaLab 문제를 풀기 위해서는 앱의 내부 구조를 이해해야 합니다. 이를 위해 jadx-gui라는 디컴파일 도구를 사용해 APK 파일의 자바 소스코드를 분석합니다.
jadx 다운로드
구글에서 'jadx'를 검색하거나 다음 주소로 접속합니다. https://github.com/skylot/jadx
페이지 중간의 Releases 섹션에서 최신 버전을 선택합니다.
jadx-gui-1.5.1 -win.zip 파일을 다운로드합니다.
설치 및 실행 + 오류 해결
압축을 풀어 jadx-gui-1.5.1.exe 파일이 나타납니다.
실행 시 "This application requires a Java Runtime Environment 11 (64-bit)" 오류가 발생할 경우, 다음 주소에서 최신 Java SE 개발 키트를 다운로드해 설치합니다: https://www.oracle.com/java/technologies/downloads/#jdk24-windows
Java 설치 후 jadx-gui-1.5.1.exe를 실행하면 디컴파일 도구가 정상적으로 열립니다.
jadx-gui 간략한 소개
jadx-gui는 APK 파일을 디컴파일해 자바 소스코드를 생성하고, 이를 GUI 또는 CLI로 확인할 수 있는 도구입니다.
FridaLab의 클래스 구조와 메서드를 분석해 프리다 스크립트(페이로드)를 작성할 때 유용합니다. 예를 들어, 후킹하려는 클래스나 메서드의 이름을 확인하고, 변수나 함수의 동작 방식을 파악할 수 있습니다.
프리다를 효과적으로 사용하려면 대상 앱의 소스코드를 분석해 후킹 지점을 정확히 찾아야 합니다. 디컴파일은 이 과정의 필수 단계로, 소스코드를 통해 어떤 메서드를 후킹하거나 어떤 변수를 조작할지 결정할 수 있습니다.
FridaLab은 프리다를 배우고 연습하기 위한 최적의 환경을 제공합니다. 8개의 문제를 통해 변수 조작, 함수 호출, UI 변경 등 다양한 프리다 기술을 익힐 수 있습니다. 이번 포스팅에서는 FridaLab 설치와 디컴파일 준비 과정을 다뤘습니다.