Полезное по смартфонам и ZennoDroid Enterprise

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 576
Благодарностей
3 398
Баллы
113
  • Enterprise версия работает через ADB, поэтому можно использовать любые виртуалки, но контроль за ними вам придётся реализовывать самим, как и с реальными устройствами.

  • Для экономии, в некоторых задачах м.б. достаточно демонстрационных версий смартфонов, в них как минимум отсутствуют модули связи, а сами аппараты обычно продают уже использованные (с витрин).

  • Гугл предоставляет оригинальную прошивку андроида (GSI) для разработчиков (есть варианты с рутом и обычная пользовательская).
    Смарт должен быть Treble совместимым (обычно, если первая версия с 8-9 андроида).

  • У Samsung'ов индийская прошивка обновляется чаще и обычно свежее других, так как по сути это регион для тестирования,
    + может иметь доп. функционал, например: запись звонков и др..

  • Android можно облегчить деинсталлируя пакеты (даже системные) командой pm uninstall --user 0 тут.путь.к.пакету
    (системные можно будет установить командой cmd package install-existing тут.путь.к.пакету, либо выполнив общий сброс),
    при этом это возможно не только для смартфонов, но и для виртуалок (как минимум рекламные пакеты, но лаунчер потребует замены).

    Список пакетов можно получить используя pm командой: pm list packages+ доп. аргументы,
    используя её можно получать списки разных пакетов. Так же могут пригодиться и другие её функции.

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

  • Можно сделать полный сброс, оставив возможность подключения по ADB:
    Bash:
    adb shell cmd testharness enable
    Устройство устанавливает определенные системные параметры, чтобы мастера первоначальной настройки устройства не отображались.
    Настройки:
    • Отключает экран блокировки.
    • Отключает экстренные оповещения.
    • Отключает автоматическую синхронизацию для учетных записей.
    • Отключает автоматическое обновление системы.
    • Отключает предустановленные приложения безопасности.

  • Некоторые прошивки (вероятно и GSI) и загрузчики могут иметь скрытые настройки.
    Например: fastboot oem off-mode-charge 0 - запуск смартфона при подключении питающего кабеля (взаместо анимации зарядки).
    Некоторые прошивки могут иметь prop: debug.rootbackdoor=1, как описано тут (с уже вшитыми сторонними ключами доступа).

  • При редактировании разметки разделов на физическом устройстве,
    сделайте в начале полный дамп флэш памяти со всеми разделами и протестируйте способ, которым вы будете заливать его обратно (будет ли устройство по итогу работать?).

    Скорее всего, встроенных средств для создания и заливки полного образа флэш памяти не окажется.
    • Recovery как отдельная ОС, предоставляет довольно широкий доступ, но без своего раздела, а тем более раздела бутлоадера - оно не сможет запуститься.

    • fastboot - поддерживает создание логических разделов, но потребуется информация о них для их же создания.
      но не все устройства имеют его, например, Samsung имеет его в виде заглушки, а сам использует свой кастомный протокол.

    • Задачи бутлоадера обычно минимальны - запуск устройства, а в ином режиме: обнуление уже существующих разделов и/или сразу заливка образов поверх уже имеющихся разделов.

    • Устройства на основе MediaTek, возможно до сих пор поддерживают заливку полного образа флэш памяти, но эта платформа считается бюджетной и вероятно по этой причине, там настолько прямой путь.

Пример подмены Wi-Fi сетей через Frida:

Huawei/Honor для разблокировки загрузчика просит деньги
Почти все Хуавей это Kirin (собственные процессоры Хуавей)
Добавляйте свои идеи в данную тему.
 
Последнее редактирование:
Регистрация
23.12.2014
Сообщения
703
Благодарностей
236
Баллы
43
Если у кого отваливается соединение с телефонов то советую пройтись по этим пунктам.
1) Сменить кабель.
2) Проверить разъем зарядки.
3) В отладке переключить USB по умолчанию на передача файлов.
4) Установите Macrodroid (можно попробывать Tasker) и с его помощью перезагружайте телефон по таймеру.
5) Попробуйте перепрошить телефон на менее "переделанную" прошивку (возможно перепробывать несколько вариантов).
 

Nee

Client
Регистрация
29.08.2019
Сообщения
50
Благодарностей
6
Баллы
8
При отваливании просто перезапуск кубиком и дальше в работу.
 
  • Спасибо
Реакции: Sergodjan
Регистрация
23.12.2014
Сообщения
703
Благодарностей
236
Баллы
43
Если у кого в прошивке (Samsung и Pixel Experience прошивки) браузер Chrome стоит и он неудаляем (это ограничения на архивацию и восстановление) то вот путь обхода.
1) Сброс до заводских или перепрошивка (не обновляем Chrome)
2) В настройках > приложения > Chrome нажимаем остановка + отключить
3) Скачиваем apk Chrome и устанавливаем поверх родного
Теперь должно работать
 
  • Спасибо
Реакции: Hannes
Регистрация
23.12.2014
Сообщения
703
Благодарностей
236
Баллы
43
Да и если время от времени отваливается телефон/ы (USB устройство по сути), то проверьте первым делом режим энергосбережения в виндоус
 
  • Спасибо
Реакции: Hannes
Регистрация
23.12.2014
Сообщения
703
Благодарностей
236
Баллы
43
У меня от 5 серии redmi есть и пара А1 в работе, от родных прошивок сразу отказался. На xiaomi на каждый аппарат до 10 прошивок испробовал . Даже внешний диск под коллекцию прошивок организовал.
Из старых телефонов удивил своей стабильностью Nexus 5 на 10 Андроиде, но без гугловских сервисов
 
  • Спасибо
Реакции: Hannes
Регистрация
23.12.2014
Сообщения
703
Благодарностей
236
Баллы
43
Хотел бы добавить проблемные модели из моего опыта
Xiaomi
Mi max (2гб )версия, Redmi 3, redmi 3s, redmi note 3, redmi note 3 pro, redmi 4 ,redmi note 4a, redmi 4x, redmi note 4, redmi 5, redmi note 5a, redmi 5 plus, redmi note 9a, Redmi 7a, mi mix 2s
Samsung
Samsung s5 , s5 mini, s6, s6 edge, a500, a300,a310,a320, думаю и вся серия j
Плюс всегда обращайте внимание на то чтоб не была американская модификация иначе никак не разблокировать загрузчик.
Методом тыка взял пару моделей Хуавей и по сути итог такой , все что выше 9 серии разлокировка загрузчика платная , все что ниже 8 серии слабая для нас + сам процесс разблокировки и прошивки намного сложнее чем на Самсунгах и Ксяоми (сам не справился).
Правда избавился отчасти от них, но далеко не от всех
Буду благодарен если будете пополнять этот список.....
Вот такие у меня приключения за 6 месяцев :ah:
 
Последнее редактирование:
  • Спасибо
Реакции: orka13 и todayer
Регистрация
23.12.2014
Сообщения
703
Благодарностей
236
Баллы
43

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 576
Благодарностей
3 398
Баллы
113
А как найти путь с скажем "неудаляемому" Chrome?
Хотел написать, да вылетело...

У pm есть довольно большая справка (прям в самой проге), там есть команда: pm list packages + доп. аргументы,
используя её можно получать списки разных пакетов.
 
Последнее редактирование:

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 576
Благодарностей
3 398
Баллы
113
Можно сделать полный сброс, оставив возможность подключения по ADB:
Bash:
adb shell cmd testharness enable
Устройство устанавливает определенные системные параметры, чтобы мастера первоначальной настройки устройства не отображались.
Настройки:
  • Отключает экран блокировки.
  • Отключает экстренные оповещения.
  • Отключает автоматическую синхронизацию для учетных записей.
  • Отключает автоматическое обновление системы.
Другой:
  • Отключает предустановленные приложения безопасности.
 

DeMoH

Client
Регистрация
25.03.2018
Сообщения
311
Благодарностей
37
Баллы
28
а как сделать так что бы при выполнении
adb shell cmd testharness enable
допустим хочу English язык US регион - или это надо где то в прошивке менять что бы по дефолту был English и регион US ?
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 576
Благодарностей
3 398
Баллы
113
допустим хочу English язык US регион - или это надо где то в прошивке менять что бы по дефолту был English и регион US ?
Проще всего будет сразу поставить En-US прошивку.
 
  • Спасибо
Реакции: DeMoH
Регистрация
23.12.2014
Сообщения
703
Благодарностей
236
Баллы
43
Если начинается отвал подключения и/или заметно снижается быстродействие телефонов то в первую очередь обратите внимание на перегрев телефона .
Если телефон горячий то в первую очередь понижаем яркость экрана до 0 и отключаем автонастройку яркости , наблюдаем за поведением телефонов и если это не особо помогло то реализуем интенсивный обдув для нужного нам отвода тепла .
 
Регистрация
23.12.2014
Сообщения
703
Благодарностей
236
Баллы
43
Включить и выключить авиарежим по ADB
ВКЛ
adb shell settings put global airplane_mode_on 1
adb shell am broadcast -a android.intent.action.AIRPLANE_MODE
ВЫКЛ
adb shell settings put global airplane_mode_on 0
adb shell am broadcast -a android.intent.action.AIRPLANE_MODE
 
  • Спасибо
Реакции: Lex12
Регистрация
23.12.2014
Сообщения
703
Благодарностей
236
Баллы
43
Еще один вариант включения и выключения авиарежима по ADB
включение
adb shell cmd connectivity airplane-mode enable

выключение
adb shell cmd connectivity airplane-mode disable
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 576
Благодарностей
3 398
Баллы
113
Пример подмены Wi-Fi сетей через Frida:
image.png
 

Вложения

sw_sw

Client
Регистрация
24.02.2017
Сообщения
786
Благодарностей
314
Баллы
63
Подмена android_id через Фриду :

Java.perform(function()
{
var Secure = Java.use("android.provider.Settings$Secure");
Secure.getString.overload('android.content.ContentResolver', 'java.lang.String').implementation = function (p1,p2) {
if(p2.indexOf("android_id")<0) return this.getString(p1,p2);
var temp = this.getString(p1,p2);
return "d88301ffecaa7d1b";
}});
 

Iv1

Client
Регистрация
21.02.2016
Сообщения
1 954
Благодарностей
784
Баллы
113
Подмена android_id через Фриду :

Java.perform(function()
{
var Secure = Java.use("android.provider.Settings$Secure");
Secure.getString.overload('android.content.ContentResolver', 'java.lang.String').implementation = function (p1,p2) {
if(p2.indexOf("android_id")<0) return this.getString(p1,p2);
var temp = this.getString(p1,p2);
return "d88301ffecaa7d1b";
}});
У фриды есть прикол.
Она подключается уже к ЗАПУЩЕННОМУ приложению.
А некоторые приложения проверяют значения на ЭТАПЕ ЗАПУСКА.
Т.е. фридой можно подменить тогда, когда уже бессмысленно ;-)
 

Anatoly79

Moderator
Регистрация
17.04.2020
Сообщения
536
Благодарностей
427
Баллы
63
Она подключается уже к ЗАПУЩЕННОМУ приложению.
Почему? Можно подключаться к уже запущенному процессу, а можно запускать приложение и инжектить скрипт в момент запуска (spawn). Т.е. скрипт будет выполнен до того, как приложение начнет что-либо считывать.

На видео ниже видно, что после выполнения функции Запуск (spawn) приложения еще нет на экране. В этот момент инжектится скрипт, и затем уже приложение возобновляет работу (Resume)
В примере API есть образец "Выполнить скрипт в приложении (полная форма)". Там показаны все шаги.
C#:
var source = File.ReadAllText(project.Path + "deviceFaker.js");
var device = instance.DroidInstance.FridaDevice;
var pid = device.Spawn("com.zennolab.deviceinfo");
var session = device.Attach(pid);
var script = session.CreateScript(source, "myScript");
// script.Message += (o, e) => project.SendInfoToLog(e.Message);
script.Load();
device.Resume(pid);
109329
 

Iv1

Client
Регистрация
21.02.2016
Сообщения
1 954
Благодарностей
784
Баллы
113
Почему? Можно подключаться к уже запущенному процессу, а можно запускать приложение и инжектить скрипт в момент запуска (spawn). Т.е. скрипт будет выполнен до того, как приложение начнет что-либо считывать.

На видео ниже видно, что после выполнения функции Запуск (spawn) приложения еще нет на экране. В этот момент инжектится скрипт, и затем уже приложение возобновляет работу (Resume)
В примере API есть образец "Выполнить скрипт в приложении (полная форма)". Там показаны все шаги.
C#:
var source = File.ReadAllText(project.Path + "deviceFaker.js");
var device = instance.DroidInstance.FridaDevice;
var pid = device.Spawn("com.zennolab.deviceinfo");
var session = device.Attach(pid);
var script = session.CreateScript(source, "myScript");
// script.Message += (o, e) => project.SendInfoToLog(e.Message);
script.Load();
device.Resume(pid);
Посмотреть вложение 109329
А если родительское приложение вызывает дочернее приложение, которое как раз и делает проверку?
 

sw_sw

Client
Регистрация
24.02.2017
Сообщения
786
Благодарностей
314
Баллы
63
А если родительское приложение вызывает дочернее приложение, которое как раз и делает проверку?
То голяк, именно по этой причине нужно юзать xposed, а не фриду )
 

Iv1

Client
Регистрация
21.02.2016
Сообщения
1 954
Благодарностей
784
Баллы
113
То голяк, именно по этой причине нужно юзать xposed, а не фриду )
Типа того.
Только там тоже не все легко и просто
Мне, например, пришлось хуки переделывать/дописывать чтобы "чуть лучше стало" и то! там еще минимальное из минимума сделано. Шаг в сторону - все спалиться.
 
Регистрация
20.02.2019
Сообщения
293
Благодарностей
35
Баллы
28
Подмена android_id через Фриду :

Java.perform(function()
{
var Secure = Java.use("android.provider.Settings$Secure");
Secure.getString.overload('android.content.ContentResolver', 'java.lang.String').implementation = function (p1,p2) {
if(p2.indexOf("android_id")<0) return this.getString(p1,p2);
var temp = this.getString(p1,p2);
return "d88301ffecaa7d1b";
}});
Доброго, а есть где-нибудь гайд или мануал по фриде? По сути так-то примерно ясно куда вставлять, что тыкать, но у меня самсунги все рутованные виснут дико и перезагружаются после действия во фриде
 

sw_sw

Client
Регистрация
24.02.2017
Сообщения
786
Благодарностей
314
Баллы
63
Доброго, а есть где-нибудь гайд или мануал по фриде? По сути так-то примерно ясно куда вставлять, что тыкать, но у меня самсунги все рутованные виснут дико и перезагружаются после действия во фриде
У меня тоже с ней все виснет и глючит =)
Так что тоже интересно
 

Iv1

Client
Регистрация
21.02.2016
Сообщения
1 954
Благодарностей
784
Баллы
113
Ковыряю дроид и прямо ностальгия по постеру ;-)
Любое действие/команда/функция имеет шанс выполниться в 90%, а 10% может и не выполниться.
И потому проверка сработало/не сработало надо делать на каждый шаг и на любое действие.
:az:
 

sw_sw

Client
Регистрация
24.02.2017
Сообщения
786
Благодарностей
314
Баллы
63
Ковыряю дроид и прямо ностальгия по постеру ;-)
Любое действие/команда/функция имеет шанс выполниться в 90%, а 10% может и не выполниться.
И потому проверка сработало/не сработало надо делать на каждый шаг и на любое действие.
:az:
Я тебе больше скажу, даже у реальных юзерей на потоке повторяющихся действий это все лагает )
 

sw_sw

Client
Регистрация
24.02.2017
Сообщения
786
Благодарностей
314
Баллы
63
Регистрация
20.02.2019
Сообщения
293
Благодарностей
35
Баллы
28
Android можно облегчить деинсталлируя пакеты (даже системные) командой pm uninstall --user 0 тут.путь.к.пакету
(системные можно будет установить командой cmd package install-existing тут.путь.к.пакету, либо выполнив общий сброс),
при этом это возможно не только для смартфонов, но и для виртуалок (как минимум рекламные пакеты, но лаунчер потребует замены).

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

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 576
Благодарностей
3 398
Баллы
113
А вот по удалению приложений, может есть список у кого, для работы в мобильном браузере, что можно посносить или наоборот что оставить
Быстрее всего методом тыка, собрать свой список. :bn:
 
  • Спасибо
Реакции: alexeipigilov12
Регистрация
20.02.2019
Сообщения
293
Благодарностей
35
Баллы
28

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