//////
Search
✍️

Android FRIDA SCRIPT 기본 작성법

기본 뼈대

파이썬 3.8.5 버전 사용
import frida,sys attach_name = "com.tm.ctf.clicker" def on_message(message,data): if message['type'] == 'send': print(message['payload']) else: print(message) jscode = """ Java.perform(function(){ // payload // }); """ device = frida.get_usb_device(1) session = frida.get_usb_device().attach(attach_name) script = session.create_script(jscode) script.on('message',on_message) script.load() sys.stdin.read()
Python
복사

FRIDA Script

FRIDA Script 에 사용되는 JS의 문법에 대해 정리한 자료이다.

Java.perform

현재 스레드가 가상머신에 연결되었는지 확인하고 function을 호출한다.
Java.perform(function(){ //CODE// });
JavaScript
복사

Java.setImmediate(function)

FRIDA는 단말기가 느려질 때 자동으로 프로세스를 종료하는 특징이 있는데, 이러한 경우를 방지하기 위해서 사용한다. 이를 사용하면, 백그라운드로 자동으로 스크립트가 재 실행되어 종료되지 않는다.
setImmediate(function(){ //CODE// })
JavaScript
복사

Java.use(ClassName)

메소드 후킹 시 사용한다.
var myClass = Java.use(com.mypackage.name.class); # 이후 다음과 같이 사용도 가능 var onTouchEvent = myClass.onTouchEvent; onTouchEvent.implementation = function(a) { ... // 값 설정도 가능 this.g.value = 3768; // 실제 클래스 처럼 사용이 가능 this.onTouchEvent(a); ... }
JavaScript
복사

Hooking Code 만들기

Android Class / Function Hooking FILE
Frida_Tracing 프로그램을 사용하여 특정 클래스를 후킹하는 코드를 만들 수 있다. 클래스는 smali 파일을 사용하여 지정한다.
Frida_Tracing_v1.0.zip
8.4KB
명령어 사용법
Frida_Tracing_v1.0.exe [후킹을 원하는 class의 smali 파일이 들어있는 폴더 경로]
Plain Text
복사
File for Add Logging to Hooking code
로깅까지 추가하고 싶은 경우 Frida_Tracing 로 생성된 코드를 이 쉘 파일을 사용하여 로깅기능까지 추가되도록 사용한다.
frida-tracing-addLog.zip
2.1KB
명령어 사용법
윈도우 용은 GIT BASH 와 같은 툴에서, 리눅스 용은 Cygwin Terminal 같은 툴에서 사용한다. 두 버전의 차이는 CRLF / LF 형식의 차이이다.
frida-tracing-addLog.sh [hooking code]
Bash
복사
Terminal Download
Byte Code to String in JS
function bin2String(array) { var result = ""; for (var i = 0; i < array.length; i++) { result += String.fromCharCode(array[i]); } return result; }
JavaScript
복사