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

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 352
Благодарностей
3 279
Баллы
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, возможно до сих пор поддерживают заливку полного образа флэш памяти, но эта платформа считается дешёвой и вероятно по этой причине, там настолько прямой путь.
Huawei/Honor для разблокировки загрузчика просит деньги
Почти все Хуавей это Kirin (собственные процессоры Хуавей)
Добавляйте свои идеи в данную тему.
 
Последнее редактирование:

radv

Client
Регистрация
11.05.2015
Сообщения
3 673
Благодарностей
1 855
Баллы
113
У некоторых смартфонов (особенно китайских) капризные прошивки. Нужно ждать для разблокировки загрузчика. Интерфейс у разных версий прошивок может менятся, или из-за перевода названия параметров тоже могут отличаться.
 
Регистрация
23.12.2014
Сообщения
492
Благодарностей
124
Баллы
43
Если у кого отваливается соединение с телефонов то советую пройтись по этим пунктам.
1) Сменить кабель.
2) Проверить разъем зарядки.
3) В отладке переключить USB по умолчанию на передача файлов.
4) Установите Macrodroid (можно попробывать Tasker) и с его помощью перезагружайте телефон по таймеру.
5) Попробуйте перепрошить телефон на менее "переделанную" прошивку (возможно перепробывать несколько вариантов).
 

Nee

Client
Регистрация
29.08.2019
Сообщения
32
Благодарностей
3
Баллы
8
При отваливании просто перезапуск кубиком и дальше в работу.
 
  • Спасибо
Реакции: Sergodjan
Регистрация
23.12.2014
Сообщения
492
Благодарностей
124
Баллы
43
Если у кого в прошивке (Samsung и Pixel Experience прошивки) браузер Chrome стоит и он неудаляем (это ограничения на архивацию и восстановление) то вот путь обхода.
1) Сброс до заводских или перепрошивка (не обновляем Chrome)
2) В настройках > приложения > Chrome нажимаем остановка + отключить
3) Скачиваем apk Chrome и устанавливаем поверх родного
Теперь должно работать
 
Регистрация
23.12.2014
Сообщения
492
Благодарностей
124
Баллы
43
Да и если время от времени отваливается телефон/ы (USB устройство по сути), то проверьте первым делом режим энергосбережения в виндоус
 

nvmds

Client
Регистрация
04.05.2016
Сообщения
91
Благодарностей
7
Баллы
8
А на стоковой прошивке miui вообще толи лаунчер начинает затупливать, толи че. Тоже ток ребут помогает. причем девайсы разные и mi a1 есть, и note 7 и redmi 9a. Везде отвалы
 

nvmds

Client
Регистрация
04.05.2016
Сообщения
91
Благодарностей
7
Баллы
8
Макродроид хоть как-то помогает щас
 
Регистрация
23.12.2014
Сообщения
492
Благодарностей
124
Баллы
43
У меня от 5 серии redmi есть и пара А1 в работе, от родных прошивок сразу отказался. На xiaomi на каждый аппарат до 10 прошивок испробовал . Даже внешний диск под коллекцию прошивок организовал.
Из старых телефонов удивил своей стабильностью Nexus 5 на 10 Андроиде, но без гугловских сервисов
 
Регистрация
23.12.2014
Сообщения
492
Благодарностей
124
Баллы
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

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 352
Благодарностей
3 279
Баллы
113
Последнее редактирование:
Регистрация
23.12.2014
Сообщения
492
Благодарностей
124
Баллы
43

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 352
Благодарностей
3 279
Баллы
113
У Samsung'ов индийская прошивка обновляется чаще и обычно свежее других, так как по сути это регион для тестирования,
+ может иметь доп. функционал, например, запись звонков.
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 352
Благодарностей
3 279
Баллы
113
Так же, Android можно облегчить деинсталлируя пакеты (даже системные) командой pm uninstall --user 0 тут.путь.к.пакету
(системные можно будет установить командой cmd package install-existing тут.путь.к.пакету, либо выполнив общий сброс),
при этом это возможно не только для смартфонов, но и для виртуалок (как минимум рекламные пакеты, но лаунчер потребует замены).

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

Для смартфона, списки на удаление могут выглядеть так:
деинсталляция некоторых пакетов может приводить к потере функционала за который они отвечают или даже к бутлупу, изучайте инфу по каждому.
Список для каждой прошивки индивидуален.
 
Последнее редактирование:
Регистрация
23.12.2014
Сообщения
492
Благодарностей
124
Баллы
43
Так же, Android можно облегчить деинсталлируя пакеты (даже системные) командой pm uninstall --user 0 тут.путь.к.пакету
(системные можно будет установить коммандой cmd package install-existing тут.путь.к.пакету, либо выполнив общий сброс),
при этом это возможно не только для смартфонов, но и для виртуалок (как минимум рекламные пакеты, но лаунчер потребует замены).

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

Yuriy Zymlex

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

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

Yuriy Zymlex

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

DeMoH

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

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 352
Благодарностей
3 279
Баллы
113
допустим хочу English язык US регион - или это надо где то в прошивке менять что бы по дефолту был English и регион US ?
Проще всего будет сразу поставить En-US прошивку.
 
  • Спасибо
Реакции: DeMoH
Регистрация
23.12.2014
Сообщения
492
Благодарностей
124
Баллы
43
Если начинается отвал подключения и/или заметно снижается быстродействие телефонов то в первую очередь обратите внимание на перегрев телефона .
Если телефон горячий то в первую очередь понижаем яркость экрана до 0 и отключаем автонастройку яркости , наблюдаем за поведением телефонов и если это не особо помогло то реализуем интенсивный обдув для нужного нам отвода тепла .
 
Регистрация
23.12.2014
Сообщения
492
Благодарностей
124
Баллы
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
 
Регистрация
23.12.2014
Сообщения
492
Благодарностей
124
Баллы
43
Еще один вариант включения и выключения авиарежима по ADB
включение
adb shell cmd connectivity airplane-mode enable

выключение
adb shell cmd connectivity airplane-mode disable
 
  • Спасибо
Реакции: Fakirr и FreddyKrueger

Yuriy Zymlex

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

Вложения

Iv1

Client
Регистрация
21.02.2016
Сообщения
1 910
Благодарностей
747
Баллы
113

sw_sw

Client
Регистрация
24.02.2017
Сообщения
691
Благодарностей
277
Баллы
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 910
Благодарностей
747
Баллы
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
Сообщения
377
Благодарностей
269
Баллы
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
 
  • Спасибо
Реакции: Ysocnet и Yuriy Zymlex

Iv1

Client
Регистрация
21.02.2016
Сообщения
1 910
Благодарностей
747
Баллы
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
Сообщения
691
Благодарностей
277
Баллы
63
А если родительское приложение вызывает дочернее приложение, которое как раз и делает проверку?
То голяк, именно по этой причине нужно юзать xposed, а не фриду )
 

Iv1

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

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