Hello Developer, Hope you guys are doing great. Today at Tutorial Guruji Official website, we are sharing the answer of How to get ANDROID_ID with Frida without wasting too much if your time.
The question is published on by Tutorial Guruji team.
The question is published on by Tutorial Guruji team.
The ANDROID_ID is unique in each application in Android.
To get the ANDROID_ID
with Java inside Android I amd using this code:
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"); }
But I want to run it inside some other application on my andoird phone.
I wanted to use Frida for this.
I am loading my injected script with 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()
But inside my script I don’t understand how to call it, this is what I tried:
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"); });
But it doesn’t print the androidId
, it only prints:
Script loaded successfully Inside java perform function
Answer
- Secure is inner class so you need to use
$
- inner classes will be compiled to ClassName$InnerClassName
- To get
CotentResolver
you can invokegetContentResolver
without casting.
$ frida -Uf com.app.example --no-pause ____ / _ | Frida 12.1.2 - A world-class dynamic instrumentation toolkit | (_| | > _ | Commands: /_/ |_| help -> Displays the help system . . . . object? -> Display information about 'object' . . . . exit/quit -> Exit . . . . . . . . More info at http://www.frida.re/docs/home/ Spawned `com.app.example`. Resuming main thread! [Android::com.app.example]-> function getContext() { return Java.use('android.app.ActivityThread').currentApplication().getApplicationContext().getContentResolver(); } function logAndroidId() { console.log('[?]', Java.use('android.provider.Settings$Secure').getString(getContext(), 'android_id')); } undefined [Android::com.app.example]-> Java.perform(logAndroidId) [?] 52d1497b52bf8a11 undefined [Android::com.app.example]->
We are here to answer your question about How to get ANDROID_ID with Frida - If you find the proper solution, please don't forgot to share this with your team members.