ZDE | Подмена устройства через Magisk

  • Автор темы Автор темы Dmitriy Ka
  • Дата начала Дата начала

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
949
Реакции
734
Баллы
93
Дисклеймер

Данный скрипт создан исключительно в образовательных целях. Автор не несёт ответственности за последствия его использования. Вся ответственность за запуск, выполнение и возможные последствия полностью ложится на пользователя.


Всем привет, с вами Дмитрий!

Вашему вниманию представляю готовый шаблон (C#-кубик), который автоматизирует подмену устройства через Magisk. Инструмент генерирует скрипт на основе JSON-данных LSP из ZennoDroid, помещает его в рабочую папку Magisk и реализует подмену после перезагрузки устройства. После перезагрузки устройства в "Менеджере Устройств" ZennoDroid будет отображаться новое устройство с подменёнными параметрами. Возврат к исходным данным устройства выполняется удалением скрипта Magisk и перезагрузкой телефона.

Требования
  • Реальный телефон на Android с установленными Magisk и LSPosed.
  • Наличие файлового менеджера с root-доступом (например, Root Explorer) для доступа к папке скриптов /data/adb/post-fs-data.d/

Как это работает (кратко)
  1. Кубик получает JSON из API LSP ZennoDroid.
  2. На основе полученных данных, формирует Magisk-скрипт для подмены.
  3. Скрипт сохраняется в файл /data/adb/post-fs-data.d/99-spoof.sh
  4. После перезагрузки устройства, скрипт выполняется при старте и появляется новое устройство с новыми параметрами.
*Чтобы вернуть оригинальное устройство — удалите файл 99-spoof.sh из /data/adb/post-fs-data.d/ и перезагрузите телефон.

Как использовать в своих проектах
Скопируйте кубик в свой проект, либо добавьте в коллекцию "Zenno C# Сниппеты", чтобы быстрей и удобней вставлять готовый код.
Код кубика открыт для всех, можете вносить правки под свои задачи.

 

Вложения

Последнее редактирование:
Не совсем понял как работает Ваш шаблон

Делаю стандартный код

var json = instance.DroidInstance.Settings.GenerateRandomLSPosedSettings(project.Profile.Country); instance.DroidInstance.Settings.SetLSPosedSettings(json); project.Variables["warn_json"].Value = json;

В настройках всё отлично видно , все подмены


Выполняю Ваш шаблон , ребут , появляется новое устройство , ок, но в настройках как было так и есть, то есть подмены нет

UPD. Пардон ,Хром всё увидел как надо
 
Последнее редактирование:
  • Спасибо
Реакции: Dmitriy Ka
Какие плюсы подмены в данном методе относительно стандартного метода?
 
Какие плюсы подмены в данном методе относительно стандартного метода?
Главный плюс, что данные подменяются уже во время загрузки. Некоторые приложения могут на этапе загрузки собирать определённые данные и потом при подмене через LSP будут понимать, что вы что-то подозрительное делаете. Ну и разный тип подмены, данный метод работает на уровне getprop, а LSP на уровне Java-хуков.
 
Главный плюс, что данные подменяются уже во время загрузки. Некоторые приложения могут на этапе загрузки собирать определённые данные и потом при подмене через LSP будут понимать, что вы что-то подозрительное делаете. Ну и разный тип подмены, данный метод работает на уровне getprop, а LSP на уровне Java-хуков.
Как понять что приложение видит подмену и требуется подмена на уровне getprop ?
 
Как понять что приложение видит подмену и требуется подмена на уровне getprop ?
Например вы регистрируете аккаунт, делаете подмену через LSP, но это не помогает. Стоит попробовать сделать подмену на этапе загрузки, хотя это тоже не гарантирует на 100% что сработает.
 
Вопрос возник , а как повторно подгрузить так же данные ?
То есть сгенерировали ребут отработали и потом чтобы повторно подгрузить данные для работы
 
Вопрос возник , а как повторно подгрузить так же данные ?
То есть сгенерировали ребут отработали и потом чтобы повторно подгрузить данные для работы
Сохранить Json и немного переделать скрипт, чтобы данные не генерировались, а брались из готового Json
 
Некоторые пропы (gsm.sim.operator.iso-country итп), завязаны на модем и будут периодически обновляться системой и модуль магиск модуль не спасет.
 
  • Спасибо
Реакции: RipWay и Dmitriy Ka
Спасибо, удалось сменить устройство но гугл не схавал, подскажите файл скрипта нужно удалять только чтобы вернуть назад значения или всегда после смены устройства? может через этот файл палево или каким образлм гугл чекает?
 
Последнее редактирование:
Спасибо, удалось сменить устройство но гугл не схавал, подскажите файл скрипта нужно удалять только чтобы вернуть назад значения или всегда после смены устройства? может через этот файл палево или каким образлм гугл чекает?
Гугл сложно обыграть на его поле, он слишком много знает, этого скрипта точно будет мало.
Скрпит нужно удалять если хотит вернуть данные телефона обратно, если еще раз нужно подменять, то удалять скрит не надо, просто еще раз выполняете и перезагружаете, появится новое устройство.
 
  • Спасибо
Реакции: nvrskozzy
Гугл сложно обыграть на его поле, он слишком много знает, этого скрипта точно будет мало.
Скрпит нужно удалять если хотит вернуть данные телефона обратно, если еще раз нужно подменять, то удалять скрит не надо, просто еще раз выполняете и перезагружаете, появится новое устройство.
ок спасибо, я удалил руками через Root Explorer и теперь запуск си снипета не создаёт новый файл, собственно и подмены не происходит, в чем может быть причина?
 
ок спасибо, я удалил руками через Root Explorer и теперь запуск си снипета не создаёт новый файл, собственно и подмены не происходит, в чем может быть причина?
Очень странная ситуация, нужно визуально посмотреть.
Если ошибок скрипта нет и после перезагрузки не происходит подмена, нужно дебажить скрипт и смотреть, что происходит во время записи скрипта. Возможно удалили директорию или изменили ее права (что вряд ли)
 
Очень странная ситуация, нужно визуально посмотреть.
Если ошибок скрипта нет и после перезагрузки не происходит подмена, нужно дебажить скрипт и смотреть, что происходит во время записи скрипта. Возможно удалили директорию или изменили ее права (что вряд ли)
похоже это от того что я убрал рут права с SharedUID оболочки, как вернул скрипт появился! сейчас все ок
 
  • Спасибо
Реакции: Dmitriy Ka
после подмены в трее идет завершение обновление android системы, как-то так. это норма? я всё думаю где причина палева гугла)
 
Здравствуйте!

Не подскажите как Ваш код адаптировать под актуальный код генерации?


код:
Развернуть Свернуть Копировать
var filter = new DeviceFilter();
filter.Country = "ru";
filter.Version = "12|13|14|15";
filter.GpuVendor = "Qualcomm|ARM";

var options = new DeviceOptions();
options.AddCanvasNoise = false;
options.AddGpu = true;

var json = instance.DroidInstance.Settings.GenerateRandomLSPosedSettings(filter, options);
instance.DroidInstance.Settings.SetLSPosedSettings(json);

Проблема возникла на моменте GPU
 
Здравствуйте!

Не подскажите как Ваш код адаптировать под актуальный код генерации?


код:
Развернуть Свернуть Копировать
var filter = new DeviceFilter();
filter.Country = "ru";
filter.Version = "12|13|14|15";
filter.GpuVendor = "Qualcomm|ARM";

var options = new DeviceOptions();
options.AddCanvasNoise = false;
options.AddGpu = true;

var json = instance.DroidInstance.Settings.GenerateRandomLSPosedSettings(filter, options);
instance.DroidInstance.Settings.SetLSPosedSettings(json);

Проблема возникла на моменте GPU

Здравствуйте, вам нужно добавить эту часть:

C#:
Развернуть Свернуть Копировать
var filter = new DeviceFilter();
filter.Country = "ru";
filter.Version = "12|13|14|15";
filter.GpuVendor = "Qualcomm|ARM";

var options = new DeviceOptions();
options.AddCanvasNoise = false;
options.AddGpu = true;

Верней заменить мой кусок кода на ваш новый, и все должно работать.
В чем именно проблема возникла?
 
Здравствуйте, вам нужно добавить эту часть:

C#:
Развернуть Свернуть Копировать
var filter = new DeviceFilter();
filter.Country = "ru";
filter.Version = "12|13|14|15";
filter.GpuVendor = "Qualcomm|ARM";

var options = new DeviceOptions();
options.AddCanvasNoise = false;
options.AddGpu = true;
Верней заменить мой кусок кода на ваш новый, и все должно работать.
В чем именно проблема возникла?

Это то я сделал , тут проблем нет , проблема как прописать GPU ,в коде как я понял нет именно GPU
 
Это то я сделал , тут проблем нет , проблема как прописать GPU ,в коде как я понял нет именно GPU
Я понял про что вы.
Как настроить эти данные для подмены через Magisk?
Тут я не подскажу, я не интересовался данным вопросом.
Можно поспрашивать ИИ. Скорей всего будут дополнительные пропсы, которые нужно будет добавить.
 
Я понял про что вы.
Как настроить эти данные для подмены через Magisk?
Тут я не подскажу, я не интересовался данным вопросом.
Можно поспрашивать ИИ. Скорей всего будут дополнительные пропсы, которые нужно будет добавить.


Доброго дня !

Прошу прощения, что вопрос выше был скомкан , сейчас сформулирую о чём говорю :

В Вашем шаблоне логика понятна, формируются параметры для подмены, далее идёт распаршивание и

sb.AppendLine($"resetprop ro.product.device {data.SelectToken("PhoneBoard").ToString()}");

Как пример

В новых генерациях добавлены новые параметры - GlVendor, GlRenderer и местами GlCanvasNoise

Вот и хотел узнать как их добавлять по аналогии с sb.AppendLine($"resetprop ro.product.device {data.SelectToken("PhoneBoard").ToString()}");


Или же с GPU на реальных устройствах лучше такого не проводить ?
 
Доброго дня !

Прошу прощения, что вопрос выше был скомкан , сейчас сформулирую о чём говорю :

В Вашем шаблоне логика понятна, формируются параметры для подмены, далее идёт распаршивание и

sb.AppendLine($"resetprop ro.product.device {data.SelectToken("PhoneBoard").ToString()}");

Как пример

В новых генерациях добавлены новые параметры - GlVendor, GlRenderer и местами GlCanvasNoise

Вот и хотел узнать как их добавлять по аналогии с sb.AppendLine($"resetprop ro.product.device {data.SelectToken("PhoneBoard").ToString()}");


Или же с GPU на реальных устройствах лучше такого не проводить ?
Да, я вас правильно понял.

Я не знаю какие именно нужно добавлять пропсы:
sb.AppendLine($"resetprop ro.product.device {data.SelectToken("PhoneBoard").ToString()}");
Это можно спросить у ИИ. Но так же спросить не приведёт ли это к окирпичиванию.
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)