Frida를 사용하여 특정 함수를 후킹하고 해당 함수를 호출한 클래스의 정보를 출력하는 것이 가능합니다.
다음은 Java의 com.test.test 클래스의 test() 함수를 후킹하고, 해당 함수를 호출한 클래스의 정보를 출력하는 예시 스크립트입니다.
Java.perform(function() { var testClass = Java.use('com.test.test'); testClass.test.implementation = function() { // 스택 추적을 사용하여 호출자의 정보를 얻습니다. var stackTrace = Java.use("java.lang.Exception").$new().getStackTrace(); // 호출자의 클래스 이름을 출력합니다. if (stackTrace.length > 1) { console.log("Called from: " + stackTrace[1].getClassName()); } // 원래의 함수를 호출합니다. return this.test.apply(this, arguments); }; });
위 코드는 com.test.test 클래스의 test() 함수를 후킹하고, 해당 함수를 호출한 클래스의 이름을 출력합니다.
스택 추적을 통해 호출자의 정보를 가져올 수 있으며, 필요에 따라 더 자세한 정보도 얻을 수 있습니다.
호출자의 정보를 얻기 위해 여기서는 Java의 Exception 클래스를 사용하여 스택 추적을 수행하고 있습니다.
getStackTrace() 메서드를 사용하면 현재 스택의 상태를 배열로 얻을 수 있으며, 이를 통해 호출자의 클래스 정보를 얻을 수 있습니다.
Frida를 사용하여 특정 함수를 후킹하고 해당 함수를 호출한 클래스의 정보를 출력하는 것이 가능합니다.
다음은 Java의 com.test.test 클래스의 test() 함수를 후킹하고, 해당 함수를 호출한 클래스의 정보를 출력하는 예시 스크립트입니다.
Java.perform(function() { var testClass = Java.use('com.test.test'); testClass.test.implementation = function() { // 스택 추적을 사용하여 호출자의 정보를 얻습니다. var stackTrace = Java.use("java.lang.Exception").$new().getStackTrace(); // 호출자의 클래스 이름을 출력합니다. if (stackTrace.length > 1) { console.log("Called from: " + stackTrace[1].getClassName()); } // 원래의 함수를 호출합니다. return this.test.apply(this, arguments); }; });
위 코드는 com.test.test 클래스의 test() 함수를 후킹하고, 해당 함수를 호출한 클래스의 이름을 출력합니다.
스택 추적을 통해 호출자의 정보를 가져올 수 있으며, 필요에 따라 더 자세한 정보도 얻을 수 있습니다.
호출자의 정보를 얻기 위해 여기서는 Java의 Exception 클래스를 사용하여 스택 추적을 수행하고 있습니다.
getStackTrace() 메서드를 사용하면 현재 스택의 상태를 배열로 얻을 수 있으며, 이를 통해 호출자의 클래스 정보를 얻을 수 있습니다.