public class Password
{
/////////////
public static String getPassword(Context paramContext)
{
return SharedPreferenceHelper.getValue(paramContext, "CONFIG_PASSWORD");
}
.....................
public static int getPasswordState(Context paramContext)
{
.............
}
............
}
상기와 같은 코드가 있을 때, return 값을 확인할 수 있는 코드이다.
Mainactivity 에 후킹하려는 함수를 넣어, Implementation for expected return value compatible with 'java.lang.String 에러가 발생하여, getPasswordState를 넣었더니 동작하였다.
정확한 내용은 좀 더 사례연구를 해봐야할 것 같고, 함수 호출 및 리턴 값 확인은 가능하였다.
[*] get code
[*] Testing PIN {'payload': 'getPassword', 'type': 'send'}
Done:"h12345"
import frida,sys
def print_result(message):
print ("[*] Testing PIN %s" %(message))
def on_message(message, data):
print_result(message)
jscode = """
Java.perform(function () {
// Function to hook is defined here
var MainActivity = Java.use("패키지명.클래스명');
MainActivity.getPasswordState.implementation = function (v) {
send('getPassword');
var a=this.getPassword(v);
console.log('Done:' + JSON.stringify(a));
};
});
"""
process = frida.get_usb_device().attach('패키지명')
script = process.create_script(jscode)
script.on('message', on_message)
print ("[*] get code")
script.load()
sys.stdin.read()
댓글 달기