ANDROID_ID уникален для каждого приложения в Android.
Чтобы получить ANDROID_ID
с Java внутри Android, я использую этот код:
import android.content.Context;
import android.content.ContentResolver;
import android.provider.Settings;
protected void onCreate(...) {
context = (Context)this;
String androidId = Settings.Secure.getString((ContentResolver)context.getContentResolver(), (String)"android_id");
}
Но я хочу запустить его в каком-то другом приложении на моем andoird телефоне.
Iхотел использовать Frida для этого.
Я загружаю свой внедренный скрипт с помощью Python:
import frida
device = frida.get_usb_device()
pid = device.spawn(["com.target.app"])
device.resume(pid)
time.sleep(1) #Without it Java.perform silently fails
session = device.attach(pid)
script = session.create_script(open("jsfrida.js").read())
script.load()
#prevent the python script from terminating
raw_input()
Но внутри моего скрипта я не понимаю, как его вызвать, вот что я пробовал:
Java.perform(function (){
console.log("Inside java perform function");
var ActivityThread = Java.use('android.app.ActivityThread');
var Context = Java.use('android.content.Context');
var settings = Java.use('android.provider.Settings.Secure');
var ctx = Java.cast(ActivityThread.currentApplication().getApplicationContext(), Context);
//console.log(ctx.getPackageName());
//console.log(ctx.getContentResolver());
var androidId = settings.Secure.getString(ctx.getContentResolver(), "android_id");
console.log(androidId);
console.log("END");
});
Но он не печатает androidId
, он печатает только:
Script loaded successfully
Inside java perform function