상세 컨텐츠

본문 제목

FridaLab 사전 작업

카테고리 없음

by ser-ser 2025. 4. 10. 15:06

본문

FridaLab을 활용한 프리다 연습

프리까지 배운 프리다 기술을 연습할 수 있는 훌륭한 학습 도구로 FridaLab이 있습니다. FridaLab은 프리다 스크립팅 실력을 향상시키기 위해 설계된 안드로이드 애플리케이션으로, 다양한 난이도의 문제를 제공합니다. 이번 포스팅에서는 FridaLab의 8가지 문제를 간단히 살펴보고, 설치 및 디컴파일 도구를 설치하는 과정을 단계별로 안내하겠습니다.

 

🔶 FridaLab

FridaLab은 프리다를 처음 접하는 사용자부터 고급 사용자까지 모두에게 유용한 학습 환경을 제공합니다. 주요 장점은 다음과 같습니다.

  • 직관적인 학습 구조: 8개의 문제가 쉬운 것부터 어려운 것까지 단계적으로 구성되어 있어 프리다의 기본 API부터 고급 기법까지 자연스럽게 익힐 수 있습니다.
  • 현실적인 연습 환경: 실제 안드로이드 앱을 대상으로 후킹, 변수 조작, 함수 호출 등 실무에서 활용되는 기술을 연습할 수 있습니다.
  • 코드 디컴파일 가능: 앱이 난독화되지 않아 초보자도 쉽게 소스코드를 분석하고 프리다 스크립트를 작성할 수 있습니다.
  • 다양한 도전 과제: 변수 변경, 함수 호출, UI 조작, 브루트포싱등 프리다의 다양한 기능을 체험할 수 있는 문제들이 포함되어 있습니다.
  • 커뮤니티 지원: 많은 사용자가 FridaLab을 통해 학습하며 솔루션을 공유하고 있어, 막히는 부분을 해결할 수 있는 자료가 풍부합니다.

FridaLab의 8가지 요약

FridaLab은 총 8개의 문제로 구성되어 있으며, 각 문제는 프리다의 특정 기능을 연습할 수 있도록 설계되어 있습니다. 아래는 각 챕터를 한국어로 간단히 요약한 내용입니다.

  1. challenge_01의 변수 'chall01'을 1로 변경하기
    • 클래스 challenge_01에 있는 정수 변수 chall01의 값을 1로 바꿔야 합니다. 프리다의 Java.use를 사용해 변수 값을 직접 수정하는 연습입니다.
  2. chall02() 함수 실행하기
    • MainActivity 클래스에 정의된 chall02() 함수를 호출해야 합니다. 인스턴스 메서드 호출을 위해 Java.choose를 활용하는 방법을 배웁니다.
  3. chall03() 함수가 true를 반환하도록 만들기
    • chall03() 함수의 반환값을 false에서 true로 변경해야 합니다. 함수 오버라이딩기법을 연습합니다.
  4. chall04()에 "frida" 문자열 전달하기
    • chall04() 함수에 인자로 "frida"를 전달해 호출해야 합니다. 특정 인자를 사용한 함수 호출을 다룹니다.
  5. chall05()가 항상 "frida"를 받도록 하기
    • chall05() 함수가 어떤 인자를 받든 항상 "frida"를 처리하도록 수정해야 합니다. 함수의 인자를 조작하는 고급 후킹을 연습합니다.
  6. 10초 후 chall06()를 올바른 값으로 실행학기
    • chall06() 함수를 10초 뒤에 올바른 값으로 호출해야 합니다. 타이밍과 변수 값을 분석하는 복합적인 문제를 다룹니다.
  7. check07Pin()을 브루트포싱 후 chall07()로 확인하기
    • check07Pin()을 통해 올바른 핀 코드를 찾아낸 뒤, chall07()로 이를 확인해야 합니다. 브루트포싱과 결과 활용을 연습합니다.
  8. 'CHECK'버튼의 텍스트를 'Confirm'으로 변경하기
    • UI 요소인 'CHECK' 버튼의 텍스트를 'Confirm'으로 바꿔야 합니다. 프리다를 사용한 UI 조작을 배우는 문제입니다.

FridaLab 설치 및 준비 과정

FridaLab을 시작하려면 먼저 앱을 다운로드하고 설치한 뒤, 소스코드를 분석하기 위해 디컴파일 도구를 준비해야 합니다. 아래는 단계별 안내입니다.

 

  1. FridaLab 다운로드
    • 다음 주소로 접속해 FridaLab APK 파일을 다운로드합니다
      http://rossmarks.uk/blog/fridalab


  2. 녹스 에뮬레이터에서 설치
    • 녹스 에뮬레이터를 실행하고 CMD 창을 엽니다.


    • nox_adb install [다운로드한 파일 경로] 입력해 다운로드한 APK 파일을 설치합니다.
    • 설치가 완료되면 Success 메시지가 출력되고, 녹스 에뮬레이터에 FridaLab 앱이 설치된 것을 확인할 수 있습니다.


  3. FridaLab 앱 실행.
    • 앱을 실행하면 8개의 문제와 'CHECK' 버튼이 표시됩니다.
    • 'CHECK' 버튼을 누르면 미해결 문제는 빨간색, 해결된 문제는 초록색으로 표시됩니다.


  4. 패키지 이름 확인
    • FridaLab 앱을 실행한 상태로, Python 3 환경에서 frida-ps -Ua 입력해 패키지 이름을 확인합니다.

소스코드 분석을 위한 디컴파일 도구

FridaLab 문제를 풀기 위해서는 앱의 내부 구조를 이해해야 합니다. 이를 위해 jadx-gui라는 디컴파일 도구를 사용해 APK 파일의 자바 소스코드를 분석합니다.

 

  1. jadx 다운로드
    • 구글에서 'jadx'를 검색하거나 다음 주소로 접속합니다.
      https://github.com/skylot/jadx
    • 페이지 중간의 Releases 섹션에서 최신 버전을 선택합니다.
    • jadx-gui-1.5.1 -win.zip 파일을 다운로드합니다.
  2. 설치 및 실행 + 오류 해결
    • 압축을 풀어 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 설치와 디컴파일 준비 과정을 다뤘습니다.