Frida 활용 안드로이드 모의해킹 🤖
#5 JavaScript API 함수와 CLI
Frida JavaScript API 기본 문법
1. java.perform(fn)
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" # 프로세스 이름에 따라 수정 필요
두 가지 실행 명령어중 선택하여 사용 가능