Frida 스크립트를 작성할 때면 가장 많이 사용하는 함수는 당연코 overload가 아닐까 싶다.
복습할 겸 overload 매개변수 유형을 정리해보겠다.
- Frida 오버로딩
하나의 클래스에서 동일한 이름을 가진 메소드가 존재 시 각각 인자의 개수 및 타입에 따라 다르게 후킹할 때 사용
- 입력받는 인수가 스트링일 때
Java.perform(function() { var File = Java.use(java.io.File); // File 클래스 사용 var CheckRoot = File.$init.overload("java.lang.String", "java.lang.String"); //$init는 생성자 접근 시 사용 CheckRoot.implementation = function(arg1, arg2){ ... } })
- 입력받는 인수가 Boolean, int, Byte 배열 형태인 경우
Java.perform(function() { var File = Java.use(java.io.File); // File 클래스 사용 var CheckRoot = File.$init.overload("boolean", "int", "[B"); //[B는 Byte 배열이라는 뜻 CheckRoot.implementation = function(arg1, arg2){ ... } })
- 그 외 입력받는 인수에 따른 대표적인 매개변수 유형
.overload() .overload('int’) // 정수 .overload('boolean') // True or False 논리 값 .overload('float') // 실수 .overload('[B') // byte 배열 .overload('java.io.File') // File 클래스 .overload('java.lang.String') // String 클래스 .overload('android.view.View') // View 클래스 .overload('android.app.Activity') // Activity 클래스 .overload('android.content.Context') // 콘텍스트 .overload('android.graphics.Bitmap') // Bitmap 클래스 .overload('java.util.List’) // List 클래스