Frida 활용 안드로이드 모의해킹 🤖 #5

2024-01-29

Frida 활용 안드로이드 모의해킹 🤖 #5

Frida 활용 안드로이드 모의해킹 🤖 #5 JavaScript API 함수와 CLI Frida JavaScript API 기본 문법 1. java.perform(fn) 함수는 현재 스레드에서 주어진 함수를 동기적으로 실행 Android 애플리케이션의 메인 스레드에서 자바 코드를 실행하는 데 사용 Java.perform(function () { // 여기

Frida 활용 안드로이드 모의해킹 🤖
#5 JavaScript API 함수와 CLI

Frida JavaScript API 기본 문법

1. java.perform(fn)

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

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

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

2. java.use(className)

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

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

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

3. java.choose(className, callbacks)

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

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

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

4. java.enumerateLoadedClasses(callbacks)

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

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

5. setImmediate(fn)

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

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

6. overload()

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

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

CLI 사용

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

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

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

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

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

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

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