기본 뼈대
파이썬 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.exe [후킹을 원하는 class의 smali 파일이 들어있는 폴더 경로]
Plain Text
복사
File for Add Logging to Hooking code
•
로깅까지 추가하고 싶은 경우 Frida_Tracing 로 생성된 코드를 이 쉘 파일을 사용하여 로깅기능까지 추가되도록 사용한다.
명령어 사용법
윈도우 용은 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
복사