Релиз ZennoDroid Enterprise 2.4.4.0 — Сохранение данных приложения с аккаунтом •Экшен "Добавить аккаунт" •В генератор модели добавлены GPU Vendor и Renderer

ZennoLab Team

Super Moderator
Команда форума
Регистрация
22.01.2019
Сообщения
1 913
Благодарностей
4 194
Баллы
113


Весь список изменений 2.4.4.0

Добавлено:

+ Полностью переработаны экшены сохранения и восстановления данных приложения:
  • Добавлена поддержка Android 12 и выше.
  • Добавлено сохранение и восстановление выданных приложению разрешений.
  • Добавлено сохранение и восстановление связанного с приложением аккаунта, если данные аккаунта содержатся в хранилище аккаунтов, а не в приложении
    (аккаунт Google не поддерживается).
+ Добавлен экшен "Добавить аккаунт" (аккаунт Google не поддерживается).
+ В экшен "Получить файл" добавлена возможность получить файлы, к которым запрещен доступ.
+ В экшен "Отправить файл" добавлена возможность отправить файлы в разделы, к которым запрещен доступ (например, /data).
+ В API добавлена возможность искать по нескольким изображениям одновременно
Код:
var imgHashes = new string[] { "iVBOR...YII", "iVBOR...mCC" };
var rectangle = instance.DroidInstance.Screen.FindImage(imgHashes, null, 95, 60);
+ В API Appium добавлены новые свойства для работы с найденным элементом
IsDisplayed - элемент находится в видимой части экрана.
Rectangle - положение, размер, координаты границ элемента.
Код:
var element = instance.DroidInstance.AppiumDriver.FindElementByXPath("//*[@text='Google']");
if (element == null)
    throw new Exception("Элемент не найден");
if (!element.IsDisplayed)
    throw new Exception("Элемент вне экрана");

return element.Rectangle;
+ Модуль ZennoDroid обновлен до версии 1.11.0.
+ В API в генератор модели устройства добавлены GPU Vendor и Renderer
Код:
// Добавление шума Canvas Fingerprint
var json = instance.DroidInstance.Settings.GenerateRandomLSPosedSettings(project.Profile.Country);
var jSettings = Global.ZennoLab.Json.JsonConvert.DeserializeObject<Global.ZennoLab.Json.Linq.JObject>(json);
jSettings["GlCanvasNoise"] = new Random().Next(1, int.MaxValue);
json = Global.ZennoLab.Json.JsonConvert.SerializeObject(jSettings);
instance.DroidInstance.Settings.SetLSPosedSettings(json);
В случае проблем с отображением на экране нужно отключить генерацию GPU Vendor и Renderer.
Код:
// Отключение подмены GPU Vendor/Renderer
var json = instance.DroidInstance.Settings.GenerateRandomLSPosedSettings(project.Profile.Country);
var jSettings = Global.ZennoLab.Json.JsonConvert.DeserializeObject<Global.ZennoLab.Json.Linq.JObject>(json);
jSettings["GlVendor"] = string.Empty;
jSettings["GlRenderer"] = string.Empty;
json = Global.ZennoLab.Json.JsonConvert.SerializeObject(jSettings);
instance.DroidInstance.Settings.SetLSPosedSettings(json);
+ В API в генератор модели устройства добавлено имя устройства (маркетинговое название, о телефоне). Исправлена подмена имени устройства на некоторых прошивках.

Исправлено:

Экшен "Получить аккаунт" теперь возвращает метаданные аккаунта, необходимые для его корректного восстановления (аккаунт Google не поддерживается).
Исправлен критический баг при отправке файлов на устройство.

Где скачать?

ZennoDroid Enterprise 2.4.4.0 уже доступен в личном кабинете!
Также обновление будет предложено при запуске ProjectMaker.


Как сообщать о проблемах?

Просьба сообщать обо всех багах в Багтрекере, сопровождая проблему подробным описанием и сценарием воспроизведения. Это позволит нам быстро диагностировать и исправить ошибку.
 

tatarin

Client
Регистрация
28.10.2012
Сообщения
921
Благодарностей
157
Баллы
43
Попробывал получить куки из приложения (instagram), и как вы думаете это получилось? Конечно нет, пустая переменная, очередная функция которая заявлена в ZDE и не работает! 8-)
 

Anatoly79

Moderator
Регистрация
17.04.2020
Сообщения
620
Благодарностей
501
Баллы
93
Попробывал получить куки из приложения (instagram), и как вы думаете это получилось? Конечно нет, пустая переменная, очередная функция которая заявлена в ZDE и не работает! 8-)
Instagram не хранит файл с куками.
 

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 586
Благодарностей
906
Баллы
113
Instagram не хранит файл с куками.
Доброго времени суток, подскажите пожалуйста, у меня на 10 дроиде не работает экшн получить буфер обмена, задать буфер обмена, установить значение из буфера обмена windows и ввод русских символов при методе ввода "native input + clipboard". Это так и должно быть из за того что андроид старый или логи присылать?) Проблема эта ещё в 2.4.3 наблюдалась
 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
909
Благодарностей
642
Баллы
93
Попробывал получить куки из приложения (instagram), и как вы думаете это получилось? Конечно нет, пустая переменная, очередная функция которая заявлена в ZDE и не работает! 8-)
Тут проблема в самом Android как он хранит куки и их шифрует. Даже если бы получилось их выгрузить, все равно бы получили значения encrypted_value, а зашифрованные данные бесполезны, мы их никуда не сможем применить
 

Anatoly79

Moderator
Регистрация
17.04.2020
Сообщения
620
Благодарностей
501
Баллы
93
у меня на 10 дроиде не работает экшн получить буфер обмена, задать буфер обмена, установить значение из буфера обмена windows
У меня на Андроид 10 буфер работает. Нужно выполнить еще раз экшен "Задать буфер обмена" и сохранить вывод команды Adb Shell logcat -d в файл. Диагностика не нужна.
 
Последнее редактирование:

Anatoly79

Moderator
Регистрация
17.04.2020
Сообщения
620
Благодарностей
501
Баллы
93
  • Спасибо
Реакции: Sherminator

tatarin

Client
Регистрация
28.10.2012
Сообщения
921
Благодарностей
157
Баллы
43
реддит при попытке логина или регистрации:

 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
909
Благодарностей
642
Баллы
93
  • Спасибо
Реакции: tatarin

tatarin

Client
Регистрация
28.10.2012
Сообщения
921
Благодарностей
157
Баллы
43

finoz0

Client
Регистрация
20.01.2021
Сообщения
132
Благодарностей
27
Баллы
28
Не отрабатывает как надо новое восстановление данных приложения. Поставил галочки на разрешения и связанный аккаунт, указал куда сохранять архив .tar.gz, всё сохранилось вроде нормально. Запускаю тот же шаблон с тем же аккаунтом, на пункте восстановление(галочки стоят) получаю: Выполнение действия RestoreAppData Входная строка имела неверный формат. Галочки пробовал и включать и выключать, в любом случае ошибка та же. При этом видно, что какие-то действия выполняются, так как появляется окно с уведомлением про суперпользователя и ошибка не сразу появляется, а спустя 3-4 секунды работы кубика. При этом отдельно сохранил данные из "получить аккаунты" и сам акк восстановился без проблем. На предыдущей версии не было проблем с сохранением и восстановлением

Также вопрос, аккаунты и приложения сохранённые старым способом можно восстанавливать через новые кубики? В "добавить аккаунты" нечего вписать в metadata получается, а сохранение делалось без разрешений и аккаунтов. Или нужно в каждый войти старым способом, сохранить новым способом и потом уже через новые кубики будет работать?
 

Anatoly79

Moderator
Регистрация
17.04.2020
Сообщения
620
Благодарностей
501
Баллы
93

finoz0

Client
Регистрация
20.01.2021
Сообщения
132
Благодарностей
27
Баллы
28

Anatoly79

Moderator
Регистрация
17.04.2020
Сообщения
620
Благодарностей
501
Баллы
93
13, realme note 50. Попробовал сохранять без установленных галочек, тоже самое, как и если с 1 галочкой
Мы тестировали на таком телефоне, только с Android 14 и 15.
Отправьте мне в личку один нерабочий бэкап.
 

Dmitriy Ka

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

Баг работы "GlVendor" и "GlRenderer" из JSON для подмены LSP

В пятницу перешел на версию 2.4.4.0, а сегодня столкнулся с такой проблемой.
При генерации устройства для LSP, часто получаю такие параметры, при которых не работает экран, хотя дерево формируется и все нужные элементы есть. Проблема только в визуале.
На 2.4.3.0 такой проблемы не было, если я правильно понимаю это стало из-за новых данных, которые генерируются в JSON для подмены: "GlVendor" и "GlRenderer".

Если сгенерировать новые JSON, то экран будет отображать, при условие если GlVendor и GlRenderer получились правильные.
 

smallbastard

Client
Регистрация
05.07.2024
Сообщения
22
Благодарностей
3
Баллы
3
Подскажите пожалуйста каким образом работают кубики "Получение и добавление аккаунта"?
Сохраняю данные приложение БЕЗ аккаунта - очищаю приложение - удаляю аккаунты - восстанавливаю данные - добавляю аккаунты. Затем проверяю кубиком получить аккаунты и у меня разные значения metadata и происходит вылет сессии. Instagram.
 

Anatoly79

Moderator
Регистрация
17.04.2020
Сообщения
620
Благодарностей
501
Баллы
93
При генерации устройства для LSP, часто получаю такие параметры, при которых не работает экран, хотя дерево формируется и все нужные элементы есть. Проблема только в визуале.
Нужно выполнить генерацию модели. Закрыть/открыть браузер. Повторить несколько раз.
Черный экран всегда при одном и том же вендоре?
C#:
var json = instance.DroidInstance.Settings.GenerateRandomLSPosedSettings(project.Profile.Country);
instance.DroidInstance.Settings.SetLSPosedSettings(json);

var jSettings = Global.ZennoLab.Json.JsonConvert.DeserializeObject<Global.ZennoLab.Json.Linq.JObject>(json);
project.SendInfoToLog("Vendor:" + jSettings.Value<string>("GlVendor"));
 

Anatoly79

Moderator
Регистрация
17.04.2020
Сообщения
620
Благодарностей
501
Баллы
93

smallbastard

Client
Регистрация
05.07.2024
Сообщения
22
Благодарностей
3
Баллы
3
Это нормально. Какая версия Android?
ONEPLUS A5010 / Android 12
Тогда можете рассказать почему происходит вылет сессии и как этого избежать? Нужно переавторизовываться в инсте, следовательно где-то детект происходит
 

Anatoly79

Moderator
Регистрация
17.04.2020
Сообщения
620
Благодарностей
501
Баллы
93
данные приложение БЕЗ аккаунта - очищаю приложение - удаляю аккаунты - восстанавливаю данные - добавляю аккаунты.
А что за аккаунты удаляются и добавляются? Не вижу, чтобы Instagram пользовался менеджером аккаунтов.
После авторизации в Instagram нужно открыть вкладку Аккаунты и синхронизация (экшен команда Adb shell am start -a android.settings.SYNC_SETTINGS)
Там есть аккаунты связанные с Instagram? Сделайте скриншот страницы.
 

smallbastard

Client
Регистрация
05.07.2024
Сообщения
22
Благодарностей
3
Баллы
3
А что за аккаунты удаляются и добавляются? Не вижу, чтобы Instagram пользовался менеджером аккаунтов.
После авторизации в Instagram нужно открыть вкладку Аккаунты и синхронизация (экшен команда Adb shell am start -a android.settings.SYNC_SETTINGS)
Там есть аккаунты связанные с Instagram? Сделайте скриншот страницы.
Начну сначала. Есть проблема, что при сохранение и восстановление данных постоянно происходит вылет сессии инсты - меня выкидывает из аккаунта и нужно снова авторизоваться. Начал разбираться, в чём причина и наткнулся на кубики по сохранению и восстановлению аккаунта.
При запуске кубика получить аккаунты в переменную приходит такое значение:
[
{
"name": "72689******", (ВМЕСТО ***** ОСТАЛЬНЫЕ ЦИФРЫ, НЕ СТАЛ СЮДА ПОЛНЫЙ АЙДИ ЗАКИДЫВАТЬ)
"type": "www.instagram.com",
"password": null,
"metadata": "+DU/oosLSJV9EzGxkBuTxBSZqd1ozmKSoBYp9yjxPHlhePsSrMdwhU8F/J9emiVKdLDQAiMWBnSU5IETE9DVniXcpslzSOr1yQdvOmYroxDLDMuiLjw1AfyF3psFkU2ocvujJub+DXY92w5xnChRkuPc2OeHY7og0ra + ещё 10 строк кода"
}
]

Следовательно этот аккаунт где-то сохраняется, раз кубик такие данные выводит?
Дальше я сохраняю прилу, сохраняю этот аккаунт, очищаю прилу и удаляю аккаунт, восстанавливаю прилу и добавляю этот аккаунт. Затем захожу в приложение и вылет сессии.
Фото по Вашему запросу adb shell.
136115


Собственно вопрос, почему вылет то происходит? Меня где-то детектит, но ГДЕ?
 
  • Спасибо
Реакции: Anatoly79

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
909
Благодарностей
642
Баллы
93
Нужно выполнить генерацию модели. Закрыть/открыть браузер. Повторить несколько раз.
Черный экран всегда при одном и том же вендоре?
C#:
var json = instance.DroidInstance.Settings.GenerateRandomLSPosedSettings(project.Profile.Country);
instance.DroidInstance.Settings.SetLSPosedSettings(json);

var jSettings = Global.ZennoLab.Json.JsonConvert.DeserializeObject<Global.ZennoLab.Json.Linq.JObject>(json);
project.SendInfoToLog("Vendor:" + jSettings.Value<string>("GlVendor"));
Набросал такой код для теста

C#:
var droid = instance.DroidInstance;
var filter = new DeviceFilter();
filter.Brand = "POCO|Xiaomi";
filter.Version = "12";

var json = droid.Settings.GenerateRandomLSPosedSettings(project.Profile.Country, filter);

var data = Global.ZennoLab.Json.Linq.JObject.Parse(json);
var brand = data.SelectToken("PhoneBrand").ToString();
var version = data.SelectToken("PhoneFingerprint").ToString();
var vendor = data.SelectToken("GlVendor").ToString();
var render = data.SelectToken("GlRenderer").ToString();

droid.Settings.SetLSPosedSettings(json);
droid.App.CloseAll();
droid.App.Clean("com.yandex.browser");
droid.App.OpenUrl("https://ya.ru", "com.yandex.browser");

project.SendInfoToLog($"Brand: {brand}\n PhoneFingerprint: {version}\n GlVendor: {vendor} | GlRenderer: {render}");
Если отрубаем filter, то работает нормально(очень редко когда, черный экран), если включаем filter, то черный экран лезет очень часто.

На ARM - черный экран
На Qualcomm - ОК
 
Последнее редактирование:
  • Спасибо
Реакции: Anatoly79

Anatoly79

Moderator
Регистрация
17.04.2020
Сообщения
620
Благодарностей
501
Баллы
93
Следовательно этот аккаунт где-то сохраняется, раз кубик такие данные выводит?
Да, действительно, спустя некоторое время после входа в приложение в хранилище появляется аккаунт с набором данных id, имя, accesToken,... На вкладке настроек он не отображается.
Попробовал удалить этот аккаунт, у меня это не привело к разлогину. Нужно проверить:
  1. Авторизуйтесь в приложении.
  2. Сделайте бэкап приложения (instagram_1.tar.gz) вместе со связанным аккаунтом (тип www.instagram.com).
  3. Отключите интернет.
  4. Очистите приложение и удалите связанный аккаунт
  5. Восстановите бэкап и после этого сделайте еще один бэкап (instagram_2.tar.gz)
  6. После этого включите интернет и запустите приложение, дождитесь вылета из сессии и сделайте бэкап (instagram_3.tar.gz)
Скиньте мне в личку все три бэкапа.
 
  • Спасибо
Реакции: smallbastard

smallbastard

Client
Регистрация
05.07.2024
Сообщения
22
Благодарностей
3
Баллы
3
Да, действительно, спустя некоторое время после входа в приложение в хранилище появляется аккаунт с набором данных id, имя, accesToken,... На вкладке настроек он не отображается.
Попробовал удалить этот аккаунт, у меня это не привело к разлогину. Нужно проверить:
  1. Авторизуйтесь в приложении.
  2. Сделайте бэкап приложения (instagram_1.tar.gz) вместе со связанным аккаунтом (тип www.instagram.com).
  3. Отключите интернет.
  4. Очистите приложение и удалите связанный аккаунт
  5. Восстановите бэкап и после этого сделайте еще один бэкап (instagram_2.tar.gz)
  6. После этого включите интернет и запустите приложение, дождитесь вылета из сессии и сделайте бэкап (instagram_3.tar.gz)
Скиньте мне в личку все три бэкапа.
Интернет отключаю только на телефоне, я правильно понял? Последний бэкап нужно делать ПОСЛЕ ВЫЛЕТА (без авторизации последующей)?
 

Anatoly79

Moderator
Регистрация
17.04.2020
Сообщения
620
Благодарностей
501
Баллы
93
  • Спасибо
Реакции: smallbastard

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