TLDR フリーダを使用して、Android アプリで未使用のメソッドを呼び出し、その値を取得しようとしています。現在、スクリプトの出力に何も返されていません。
Android アプリのコード:
package securisec.com.methods;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public static String strings(){
return "This is a string method";
}
}
ご覧のとおり、strings
メソッドは使用されません。Frida を使用してこのメソッドを呼び出し、戻り値を取得できるようにしたいと考えています。
これは、動作していない私の python スクリプトです。
import frida
from time import sleep
call_back_message = ''
def on_message(message, payload):
global call_back_message
if message['type'] == 'send':
call_back_message = message['payload']
return call_back_message
def object_hooking(comName, className, method):
process = frida.get_usb_device()
pid = process.spawn([comName])
process.resume(pid)
sleep(1)
js = """
Java.perform(function()
{
var getVal = Java.use('%s.%s');
console.log(getVal)
var cons = getVal.$new();
console.log(cons)
var solution = cons.%s;
var send_it = solution.toString();
send(send_it);
});""" % (comName, className, method)
session = process.attach(pid)
script = session.create_script(js)
script.on('message', on_message)
script.load()
return call_back_message
print(object_hooking(
comName='securisec.com.methods',
className='MainActivity',
method='strings()'
))