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

Yuriy Zymlex

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

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

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

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

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

    Список пакетов можно получить используя 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 (собственные процессоры Хуавей)


Добавляйте свои идеи в данную тему.
 
Последнее редактирование:
Если у кого отваливается соединение с телефонов то советую пройтись по этим пунктам.
1) Сменить кабель.
2) Проверить разъем зарядки.
3) В отладке переключить USB по умолчанию на передача файлов.
4) Установите Macrodroid (можно попробывать Tasker) и с его помощью перезагружайте телефон по таймеру.
5) Попробуйте перепрошить телефон на менее "переделанную" прошивку (возможно перепробывать несколько вариантов).
 
При отваливании просто перезапуск кубиком и дальше в работу.
 
  • Спасибо
Реакции: Sergodjan
Если у кого в прошивке (Samsung и Pixel Experience прошивки) браузер Chrome стоит и он неудаляем (это ограничения на архивацию и восстановление) то вот путь обхода.
1) Сброс до заводских или перепрошивка (не обновляем Chrome)
2) В настройках > приложения > Chrome нажимаем остановка + отключить
3) Скачиваем apk Chrome и устанавливаем поверх родного
Теперь должно работать
 
  • Спасибо
Реакции: Hannes
Да и если время от времени отваливается телефон/ы (USB устройство по сути), то проверьте первым делом режим энергосбережения в виндоус
 
  • Спасибо
Реакции: Hannes
У меня от 5 серии redmi есть и пара А1 в работе, от родных прошивок сразу отказался. На xiaomi на каждый аппарат до 10 прошивок испробовал . Даже внешний диск под коллекцию прошивок организовал.
Из старых телефонов удивил своей стабильностью Nexus 5 на 10 Андроиде, но без гугловских сервисов
 
  • Спасибо
Реакции: Hannes
Хотел бы добавить проблемные модели из моего опыта
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
А как найти путь с скажем "неудаляемому" Chrome?
Хотел написать, да вылетело...

У pm есть довольно большая справка (прям в самой проге), там есть команда: pm list packages + доп. аргументы,
используя её можно получать списки разных пакетов.
 
Последнее редактирование:
Можно сделать полный сброс, оставив возможность подключения по ADB:
Bash:
Развернуть Свернуть Копировать
adb shell cmd testharness enable

Устройство устанавливает определенные системные параметры, чтобы мастера первоначальной настройки устройства не отображались.
Настройки:
  • Отключает экран блокировки.
  • Отключает экстренные оповещения.
  • Отключает автоматическую синхронизацию для учетных записей.
  • Отключает автоматическое обновление системы.
Другой:
  • Отключает предустановленные приложения безопасности.
 
а как сделать так что бы при выполнении
adb shell cmd testharness enable
допустим хочу English язык US регион - или это надо где то в прошивке менять что бы по дефолту был English и регион US ?
 
допустим хочу English язык US регион - или это надо где то в прошивке менять что бы по дефолту был English и регион US ?
Проще всего будет сразу поставить En-US прошивку.
 
  • Спасибо
Реакции: DeMoH
Если начинается отвал подключения и/или заметно снижается быстродействие телефонов то в первую очередь обратите внимание на перегрев телефона .
Если телефон горячий то в первую очередь понижаем яркость экрана до 0 и отключаем автонастройку яркости , наблюдаем за поведением телефонов и если это не особо помогло то реализуем интенсивный обдув для нужного нам отвода тепла .
 
Включить и выключить авиарежим по 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
Еще один вариант включения и выключения авиарежима по ADB
включение
adb shell cmd connectivity airplane-mode enable

выключение
adb shell cmd connectivity airplane-mode disable
 
Пример подмены Wi-Fi сетей через Frida:
image.png
 

Вложения

Подмена 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";
}});
 
Подмена 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";
}});
У фриды есть прикол.
Она подключается уже к ЗАПУЩЕННОМУ приложению.
А некоторые приложения проверяют значения на ЭТАПЕ ЗАПУСКА.
Т.е. фридой можно подменить тогда, когда уже бессмысленно ;-)
 
Она подключается уже к ЗАПУЩЕННОМУ приложению.
Почему? Можно подключаться к уже запущенному процессу, а можно запускать приложение и инжектить скрипт в момент запуска (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
 
Почему? Можно подключаться к уже запущенному процессу, а можно запускать приложение и инжектить скрипт в момент запуска (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
А если родительское приложение вызывает дочернее приложение, которое как раз и делает проверку?
 
А если родительское приложение вызывает дочернее приложение, которое как раз и делает проверку?
То голяк, именно по этой причине нужно юзать xposed, а не фриду )
 
То голяк, именно по этой причине нужно юзать xposed, а не фриду )
Типа того.
Только там тоже не все легко и просто
Мне, например, пришлось хуки переделывать/дописывать чтобы "чуть лучше стало" и то! там еще минимальное из минимума сделано. Шаг в сторону - все спалиться.
 
Подмена 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";
}});
Доброго, а есть где-нибудь гайд или мануал по фриде? По сути так-то примерно ясно куда вставлять, что тыкать, но у меня самсунги все рутованные виснут дико и перезагружаются после действия во фриде
 
Доброго, а есть где-нибудь гайд или мануал по фриде? По сути так-то примерно ясно куда вставлять, что тыкать, но у меня самсунги все рутованные виснут дико и перезагружаются после действия во фриде
У меня тоже с ней все виснет и глючит =)
Так что тоже интересно
 
Ковыряю дроид и прямо ностальгия по постеру ;-)
Любое действие/команда/функция имеет шанс выполниться в 90%, а 10% может и не выполниться.
И потому проверка сработало/не сработало надо делать на каждый шаг и на любое действие.
:az:
 
Ковыряю дроид и прямо ностальгия по постеру ;-)
Любое действие/команда/функция имеет шанс выполниться в 90%, а 10% может и не выполниться.
И потому проверка сработало/не сработало надо делать на каждый шаг и на любое действие.
:az:
Я тебе больше скажу, даже у реальных юзерей на потоке повторяющихся действий это все лагает )
 
Android можно облегчить деинсталлируя пакеты (даже системные) командой pm uninstall --user 0 тут.путь.к.пакету
(системные можно будет установить командой cmd package install-existing тут.путь.к.пакету, либо выполнив общий сброс),
при этом это возможно не только для смартфонов, но и для виртуалок (как минимум рекламные пакеты, но лаунчер потребует замены).


А вот по удалению приложений, может есть список у кого, для работы в мобильном браузере, что можно посносить или наоборот что оставить
 
А вот по удалению приложений, может есть список у кого, для работы в мобильном браузере, что можно посносить или наоборот что оставить
Быстрее всего методом тыка, собрать свой список. :bn:
 
  • Спасибо
Реакции: alexeipigilov12

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