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

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
925
Благодарностей
690
Баллы
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# Сниппеты", чтобы быстрей и удобней вставлять готовый код.
Код кубика открыт для всех, можете вносить правки под свои задачи.

 

Вложения

Последнее редактирование:

GeGold

Client
Регистрация
28.09.2015
Сообщения
828
Благодарностей
379
Баллы
63
Не совсем понял как работает Ваш шаблон

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


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


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


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

UPD. Пардон ,Хром всё увидел как надо
 
Последнее редактирование:
  • Спасибо
Реакции: Dmitriy Ka

RipWay

Client
Регистрация
21.11.2013
Сообщения
112
Благодарностей
48
Баллы
28
Какие плюсы подмены в данном методе относительно стандартного метода?
 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
925
Благодарностей
690
Баллы
93
Какие плюсы подмены в данном методе относительно стандартного метода?
Главный плюс, что данные подменяются уже во время загрузки. Некоторые приложения могут на этапе загрузки собирать определённые данные и потом при подмене через LSP будут понимать, что вы что-то подозрительное делаете. Ну и разный тип подмены, данный метод работает на уровне getprop, а LSP на уровне Java-хуков.
 

RipWay

Client
Регистрация
21.11.2013
Сообщения
112
Благодарностей
48
Баллы
28
Главный плюс, что данные подменяются уже во время загрузки. Некоторые приложения могут на этапе загрузки собирать определённые данные и потом при подмене через LSP будут понимать, что вы что-то подозрительное делаете. Ну и разный тип подмены, данный метод работает на уровне getprop, а LSP на уровне Java-хуков.
Как понять что приложение видит подмену и требуется подмена на уровне getprop ?
 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
925
Благодарностей
690
Баллы
93
Как понять что приложение видит подмену и требуется подмена на уровне getprop ?
Например вы регистрируете аккаунт, делаете подмену через LSP, но это не помогает. Стоит попробовать сделать подмену на этапе загрузки, хотя это тоже не гарантирует на 100% что сработает.
 

GeGold

Client
Регистрация
28.09.2015
Сообщения
828
Благодарностей
379
Баллы
63
Вопрос возник , а как повторно подгрузить так же данные ?
То есть сгенерировали ребут отработали и потом чтобы повторно подгрузить данные для работы
 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
925
Благодарностей
690
Баллы
93
Вопрос возник , а как повторно подгрузить так же данные ?
То есть сгенерировали ребут отработали и потом чтобы повторно подгрузить данные для работы
Сохранить Json и немного переделать скрипт, чтобы данные не генерировались, а брались из готового Json
 

westruk

Client
Регистрация
30.03.2020
Сообщения
395
Благодарностей
128
Баллы
43
Некоторые пропы (gsm.sim.operator.iso-country итп), завязаны на модем и будут периодически обновляться системой и модуль магиск модуль не спасет.
 
  • Спасибо
Реакции: RipWay и Dmitriy Ka

nvrskozzy

Client
Регистрация
11.07.2025
Сообщения
195
Благодарностей
18
Баллы
18
Спасибо, удалось сменить устройство но гугл не схавал, подскажите файл скрипта нужно удалять только чтобы вернуть назад значения или всегда после смены устройства? может через этот файл палево или каким образлм гугл чекает?
 
Последнее редактирование:

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
925
Благодарностей
690
Баллы
93
Спасибо, удалось сменить устройство но гугл не схавал, подскажите файл скрипта нужно удалять только чтобы вернуть назад значения или всегда после смены устройства? может через этот файл палево или каким образлм гугл чекает?
Гугл сложно обыграть на его поле, он слишком много знает, этого скрипта точно будет мало.
Скрпит нужно удалять если хотит вернуть данные телефона обратно, если еще раз нужно подменять, то удалять скрит не надо, просто еще раз выполняете и перезагружаете, появится новое устройство.
 
  • Спасибо
Реакции: nvrskozzy

nvrskozzy

Client
Регистрация
11.07.2025
Сообщения
195
Благодарностей
18
Баллы
18
Гугл сложно обыграть на его поле, он слишком много знает, этого скрипта точно будет мало.
Скрпит нужно удалять если хотит вернуть данные телефона обратно, если еще раз нужно подменять, то удалять скрит не надо, просто еще раз выполняете и перезагружаете, появится новое устройство.
ок спасибо, я удалил руками через Root Explorer и теперь запуск си снипета не создаёт новый файл, собственно и подмены не происходит, в чем может быть причина?
 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
925
Благодарностей
690
Баллы
93
ок спасибо, я удалил руками через Root Explorer и теперь запуск си снипета не создаёт новый файл, собственно и подмены не происходит, в чем может быть причина?
Очень странная ситуация, нужно визуально посмотреть.
Если ошибок скрипта нет и после перезагрузки не происходит подмена, нужно дебажить скрипт и смотреть, что происходит во время записи скрипта. Возможно удалили директорию или изменили ее права (что вряд ли)
 

nvrskozzy

Client
Регистрация
11.07.2025
Сообщения
195
Благодарностей
18
Баллы
18
Очень странная ситуация, нужно визуально посмотреть.
Если ошибок скрипта нет и после перезагрузки не происходит подмена, нужно дебажить скрипт и смотреть, что происходит во время записи скрипта. Возможно удалили директорию или изменили ее права (что вряд ли)
похоже это от того что я убрал рут права с SharedUID оболочки, как вернул скрипт появился! сейчас все ок
 
  • Спасибо
Реакции: Dmitriy Ka

nvrskozzy

Client
Регистрация
11.07.2025
Сообщения
195
Благодарностей
18
Баллы
18
после подмены в трее идет завершение обновление android системы, как-то так. это норма? я всё думаю где причина палева гугла)
 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
925
Благодарностей
690
Баллы
93

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