본문 바로가기

4-1. 2025-2 심화 스터디/안드로이드

[2025.11.08] APP 3주차 활동

참고강의: 프리다(Frida) 를 이용한 안드로이드 앱 모의해킹

https://inf.run/WqSJ9

 

프리다(Frida)를 이용한 안드로이드 앱 모의해킹| 보안프로젝트 - 인프런 강의

현재 평점 4.9점 수강생 749명인 강의를 만나보세요. 모의해킹 실무에서 활용되고 있는 프리다 (Frida)의 완벽 활용법을 배울 수 있습니다. 안드로이드보안, 취약점진단, 보안, 해킹, 모의해킹

www.inflearn.com

섹션 6. 자바스크립트 파일 사용

섹션 7. 파이썬 바인딩 이해 

 


6. 자바스크립트 파일 사용

 

프리다 스크립트(JavaScript): 안드로이드 앱의 실행 중인 프로세스에 동적으로 코드를 주입하여 동작을 후킹(Hooking)하거나 조작할 수 있음.

스크립트 파일 로드 명령어 :  frida -U -l [스크립트 파일].js [앱 패키지 이름]

 

 

 

Java.perform(function()
 {
 	Java.enumerateLoadedClasses(
     {
     	"onMatch" : function(className){ 
   		console.log(className) 
    	},
     	"onComplete":function() { }
     	}
     )
 })

 

  • Java.enumerateLoadedClasses() : 로드된 모든 클래스를 열거하고 모든 일치 항목을 추 ㄹ력
  • onMatch: 일치하는 것을 찾으면 호출
  • onComplete : 가능한 일치(Match)를 모두 마치면 사용됨

 

Java.perform(function() {
    var Activity = Java.use("android.app.Activity");
    Activity.onResume.implementation = function() {
        console.log("onResume called");
        this.onResume();
    };
});

 

  •  android.app.Activity.onResume() : 액티비티가 시작되고 사용자와 상호작용하기 직전에 호출
  • Java.use("ClassName") : 해당 클래스의 메서드와 필드에 접근
  • .implementation : 기존 메서드 로직을 재작성 (Hook)

 

자바스크립트 파일 Spwan으로 불러오기 

>Process terminated 오류 발생시 setlmmediate(fn) 으로 해결

 

Java.perform(function() {
    Java.choose("android.view.View", {
        onMatch: function(instance) {
            console.log("Found instance: " + instance);
        },
        onComplete: function() {
            console.log("Search complete.");
        }
    });
});

Java.choose(className, callbacks)

-힙에서인스턴스화된객체찾기가능

-자바힙을스캔하여className클래스의라이브인스턴스를열거

 

callbacks : onMatch, onComplete

-onMatch : 실시간으로인스턴스에대해호출

-onComplete : function()의 모든 인스턴스가열거될때호출

 

android.view

- 화면 레이아웃과 사용자의 상호 작용을 처리하는 기본 사용자 인터페이스 클래스를 표시하는 클래스를 제공

android.view.View

- 사용자 인터페이스 구성 요소의 기본 구성 요소를 나타냄

 

 

 

7. 파이썬 바인딩 이해 

 

작업 자동화를 위해 사용

 

파이썬코드 실행으로아래와 같은 기능 가능

1. 프로세스 식별하고 연결

2. 연결된 디바이스에서 구현하려는 프로세스와 세션 연결

3. 자바스크립트로 작성된 페이로드 자동 삽입

 

파이썬 바인딩 기본 구조

 

import frida, sys -frida, sys 모듈 가져오기
jscode= """payload_code"""  삽입할 자바스크립트 코드 넣기
session = frida.get_usb_device().attach("com.your.package.name")  frida를 시작하고 USB 장치에서 com.your.package.name 프로세스 연결
script = session.create_script(jscode)  jscode에 있는 스크립트 코드를 frida에서 사용할 수 있도록 생성
script.load()  생성한 script를 로드
sys.stdin.read()  script가 동작하기 전에 종료되는 문제 예방

 

파이썬 바인딩 기본 구조 - Spwan

device = frida.get_usb_device()  frida를 시작하고 USB 장치에 연결
pid = device.spwan(["com.your.package.name"])  연결된 USB 장치에서 com.your.package.name 프로세스 생성
session = device.attach(pid)  com.your.package.name 프로세스 연결
script = session.create_script(jscode)  jscode에 있는 스크립트 코드를 frida에서 사용할 수 있도록 생성
script.load()  생성한 script를 로드
device.resume(pid)  com.your.package.name 프로세스 메인 스레드 실행
sys.stdin.read()  script가 동작하기 전에 종료되는 문제 예방

'4-1. 2025-2 심화 스터디 > 안드로이드' 카테고리의 다른 글

[2025.11.29] APP 6주차 활동  (0) 2025.12.02
[2025.11.22] APP 5주차 활동  (0) 2025.11.29
[2025.10.04] APP 2주차활동  (0) 2025.10.04
[2025.09.27] APP 1주차활동  (0) 2025.09.28