ZDE Как убедиться что данные подменяются?

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 900
Благодарностей
2 634
Баллы
113
Код выглядит примерно так:
C#:
var droid = instance.DroidInstance;

// тут закрываю и очищаю все приложения которые нуждаются в замене

var filter = new DeviceFilter();
    filter.Version = "10";
string json = droid.Settings.GenerateRandomLSPosedSettings(project.Profile.Country, filter);
var dic = Global.ZennoLab.Json.JsonConvert.DeserializeObject< Dictionary<string, object>>(json);
dic["AdsId"] = Guid.NewGuid().ToString(); // Добавляю недостающий параметр

json = Global.ZennoLab.Json.JsonConvert.SerializeObject(dic);

// устанавливаю настройки...
droid.App.Close("com.zennolab.zennodroid");
Thread.Sleep(2*1000);   
droid.Settings.SetLSPosedSettings(json);
droid.App.Open("com.zennolab.zennodroid");
Thread.Sleep(2*1000);
И вот, запускаю приложение через Frida примерно так:
C#:
var droid = instance.DroidInstance;
var app = "com.***.***"; // приложение
var source = project.Variables["script"].Value;
 
var device = droid.FridaDevice;
    device.InstallAndRunServer();
var pid = device.Spawn(app);
var session = device.Attach(pid);
var script = session.CreateScript(source, "myScript");
    script.Message += (o, e) => project.SendInfoToLog(e.Message);
    script.Load();

    droid.Input.Shell(string.Format("settings put global http_proxy {0}:8080", "10.0.2.2")); // так как интернет идет по проводу
    device.Resume(pid);

Наблюдаю в Burp что настройки не применились.
Ок, закрываю Frida.
C#:
var droid = instance.DroidInstance;
string stop_proxy = droid.Input.Shell("settings put global http_proxy :0");
var device = droid.FridaDevice;
device.DetachSessionByScriptName("myScript");
Thread.Sleep(5*1000);
device.KillServer(); // после этой команды телефон ребутится...
Thread.Sleep(5*1000);
Иду в LSPosed, открываю модуль снимаю галочки, устанавливаю галочки.
Перезагружаю телефон.
Снова выполняю код.
Снова запускаю Frida.
Вижу, в запросах в Burp что данные изменились.
Закрываю Frida.
Телефон сам перезагружается (подвисает и потом перезагружается - может как-то по другому закрывать Frida чтобы телефон не улетал в перезагрузку ).
Уверенности в том, что там настройки подменяются у меня снова нет - снова выполняю процедуру.

Есть ли какой-то способ узнать хотя бы с каким UserAgent шлет свои запросы приложение?
Даже при наличии WebView на страничке приложения - JS код не отрабатывает (читал на форуме, что только в хроме работает - а у меня работа не в хроме).
C#:
return instance.DroidInstance.WebView.EvaluateScript("return window.navigator.userAgent");
Собственно хочется какой-то способ позволяющий на 100% определить в процессе выполнения шаблона что данные которые были подставлены действительно сейчас работают или не работают (такое часто бывает что не работают - и нужно ставить/снимать галочки и перезагружать телефон).
 

MaxTraff

Client
Регистрация
16.06.2024
Сообщения
65
Благодарностей
33
Баллы
18
C#:
droid.App.Close("com.zennolab.zennodroid");
....
droid.App.Open("com.zennolab.zennodroid");
А это разве нужно делать или к необходимости пришли опытным путем?

Мне на эмуляторах достаточно выполнить только droid.Settings.SetLSPosedSettings(json); и параметры подменены...

Переустановка приложения для которого предназначена подмена производится или только остановка и зачистка данных?
 
  • Спасибо
Реакции: BAZAg

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 900
Благодарностей
2 634
Баллы
113
C#:
droid.App.Close("com.zennolab.zennodroid");
....
droid.App.Open("com.zennolab.zennodroid");
А это разве нужно делать или к необходимости пришли опытным путем?
Я пока не знаю как правильно...
Просто начал встречаться с тем, что SetLSPosedSettings выбрасывает исключение.
А при закрытии и открытии com.zennolab.zennodroid ошибки нет.

Мне на эмуляторах достаточно выполнить только droid.Settings.SetLSPosedSettings(json); и параметры подменены...
На реальном телефоне возможно также должно быть достаточно этой инструкции, но почему-то SetLSPosedSettings время от времени выбрасывает ошибку. На форуме кто-то писал о том, что нужно закрывать com.zennolab.zennodroid - начал так делать - и проблема с ошибкой в этом месте пропала.

Переустановка приложения для которого предназначена подмена производится или только остановка и зачистка данных?
На сколько я понял в ZDE после установки приложения необходимо вручную выставлять галочки в LSPosed и перезагружать телефон.
Следовательно в моем случае приложение устанавливается только один раз - а дальше просто происходит закрытие -> очистка -> подмена -> запуск приложения.
 

MaxTraff

Client
Регистрация
16.06.2024
Сообщения
65
Благодарностей
33
Баллы
18
Попробую и я перезапускать... пока только в цикле несколько раз дергаю SetLSPosedSettings пока ошибку выдавать не перестанет.

Гарантий, что подмена сработает в нужном приложении наверное никак не получить, поэтому предлагать проверять в стороннем вроде "Device Id" / "VD Infos" / "самописе" смысла нет совсем...

Я правильно понимаю, что с помощью Frida проверка подмены параметров уже в нужном приложении уже сделана? Если нет, то я бы в эту сторону посмотрел - т.к. скрипт фриды вроде как в контексте приложения выполняется, соответственно и подмена на него же в данном случае и действует тоже. Просто сесть на какой-то стартовый интент и не пускать его дальше, пока не сделаешь свои провери и если все ок - то пускаешь работать его дальше.


У меня тут другая борьба сейчас идет по направлению "увернности" (непонятно только с кем - adb или zde) - команды иногда улетают в другое устройство, но это не так страшно - самое страшное, что бекап приложения с другого устройства приходит. И хрен вручную повторишь, чтобы репорт отправить, но за 200-300К запусков уже наловил таких глюков с десяток, только уже и логов не найдешь. Вот и думай, как таким пользоваться, когда и увернности нет и проверить не всегда проверишь, а проверяя еще и не уверен, что там проверяешь, а не где-то на другом телефоне =)))
 
  • Спасибо
Реакции: BAZAg

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 900
Благодарностей
2 634
Баллы
113
Попробую и я перезапускать... пока только в цикле несколько раз дергаю SetLSPosedSettings пока ошибку выдавать не перестанет.
Я также об этом думал (повторять в цикле пока не выйдет по успеху).
Но, не знаю что подкапотом SetLSPosedSettings находится.
Имею ввиду можно ли доверять (быть уверенным что данные были установлены успешно) успешному выполнению SetLSPosedSettings после того как он выполнился с неуспехом, действительно ли успех выполнения метода гарантирует что данные были установлены (проводятся ли под капотом соответствующие проверки).
Из-за чего и начал закрывать и открывать "com.zennolab.zennodroid", хотя в данный момент у меня также нет полной уверенности что это правильная логика (иначе бы SetLSPosedSettings по капотом имел бы именно закрытие и открытие "com.zennolab.zennodroid").

Гарантий, что подмена сработает в нужном приложении наверное никак не получить, поэтому предлагать проверять в стороннем вроде "Device Id" / "VD Infos" / "самописе" смысла нет совсем...
В данный момент после запуска приложения можно сделать бекап.
И тогда уже внутри поискать в каком-то json файле например модель телефона.
Правда создание бекапа и ковыряние в файлах - долгий процесс.
Хотя если вариантов других не будет - придется идти этим путем...
А хочется какой-то способ с помощью которого можно было бы просто вызвать метод - и получить результат, который после можно было бы сравнить с параметрами до подмены...

Я правильно понимаю, что с помощью Frida проверка подмены параметров уже в нужном приложении уже сделана? Если нет, то я бы в эту сторону посмотрел - т.к. скрипт фриды вроде как в контексте приложения выполняется, соответственно и подмена на него же в данном случае и действует тоже. Просто сесть на какой-то стартовый интент и не пускать его дальше, пока не сделаешь свои провери и если все ок - то пускаешь работать его дальше.
С Frida проблема в том, что после закрытия телефон уходит в перезагрузку.
Знаний пока как перехватывать запросы используя Frida у меня ещё нет.
В моем случае - просто выполняю стандартный скрипт для снятия сертификата.
После чего устанавливаю прокси от Burp.
И уже в самом Burp смотрю какие запросы отправляет приложение - и уже там вижу что например UserAgent от реального телефона или какой-то другой который сформирован из подмененных параметров.

У меня тут другая борьба сейчас идет по направлению "увернности" (непонятно только с кем - adb или zde) - команды иногда улетают в другое устройство, но это не так страшно - самое страшное, что бекап приложения с другого устройства приходит. И хрен вручную повторишь, чтобы репорт отправить, но за 200-300К запусков уже наловил таких глюков с десяток, только уже и логов не найдешь. Вот и думай, как таким пользоваться, когда и увернности нет и проверить не всегда проверишь, а проверяя еще и не уверен, что там проверяешь, а не где-то на другом телефоне =)))
По описанию похоже больше на проблему с zde.
На сколько я понимаю мне также с ней ещё придется встретится когда работа будет идти более чем с 1-м устройством...
 
  • Спасибо
Реакции: Hannes

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 482
Благодарностей
858
Баллы
113
Я также об этом думал (повторять в цикле пока не выйдет по успеху).
Но, не знаю что подкапотом SetLSPosedSettings находится.
Имею ввиду можно ли доверять (быть уверенным что данные были установлены успешно) успешному выполнению SetLSPosedSettings после того как он выполнился с неуспехом, действительно ли успех выполнения метода гарантирует что данные были установлены (проводятся ли под капотом соответствующие проверки).
Из-за чего и начал закрывать и открывать "com.zennolab.zennodroid", хотя в данный момент у меня также нет полной уверенности что это правильная логика (иначе бы SetLSPosedSettings по капотом имел бы именно закрытие и открытие "com.zennolab.zennodroid").


В данный момент после запуска приложения можно сделать бекап.
И тогда уже внутри поискать в каком-то json файле например модель телефона.
Правда создание бекапа и ковыряние в файлах - долгий процесс.
Хотя если вариантов других не будет - придется идти этим путем...
А хочется какой-то способ с помощью которого можно было бы просто вызвать метод - и получить результат, который после можно было бы сравнить с параметрами до подмены...


С Frida проблема в том, что после закрытия телефон уходит в перезагрузку.
Знаний пока как перехватывать запросы используя Frida у меня ещё нет.
В моем случае - просто выполняю стандартный скрипт для снятия сертификата.
После чего устанавливаю прокси от Burp.
И уже в самом Burp смотрю какие запросы отправляет приложение - и уже там вижу что например UserAgent от реального телефона или какой-то другой который сформирован из подмененных параметров.


По описанию похоже больше на проблему с zde.
На сколько я понимаю мне также с ней ещё придется встретится когда работа будет идти более чем с 1-м устройством...
Пробуйте другие прошивки для телефона, по своему опыту, на одной прошивке zd модуль вылетает после подмены, на другой прошивке после подмены гео телефон вырубается, на третьей крашатся гугл сервисы, на четвертой подмена через раз работает и тд и тп, андроид как я понял вообще лучше использовать девятый ну максимум 10, чем версия выше тем больше багов каких то. Я наверное прошивок 15 перепробовал прежде чем что-то достойной нашел. Совет, смотреть сразу в сторону кастомных
 
  • Спасибо
Реакции: BAZAg

MaxTraff

Client
Регистрация
16.06.2024
Сообщения
65
Благодарностей
33
Баллы
18
Имею ввиду можно ли доверять (быть уверенным что данные были установлены успешно) успешному выполнению SetLSPosedSettings после того как он выполнился с неуспехом, действительно ли успех выполнения метода гарантирует что данные были установлены (проводятся ли под капотом соответствующие проверки).
Я бы не доверял... Разработчик конечно может возразить. Но одно из первых с чем я столкнулся - это похожая ситуация с дампами приложений. Тебе сообщают, что дамп скачан или закачан на устройство успешно и ты даже файл видишь, только он битый или не полный и с ним уже ничего не сделаешь - нет бекапа - все потеряно. В результате я проверяю размер, валидность и целостность архива и то это не полная для надежности проверка + веду бекапы. А при заливке на устройство еще и проверяю, действительно ли нужные файлы на нем появились. Вот сейчас дописываю новую проверку - а на том ли устройтве мои данные оказались и с того ли устройства мне их скачали :bm:
 
  • Спасибо
Реакции: BAZAg

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