Get Start Frida
1. Chrome 브라우저 설치
- 구글 play 에서 Chrome 브라우저를 설치한다.
2. 자바스크립트 페이로드 작성
자바스크립트로 페이로드를 작성하여 frida가 사용할 수 있게 만들 것이다.
기본 뼈대 구조는 아래와 같다.
1
2
3
Java.perform(function(){
// todo
})
Java.perform(fn)
은 frida에서 제공하는 함수이다.Java.perform(fn)
은 현재 스레드가 가상머신에 연결되어 있는지 확인하고 “fn”을 호출한다.→
Java.perform
으로 감싼 내부 코드는 해당 앱에 접근하여 코드를 실행한다.
3. frida-trace(추적)
frida-trace
명령은 frida가 특정 프로세스에 특정 호출을 추적하는 작은 파일을 생성한다.
1) open() 함수 추적
frida-ps -U
명령어로com.android.chrome
프로세스가 동작하고 있는지 확인.frida-trace -i "open" -U com.android.chrome
를 사용해open()
함수 추적__handlers__\libc.so\open.js
파일을 보면 open() 함수를 후킹하여 open() 함수를 호출할 때 마다 화면에 출력하는 것을 알 수 있다.
2) open() 함수 인수 추적
open()
함수의 호출 인수를 보면args[0]
가 파일경로,args[1]
가 flags 값이라는 것을 알 수 있다. (→ 참고 : https://man7.org/linux/man-pages/man2/open.2.html)open.js
파일을 경로가 저장된 메모리주소와 플래그 값이 출력되도록 수정한다.
- 추가로
Memory.readUtf8String()
을 사용하여 파일경로를 출력할 수 있다.
1
2
3
onEnter(log, args, state){
log('open(pathname=' + Memory.readUtf8String(args[0]) + ', flags=' + args[1] + ')');
},
This post is licensed under CC BY 4.0 by the author.