Language
한국어

[FRIDA] return 값 출력하기

2016.11.01 11:01

lispro06 조회 수:821

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()