Skip to content

Instantly share code, notes, and snippets.

@mengskysama
Last active April 1, 2021 02:09
Show Gist options
  • Save mengskysama/5c5353935b75f77c703e8102d71e3dd7 to your computer and use it in GitHub Desktop.
Save mengskysama/5c5353935b75f77c703e8102d71e3dd7 to your computer and use it in GitHub Desktop.
// frida -U --no-pause -l pri_hook.js -f APP_PACKAGE_NAME
function gettime() {
var d = new Date();
return d.getTime();
}
function getdic() {
return {
"android.net.wifi.WifiInfo": ["getSSID", "getBSSID", "getMacAddress", "getSubscriberId", "getSimSerialNumber", "getLine1Number", "getCellLocation", "getAllCellInfo"],
"android.net.wifi.WifiManager": ["getScanResults"],
"android.telephony.TelephonyManager": ["getDeviceId", "getImei", "getNetworkOperator", "getSimCountryIso"],
"android.provider.Settings$Secure": ["getString"],
"android.app.ActivityManager": ["getRunningTasks"],
"android.app.ApplicationPackageManager": ["getInstalledApplications", "getInstalledPackages"],
"android.hardware.SensorManager": ["registerListener"],
"android.accounts.AccountManager": ["getAccounts", "getAccountsByType"],
"android.bluetooth.le.BluetoothLeScanner": ["startScan"],
"android.location.LocationManager": ["LocationManager"],
"android.media.MediaRecorder": ["finalize"]
}
}
function hookAllOverloads(targetClass, targetMethod) {
Java.perform(function () {
var targetClassMethod = targetClass + '.' + targetMethod;
var hook = Java.use(targetClass);
try {
var overloadCount = hook[targetMethod].overloads.length;
}
catch (e) {
send({ "err": targetClass + '.' + targetMethod })
}
for (var i = 0; i < overloadCount; i++) {
hook[targetMethod].overloads[i].implementation = function () {
var retval = this[targetMethod].apply(this, arguments);
var name = targetClass + '.' + targetMethod
var time = gettime();
var stack = Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Exception").$new());
var res = { "name": name, "time": time, "stack": stack };
send(res);
console.log(res)
return retval;
}
}
});
}
var dic = getdic()
for (var key1 in dic) {
for (var key2 in dic[key1]) {
hookAllOverloads(key1, dic[key1][key2])
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment