Приветствую всех, столкнулся с такой проблемой, как подмена разрешения экрана на реальном устройстве с помощью инжекта кода Frida
Проблема в том, что приложение вызывает функцию getWindowManager и я так полагаю, что при получении разрешения экрана, оно не вызывает функцию getMetrics, предположительно, оно используется функцию getDefaultDisplay() и получает оттуда данные, подмена функции и значений в getMetrics не дает результатов, приложение все равно видит оригинальные параметры устройства, изменить данные в getDefaultDisplay к сожалению я не нашел как
Проблема в том, что приложение вызывает функцию getWindowManager и я так полагаю, что при получении разрешения экрана, оно не вызывает функцию getMetrics, предположительно, оно используется функцию getDefaultDisplay() и получает оттуда данные, подмена функции и значений в getMetrics не дает результатов, приложение все равно видит оригинальные параметры устройства, изменить данные в getDefaultDisplay к сожалению я не нашел как
JavaScript:
Java.perform(function() {
try {
var display = Java.use('android.view.Display');
var Activity = Java.use("android.app.Activity");
display.getMetrics.overload('android.util.DisplayMetrics').implementation = function(metrics) {
console.log('android.util.DisplayMetrics getMetrics');
this.getMetrics(metrics);
metrics.widthPixels.value = 1920;
metrics.heightPixels.value = 1080;
metrics.densityDpi.value = 420;
}
Activity.getWindowManager.implementation = function() {
console.log('getWindowManager');
var windowManager = this.getWindowManager();
var display = windowManager.getDefaultDisplay();
var metrics = Java.use("android.util.DisplayMetrics").$new();
display.getMetrics(metrics);
console.log(windowManager.getDefaultDisplay());
metrics.widthPixels.value = 1920;
metrics.heightPixels.value = 1080;
metrics.densityDpi.value = 420;
console.log(metrics);
console.log(windowManager.getDefaultDisplay());
return windowManager;
};
} catch (error) {
console.log('Msg:' + error.stack)
}
});