Frida js 파일 사용법
- Frida를 이용해 js 파일을 사용하기 위해서는 사전 작업이 필요하다.
- 방법은 여러가지가 있겠지만 대표적인 2가지는 다음과 같다.
- 앱 프로세스 실행 후 자바스크립트 삽입
- 앱 프로세스 실행 전 자바스크립트 삽입
앱 프로세스 실행 후 자바스크립트 삽입
-
Frida를 이용해 후킹하기 위해선, 단말기나 에뮬레이터에서 특정 앱을 먼저 실행시키고 패키지 이름을 확인한 후,
-U
옵션을 이용하면 된다.
앱 프로세스 실행 전 자바스크립트 삽입
-
앱 프로세스 실행 전에 자바스크립트를 삽입하려면 프로세스를 spawn하여 자동으로 실행되게 한 후 접근한다. spawn은
-f
옵션을 사용하면 된다. --no-pause
옵션이 있다고 보았는데 이는 frida 15.2.2 버전 이상부터 더 이상 기본적으로 일시 중지 되지 않으므로 삭제된 것 같다.--pause
옵션을 통해 대상 프로세스에 연결될 때, 프로세스의 실행을 일시 중지 시킬 수 있다. 이 명령은 Frida가 프로세스에 영향을 주기 전에 프로세스를 안전하게 조작하고 분석할 수 있도록 해주며,%resume
명령을 통해서 프로세스를 다시 재개할 수 있다.
jadx frida 스니펫 이용하기
- jadx 도구는 아래와 같이 firda 스니펫 기능을 제공해준다. 따라서 이를 이용해 사용자가 조금 더 쉽게 firda 코드를 작성할 수 있다.
let Hardcode2Activity = Java.use("jakhar.aseem.diva.Hardcode2Activity");
Hardcode2Activity["access"].implementation = function (view) {
console.log(`Hardcode2Activity.access is called: view=${view}`);
this["access"](view);
};
로드된 모든 클래스를 열거하여 일치 항목 출력
- 아래 코드를 이용해서 모든 클래스를 열거하여 일치 항목을 출력할 수 있다.
Java.perform(function() {
Java.enumerateLoadedClasses( {
"onMatch": function(className) {
console.log(className)
},
"onComplete": function() {}
})
})
아래와 같이 CLI 환경에서 코드를 작성하여 후킹할 수 있지만 오타가 발생하면 긴 코드를 작성하기 까다로울 때가 있을 수 있다.
따로 test.js 파일을 만들고 -l
옵션을 통해 스크립트 파일을 불러올 수 있다. -U
옵션과 같이 사용해준 후 js파일의 경로를 입력한 후 패키지명을 입력하면 된다.
안드로이드 액티비티 onResume() 함수 재작성
-
안드로이드 액티비티의 생명 주기는
onCreate() -> onStart() -> onResume()
함수를 실행하고 나서 액티비티가 포그라운드 실행상태가 된다.onResume()
함수는 해당 프로세스가 시작될 때 실행되거나 , 홈 화면 또는 다른 앱으로 전환했다가 다시 돌아오는 경우 실행된다. -
onResume()
함수가 실행될 때마다 로그가 출력되도록 작성하면 아래와 같다. 이 함수는 android.app.Activity 클래스에 존재한다.
힙에서 인스턴스화된 객체 찾기
-
android.view.View
는 앱에서 가시적으로 보이는 모든 것들을 가리키는 클래스를 말한다. -
Java.choose
API를 사용하여 힙을 스캔한 뒤 View 클래스의 인스턴스를 찾으면 로그를 출력하는 예는 다음과 같다.
댓글남기기