Релиз ZennoDroid Enterprise 2.4.3.0 — Экшен "Настройка GPU" • Экшен "Настройки Appium" • Установка собственных правил проксирования

ZennoLab Team

Super Moderator
Команда форума
Регистрация
22.01.2019
Сообщения
2 092
Реакции
4 583
Баллы
113
N8EZVI.png


Добавлен экшен "Настройка GPU"

Экшен позволяет:
  • указать в приложениях GPU Vendor и GPU Renderer. В браузерах изменяет параметры WebGL: Unmasked Vendor, Unmasked Renderer;
  • добавить шум для Canvas Fingerprint (в приложениях и в браузерах).

В API добавлены методы для подмены соответствующих параметров GPU. Свой код C#:
C#:
Развернуть Свернуть Копировать
// Шум может быть задан случайным или статичным значением (если нужно, чтобы Canvas Fingerprint не менялся каждый раз). WebGlNoise =  0 - отключить шум.
int noise = new Random().Next(1, int.MaxValue);
var settings = new {
        GlVendor =  "Qualcomm",
        GlRenderer = "Adreno (TM) 750",
        GlCanvasNoise =  noise,
};
var json = Global.ZennoLab.Json.JsonConvert.SerializeObject(settings);
instance.DroidInstance.Settings.SetLSPosedSettings(json);


Добавлен экшен "Настройки Appium"

Экшен позволяет управлять настройками формирования дерева элементов:
  • Разрешить невидимый WebView: исправляет проблему, когда при просмотре больших страниц перестает формироваться дерево элементов.
  • Разрешить невидимые элементы: в дереве элементов будут отображаться все элементы экрана, включая те, которые находятся за его пределами. У невидимых элементов атрибут displayed равен false. Формирование дерева будет происходить намного медленнее, особенно на больших страницах.
  • Игнорировать неважные элементы: дерево будет формироваться без второстепенных элементов не содержащих полезной информации (FrameLayout, ViewGroup и т.д.). Формирование дерева будет происходить намного быстрее.

Разрешить невидимый WebView выключен
XEiCuZ.png


Разрешить невидимый WebView включен
Y6R9vG.png


Добавлена возможность установить собственные правила проксирования

В экшен "Установить прокси" для режима Clash добавлена возможность установить собственные правила проксирования. Правила разделяются точкой с запятой ( ; ) или переносом строки.

DOMAIN-REGEX,^abc,DIRECT # Не проксировать если домен начинается с abc
DOMAIN-SUFFIX,ya.ru,REJECT # Блокировать трафик на домен ya.ru
DOMAIN-KEYWORD,google,PROXY # Проксировать трафик если имя домена google
IP-CIDR,1.1.1.1/32,DIRECT # Не проксировать трафик на адрес 1.1.1.1
AND,((NETWORK,TCP),(DST-PORT,5228-5230)),DIRECT # не проксировать трафик на порты TCP 5228-5230
MATCH,DIRECT # Не проксировать весь трафик
MATCH,PROXY # Проксировать весь трафик

Например, если указать следующие правила, то трафик на 2ip.ru пойдет через прокси, а весь остальной трафик проксироваться не будет:
DOMAIN-SUFFIX,2ip.ru,PROXY;MATCH,DIRECT

Добавлена возможность получить скриншот элемента

В экшен "Получение значения" добавлена возможность получить скриншот элемента (в формате Base64).

В API добавлена возможность сделать скриншот элемента или всего экрана (в формате Base64). Свой код C#:

C#:
Развернуть Свернуть Копировать
// Весь экран
return instance.DroidInstance.AppiumDriver.GetScreenshot();

// Элемент
var element = instance.DroidInstance.AppiumDriver.FindElementByUiAutomator($"new UiSelector().textContains(\"Chrome\")");
return element.GetScreenshot();

Для наглядности можно сохранить полученный скриншот в переменную base64 и затем преобразовать его в картинку (Свой код C#):
C#:
Развернуть Свернуть Копировать
var base64 = project.Variables["base64"].Value;
using (var ms = new MemoryStream(Convert.FromBase64String(base64)))
using (var bmp = new Bitmap(ms))
        bmp.Save(project.Path + "screen.png", System.Drawing.Imaging.ImageFormat.Png);

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

Добавлено:

+ Добавлен экшен "Настройка GPU".
+ В API добавлены методы для подмены соответствующих параметров GPU (Свой код C#).
+ Добавлен экшен "Настройки Appium".
+ В экшен "Установить прокси" для режима Clash добавлена возможность установить собственные правила проксирования.
+ В экшен "Получение значения" добавлена возможность получить скриншот элемента (в формате Base64).
+ В экшен "Эмуляция Swipe" добавлена возможность указать силу и направление изгиба свайпа. От -1.0 до +1.0. Изгиб будет изменяться каждый раз случайным образом в пределах заданного значения. Знак числа влияет на направление изгиба.
+ В API добавлены новые методы для указания силы изгиба
+ Улучшена подмена Android ID. Добавлен обход обнаружения реального Android ID, используемый в My Dev IDs.
+ В Менеджер устройств добавлена возможность указать адреса сканирования сети на наличие устройств подключенных по WiFi. Для отключения сканирования можно указать конечный адрес равным нулю.
+ Обновлена сборка LSPosed 1.10.2 с поддержкой API для работы с LSPosed.
+ Clash обновлен до 1.19.10.
Автоматическое обновление происходит только при удалении установленной версии. Для удаления текущей версии выполнить экшен Adb Shell (галочка с правами суперпользователя):
rm -f /data/adb/box/bin/clash
После чего установить прокси в формате clash. Новая версия установится автоматически.
+ UIAutomator2 обновлен до 7.6.2
+ FFmpeg обновлен до 7.1.1
+ Adb обновлен до 36.0.0
+ Scrcpy обновлен до 3.3.1
+ Frida обновлена до 16.7.19
+ Модуль ZennoDroid обновлен до 1.10.0.

Исправлено:

Исправлен критический баг, из-за которого при использовании экшена "Получить список устройств" мог заблокироваться запуск новых потоков.
Исправлено пропадание дерева элементов в Chrome при открытии нескольких вкладок, описанное в этом посте. Необходимо добавить Chrome в список подмены модуля ZennoDroid (включать подмену параметров необязательно, исправление включается автоматически после добавления).
Исправлена работа метода API instance.DroidInstance.AppiumDriver.ScrollToElementByAccessibilityId(string id, int maxSwipes)
Исправлен ввод текста при использовании в качестве устройства Nox с Android 9.
Исправлен бэкап настроек LSPosed на Android 10.
Исправлен баг, из-за которого в ZennoDroid не открывались настройки BotUI.
Исправлено падение приложений после подмены на Android 8.1.
Исправлена подмена Canvas fingerprint.
Исправления и оптимизация подмены параметров. Исправлен критический баг, из-за которого после подмены могли упасть некоторые приложения.
Исправлено отображение проектов при выборе меток.



Где скачать?

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


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

Просьба сообщать обо всех багах в Багтрекере, сопровождая проблему подробным описанием и сценарием воспроизведения. Это позволит нам быстро диагностировать и исправить ошибку.
 
а где можно посмотреть установленную версию clash?
 
Экшен консольная команда ADB, выполнять с правами суперпользователя
/data/adb/box/bin/clash -v | head -n 1
Доброго времени суток, а подскажите пожалуйста, то что вот новый снипет настройки GPU, если использовать
instance.DroidInstance.Settings.GenerateRandomLSPosedSettings(project.Profile.Country); то там эти параметры не генерируются, это так и задумано или позже добавите ?
 
Последнее редактирование:
У кого нибудь появились проблемы в adb клавиатурой на последних обновах? Такая картина теперь постоянно

135334


еще красные рамки по бокам в приложении стали появляться, хз что такое.
 
Доброго времени суток, а подскажите пожалуйста, то что вот новый снипет настройки GPU, если использовать
instance.DroidInstance.Settings.GenerateRandomLSPosedSettings(project.Profile.Country); то там эти параметры не генерируются, это так и задумано или позже добавите ?
Специально пока не добавлялось.
Это принципиально новый вид хуков и прежде чем обновлять генератор, нам важно было убедиться, что такие подмены не приведут к массовым проблемам.
 
  • Спасибо
Реакции: Sherminator
Доброго времени суток, а подскажите пожалуйста, то что вот новый снипет настройки GPU, если использовать
instance.DroidInstance.Settings.GenerateRandomLSPosedSettings(project.Profile.Country); то там эти параметры не генерируются, это так и задумано или позже добавите ?
C#:
Развернуть Свернуть Копировать
//instance.DroidInstance.Settings.SetRandomLSPosedSettings(project.Profile.Country);
var rnd = new Random();

// Шум для канваса
int noise = rnd.Next(1, int.MaxValue);
var set = instance.DroidInstance.Settings.GenerateRandomLSPosedSettings(project.Profile.Country);
var setDes = JsonConvert.DeserializeObject<Dictionary<string, object>>(set);
var glPairs = new (string Vendor, string Renderer)[]
{
    // Qualcomm Adreno
    ("Qualcomm", "Adreno (TM) 750"),
    ("Qualcomm", "Adreno (TM) 740"),
    ("Qualcomm", "Adreno (TM) 730"),
    ("Qualcomm", "Adreno (TM) 660"),
//    ("Qualcomm", "Adreno (TM) 650"),
//    ("Qualcomm", "Adreno (TM) 642L"),
//    ("Qualcomm", "Adreno (TM) 640"),
//    ("Qualcomm", "Adreno (TM) 630"),
//    ("Qualcomm", "Adreno (TM) 619"),
//    ("Qualcomm", "Adreno (TM) 618"),
//    ("Qualcomm", "Adreno (TM) 612"),
//    ("Qualcomm", "Adreno (TM) 610"),

    // ARM Mali
//    ("ARM", "Mali-G715"),
//    ("ARM", "Mali-G710"),
//    ("ARM", "Mali-G78"),
//    ("ARM", "Mali-G77"),
//    ("ARM", "Mali-G76"),
//    ("ARM", "Mali-G68"),
//    ("ARM", "Mali-G57"),
//    ("ARM", "Mali-G52"),
//    ("ARM", "Mali-G51"),
//    ("ARM", "Mali-T880"),
//    ("ARM", "Mali-T860")
};

// Случайная валидная пара
var pair = glPairs[rnd.Next(glPairs.Length)];


setDes["GlVendor"]   = pair.Vendor;
setDes["GlRenderer"] = pair.Renderer;
setDes["GlCanvasNoise"] = noise;

var totalSet = JsonConvert.SerializeObject(setDes);
instance.DroidInstance.Settings.SetLSPosedSettings(totalSet);
 
Сегодня на двух устройствах появились ошибки с lsposed api, причём только на двух действиях
Отключить модуль ZennoDroid
Включить модуль ZennoDroid
Всё остальное api работает отлично. Ошибку добавил на скрине, перезагрузка соответственно не помогает, в сами кубики изменений не вносил, скопировал из шаблона с примерами.
Устройство: realme note 50, android 13, сток + рут магиск обычный. Скорее всего дело в самих устройствах, регулярно что-нибудь выкидывают, но на всякий случай отпишу, вдруг у кого тоже будет такая проблема
apierr.png
 
  • Спасибо
Реакции: usboff
Сегодня на двух устройствах появились ошибки с lsposed api, причём только на двух действиях
Отключить модуль ZennoDroid
Включить модуль ZennoDroid
Всё остальное api работает отлично. Ошибку добавил на скрине, перезагрузка соответственно не помогает, в сами кубики изменений не вносил, скопировал из шаблона с примерами.
Устройство: realme note 50, android 13, сток + рут магиск обычный. Скорее всего дело в самих устройствах, регулярно что-нибудь выкидывают, но на всякий случай отпишу, вдруг у кого тоже будет такая проблема
Посмотреть вложение 135453
Аналогично впервые встретилась ошибка модуля ZennoDroid LSposed - "ERROR: transact failed Get manager binder fail, maybe the daemon hasn't started yet or you have not enabled cli" на одной конкретной мобиле из всего парка. Помогла перезагрузка тела.
 
Здравствуйте @Anatoly79 , при отрицательных bounds не верно парсятся точки координат и все что с ними связано.

Еще просьба добавить свойства X1 Y1, X2 Y2, все равно они парсятся для вычисления высоты и ширины, а для работы иногда нужны.

135454
 
  • Спасибо
Реакции: Anatoly79 и n0n3mi1y
Здравствуйте @Anatoly79 , при отрицательных bounds не верно парсятся точки координат и все что с ними связано.

Еще просьба добавить свойства X1 Y1, X2 Y2, все равно они парсятся для вычисления высоты и ширины, а для работы иногда нужны.
Спасибо за замечание, поправим парсинг, действительно отрицательные значения не предусматривались в дереве.

В тестовый билд ZennoDroid Enterprise 2.4.4.0 в API для элемента добавлено свойство Rectangle, которое в том числе содержит Left, Top, Right, Bottom (соответствует X1 Y1, X2 Y2)
 
Последнее редактирование:
  • Спасибо
Реакции: ZAI.ONE и Dmitriy Ka
@Anatoly79
Доброго времени суток, а подскажите пожалуйста, в чем разница?

C#:
Развернуть Свернуть Копировать
instance.DroidInstance.Screen.ScreenshotAsBase64String();
instance.DroidInstance.AppiumDriver.GetScreenshot();

ScreenshotAsBase64String как будто бы даже быстрее работает
 
Последнее редактирование:
ScreenshotAsBase64String как будто бы даже быстрее работает

Изображения полученные первым и вторым методом будут немного отличаться.
При использовании первого варианта изображение берется из локального кэша, т.е. практически моментально. Второй вариант - обертка над стандартным движком appium, делается запрос к девайсу.
 
  • Спасибо
Реакции: Sherminator
фрида нерабочая в этом билде, крашит все приложения. В предыдущей 2 4 2 0 все ок.
 
фрида нерабочая в этом билде, крашит все приложения. В предыдущей 2 4 2 0 все ок.

В папке c:\Program Files\ZennoLab\RU\ZennoDroid Enterprise\2.4.2.0\Progs\Android\ лежат 4 файла frida-server-android-XXX под разную архитектуру (версия 16.5.2). Можно ими заменить обновленные файлы (текущая версия 16.7.19). После замены нужно перезапустить программу.
Для разных телефонов подходят разные версии. У нас как раз перестала работать прошлая версия 16.5.2, поэтому обновили до более актуальной, в которой проблемы не наблюдается.

На всякий случай ссылка на архив с версией 16.5.2
 
Последнее редактирование:
  • Спасибо
Реакции: Dmitriy_Zenno и usboff
Уже довольно старая обнова с Настройка GPU, но только сейчас решил попробовать, а инфы по теме вообще не нашёл.
Есть несколько вопросов:
1. Вроде можно в кубике "Сгенерировать устройство - Случайное", указать данные устройства и GPU сгенерируется, но это нужно делать на включенном устройстве, может есть вариант попроще?
2. Генерация данных GPU случайная или привязана к модели устройства
3. есть ли ещё проблемы с отображением, при эмуляции GPU?
 
Уже довольно старая обнова с Настройка GPU, но только сейчас решил попробовать, а инфы по теме вообще не нашёл.
Есть несколько вопросов:
1. Вроде можно в кубике "Сгенерировать устройство - Случайное", указать данные устройства и GPU сгенерируется, но это нужно делать на включенном устройстве, может есть вариант попроще?
2. Генерация данных GPU случайная или привязана к модели устройства
3. есть ли ещё проблемы с отображением, при эмуляции GPU?
Ага, по обновам обновлять бы и вики по софту, и в обнове более подробно расписывать что можно указать как пример (не один, а несколько хотя бы) а что нельзя. Как для новичков. Иначе уровень входа с каждым разом повышается а инфу приходится собирать по апдейтам.

Хотя подмечу что вики довольно оперативно обновляют, иногда даже быстрее чем обнова вышла, но все же - подробней описывать было бы круче.
 
2. Генерация данных GPU случайная или привязана к модели устройства
3. есть ли ещё проблемы с отображением, при эмуляции GPU?
Экшен Сгенерировать устройство.
GPU привязан к модели устройства.
Проблемы с отображением зависят от используемого телефона. Например, на Realme 50 можно использовать любые GPU.
Для проверки нужно установить фильтр ARM, сгенерировать устройство, проверить изображение. Затем установить фильтр Qualcomm и также проверить изображение.

1. Вроде можно в кубике "Сгенерировать устройство - Случайное", указать данные устройства и GPU сгенерируется, но это нужно делать на включенном устройстве, может есть вариант попроще?
Не совсем понял вопрос. Достаточно указать страну (соответствующую используемому прокси), остальные параметры второстепенные.
 
Не совсем понял вопрос. Достаточно указать страну (соответствующую используемому прокси), остальные параметры второстепенные.
Данные которые генерируются через "Сгенерировать устройство", отличаются от данных в профиле, поэтому чтобы избегать потенциальных разногласий, я подумал что логично указывать нечто подобное:
140111

Но даже так остальные параметры, будут отличаться, просто думал можно избежать хранения и профилей, и json с данными устройства. И вопрос был про возможность просто генерации vendor и renderer, без применения. Но уже в целом, вопрос отпал, так как проще всё-таки хранить и то, и другое
 
Да, верно, нужно хранить и профиль и json. В профиле нет всех данных, хранящихся в json.

На всякий случай напишу, если кто-то решит задать параметры как на скрине.
Так нельзя задавать производителя/бренд/модель. Эти поля - фильтры для генератора.
На скрине версия Android ограничена 14, но модель в профиле не обязательно Android 14. С такими параметрами кубик будет в основном завершаться ошибкой.
 
  • Спасибо
Реакции: Sergodjan

Похожие темы

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