콘텐츠로 건너뛰기
Frida 활용 안드로이드 모의해킹 🤖
#5 JavaScript API 함수와 CLI

Frida JavaScript API 기본 문법

1. java.perform(fn)

함수는 현재 스레드에서 주어진 함수를 동기적으로 실행

Android 애플리케이션의 메인 스레드에서 자바 코드를 실행하는 데 사용

  Java.perform(function () {
      // 여기에 수행하고자 하는 작업 작성
  });

2. java.use(className)

함수는 지정된 클래스를 사용하기 위한 프록시 객체를 반환

해당 클래스의 메서드를 후킹하거나 조작하는 데 사용

var targetClass = Java.use('com.example.TargetClass');

3. java.choose(className, callbacks)

클래스 인스턴스를 캡처하여 콜백 함수를 제공하는데 사용

특정 클래스의 인스턴스를 찾고 조작할 때 유용

Java.choose('com.example.TargetClass', {
    onMatch: function (instance) {
        // 매칭된 인스턴스에 대한 작업 수행
    },
    onComplete: function () {
        // 모든 매칭이 완료된 후 수행할 작업
    }
});

4. java.enumerateLoadedClasses(callbacks)

현재 로딩된 클래스들을 나열하고, 콜백 함수를 통해 각 클래스에 대한 작업을 수행

Java.enumerateLoadedClasses({
    onMatch: function (className) {
        // 각 클래스에 대한 작업 수행
    },
    onComplete: function () {
        // 나열이 완료된 후 수행할 작업
    }
});

5. setImmediate(fn)

주어진 함수를 가능한 빠르게 실행

setImmediate(function () {
    // 즉시 실행될 작업 작성
});

6. overload()

메서드 오버로딩을 가능케 하며, 메서드의 시그니처를 지정하여 호출

var myMethod = targetClass.myMethod.overload('int', 'java.lang.String');
myMethod.implementation = function (arg1, arg2) {
    // 오버로딩된 메서드에 대한 작업 수행
};

CLI 사용

프로세스에 스크립트를 인젝션 하는 두 가지 방법

1. 애플리케이션 프로세스 실행 후 자바스크립트 삽입

2. 애플리케이션 프로세스 시작되기 전 자바스크립트 삽입

1. 애플리케이션 프로세스 실행 후 자바스크립트 삽입

Nox → Chrome 실행 → 프로세스 확인 → 프로세스 Attaching

frida -U -f com.android.chrome
frida -U --no-pause -f com.android.chrome

chrome 실행 전 js 실행 예시
frida -U --no-pause -f com.android.chrome -l xxx.js
frida -U -l your_script.js -n "com.android.chrome"  
# 프로세스 이름에 따라 수정 필요

2. 애플리케이션 프로세스 시작되기 전 자바스크립트 삽입

frida -U -f com.android.chrome
frida -U --no-pause -f com.android.chrome

chrome 실행 전 js 실행 예시
frida -U --no-pause -f com.android.chrome -l xxx.js
frida -U -l your_script.js -n "com.android.chrome"  
# 프로세스 이름에 따라 수정 필요

두 가지 실행 명령어중 선택하여 사용 가능

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
모든 댓글보기