Как Android-приложения следят за вами с помощью идентификаторов устройства | Блог Касперского

Что такое imei телефона

IMEIWCDMA. Например, такой номер получают мобильные телефоны, спутниковые телефоны, смартфоны, планшеты и ноутбуки с поддержкой мобильного интернета, 3G-модемы и другие подобные устройства. Количество получаемых IMEI соответствует количеству SIM-карт, с которыми может работать данное устройство. Например, если телефон поддерживает работу с двумя SIM картами, то он получает два IMEI.

Аббревиатура IMEI расшифровывается как International Mobile Equipment Identity, что можно перевести на русский как международный идентификатор мобильного оборудования. Производители телефонов и других мобильных устройств получают данные идентификаторы от специальных международных организаций, которые уполномочены их выдавать.

Например, такие идентификаторы выдает BABT (British Approvals Board for Telecommunications). В дальнейшем, производители раздают полученные идентификаторы конкретным телефонам, которые они выпускают, таким образом достигается уникальность каждого IMEI.

Что касается структуры IMEI, то он состоит из 14 или 16 цифр (в этом случае он называется IMEISV). Первые 8 цифр указывают на модель телефона и его происхождение, остальные цифры включают заданный производителем серийный номер и контрольное число. В случае IMEISV, который состоит из 16 цифр, также указывается версия программного обеспечения.

Что и как бэкапить


Как вы видели выше, разделов в системе очень много. Но большинство из них либо никогда не меняются, либо меняются только при прошивке новой системы или recovery, так что бэкапить их смысла нет.

Возможное исключение — раздел /system. Обычно он меняется только при обновлении прошивки, но имея root вы можете его изменять (делать приложения «системными» через Titanium Backup чтобы сэкономить место на /data, устанавливать новые системные приложения вроде BusyBox, модифицировать загрузочные скрипты, etc.) — в этом случае его тоже может иметь смысл бэкапить.

Таким образом, бэкапить обычно нужно только раздел /data и внутренние/внешние SD card.

Поскольку бэкап нужно куда-то сохранять, и обычно это SD card, то содержимое самой(их) SD card в бэкапы как правило не входит. Titanium Backup умеет частично включать в бэкапы данные приложений находящиеся на SD card, но только файлы из /sdcard/Android/data/*/ (если приложение хранит свои файлы в других каталогах то в бэкап они не попадут).

Итак, ваши данные, которые может потребоваться бэкапить, это:

  • описанные выше возможные изменения /system
  • установленные вами дополнительные приложения
  • данные практически всех приложений
  • данные некоторых особых приложений
  • ваши файлы и данные приложений сохранённые вне стандартных мест

ВНИМАНИЕ:

После экспорта контактов любое приложение может получить к ним доступ, поэтому желательно сразу их перенести с SD card на компьютер. Чтобы никакое приложение не успело украсть контакты сразу после экспорта настоящий параноик может попробовать следующий подход:

  1. экспортировать текущие настройки XPrivacy
  2. через XPrivacy заблокировать всем приложениям доступ к SD card
  3. перезагрузить телефон
  4. экспортировать Контакты (разрешив только им доступ к SD card)
  5. перенести .vcf-файл с контактами с SD card на компьютер
  6. импортировать предыдущие настройки XPrivacy
  7. перезагрузить телефон

Gapps

Что касается GApps. В идеале, конечно, лучше бы его вообще не устанавливать — если вам хватает приложений из F-Droid. Можно попробовать обойтись

, но на практике полноценной замены Google Play Маркет просто нет (а доступ к нему через NOGAPPS может в любой момент привести к бану и потере купленных приложений т.к. нарушает правила гугла). В этом случае стоит установить минималистский 

, и при необходимости остальные приложения GApps установить через Play Маркет (если вы переживаете, что в этом случае они будут занимать дополнительное место, то во-первых это всё-равно случится при первом же их обновлении, а во-вторых есть утилиты — включая Titanium Backup — которые умеют переносить приложения в

/system

, решая эту проблему).

Вообще надо отметить, что разработчики выкладывавшие урезанные сборки GApps как-то все повально начали отказываться от дальнейшей поддержки этих сборок, у всех резко образовались семейные дела, причём они зачем-то через некоторое время после отказа от поддержки ещё и удалили с файловых хостингов выложенные ими ранее сборки и ветки на форумах в которых эти сборки обсуждались.

Тем не менее, пару вариантов найти ещё возможно: минималистская сборка от jajb (я бы из неё ещё убрал GoogleContactsSyncAdapter.apk, GoogleBackupTransport.apk и GoogleFeedback.apk, но не уверен что без них ничего не сломается) и невероятно гибкий и настраиваемый, но уже не поддерживаемый PA Gapps от TKruzze.

Как вариант ещё можно просто удалить «лишние» приложения из уже установленного GApps, для определения списка лишних файлов проще всего сравнить минимальный и максимальный варианты вышеупомянутого PA Gapps.

Замена прошивки и аккаунты

Если только вы уже не приняли все необходимые меры предосторожности с самого начала использования своего телефона, то ваши личные данные уже давно «протекли» и доступны множеству чужих людей. В этом случае я бы рекомендовал сначала просто установить описанные приложения и поэкспериментировать с ними, а когда почувствуете себя с ними достаточно уверенно — удалить с телефона абсолютно все данные (включая содержимое внутренней/внешней SD card) и установить всё с нуля — это не заберёт ваши данные обратно, но хотя бы разорвёт связь между этими данными и вашим телефоном.

Что касается аккаунтов, то в идеале после замены прошивки нужно специально для телефона создать отдельные аккаунты в гугле, фейсбуке, etc. Это обычно не мешает вам использовать свои обычные аккаунты в нужных приложениях, а для всех остальных это сильно ограничит объём доступных им данных (например, «моим» фейсбуком пользуются только несколько игр, которым я дал к нему доступ ради каких-то бонусов).

ВНИМАНИЕ: Если вы покупали приложения в Play Маркет, то если после замены прошивки вы будете использовать тот же самый гугл-аккаунт связь между уже протёкшими данными и вашим телефоном сохранится (по крайней мере для гугла), а если аккаунт будет новый — вы потеряете ранее купленные приложения.

Если для вас замена прошивки и/или создание отдельных аккаунтов для телефона это перебор, то ничего страшного — как я уже писал в начале, способа полноценной и надёжной защиты личных данных на телефоне пока не существует, речь идёт исключительно о том, чтобы прикрыть столько каналов утечки данных, сколько получится. И в вашем случае будет просто прикрыто чуть меньше каналов, чем возможно на данный момент.

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

Как узнать какая версия прошивки android и системы безопасности установлена

Эта информация доступна на экране настроек Android. Независимо от установленной версии Android и независимо от настроек устройства Вы можете просмотреть информацию о версии прошивки данным способом.

Откройте меню приложений — список всех приложений, установленных на Вашем устройстве. Это почти всегда кнопка, расположенная в центре в нижней части главного экрана.

Найдите приложение с названием «Настройки». Нажмите на иконку этого приложения, чтобы попасть в настройки Android.

Прокрутите список и найдите пункт «О телефоне» или «О планшете». Обычно, данная настройка находится в самом низу списка.

Пункт «Версия Android» указывает, какая версия ОС у Вас установлена. Здесь отображается только версия, без кодового слова. Например, «Android 4.1.1», а не «Android 4.1.1 Jelly Bean». Ниже находится список с версиями Android, а также их кодовые названия:

  • Android 7.0: Nougat
  • Android 6.0: Marshmallow
  • Android 5.0 – 5.1.1: Lollipop
  • Android 4.4 – 4.4.4: Kit Kat
  • Android 4.1 – 4.3.1: Jelly Bean
  • Android 4.0 – 4.0.4: Ice Cream Sandwich
  • Android 3.0 – 3.2.6: Honeycomb
  • Android 2.3 – 2.3.7: Gingerbread
  • Android 2.2 – 2.2.3: Froyo
  • Android 2.0 – 2.1: Eclair
  • Android 1.6: Donut
  • Android 1.5: Cupcake

Другие поля также важны. Например, поле «Модель» указывает название Вашего устройства. «Номер сборки» и «Версия ядра» содержит точную информацию о сборке Android. Обычно эти поля используются, чтобы узнать оснащено ли Ваше устройство последними патчами системы безопасности. В Android 6.

В качестве бонуса, можно несколько раз нажать на «Версия Android», чтобы открыть, так называемое, «пасхальное яйцо«. На Android 4.1 – 4.3.1: Jelly Bean это мини-игра, в которой можно смахивать бобы с экрана.

Точная версия Android, который Вы используете, не является единственной важной информацией. Если Вы хотите получить помощь для конкретного устройства, его производитель тоже важен.

Microsoft не разрешает производителям ПК изменять меню «Пуск», панель задач и панель управления, но Google позволяет производителям Android изменять практически все, что они захотят. Разные устройства от одного производителя будут иметь разный интерфейс, так что знать точное название устройства, которое Вы используете, а также его производителя — это важно, когда будете искать информацию или даже кастомные прошивки для конкретного устройства.

Дорогие читатели, сегодня мы с вами обсудим то, как узнать версию прошивки на Андроид. Но прежде всего, нужно поближе познакомиться с самим понятием прошивки. Некоторые пользователи не знают, что это такое, поэтому часто у них возникают проблемы с тем, чтобы, например, обновить прошивку. То есть, они даже не понимают, что им нужно обновить. Однако если вы считаете себя осведомлённым в этом вопросе, можете пропустить этот блок и приступить к основным действиям в следующем. Читайте, как узнать версию прошивки на Android.

Чем же может помочь получение такой информации? Зачем люди пытаются узнать версию Android? Давайте разберёмся, когда есть потребность в этом:

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

Прошивка или Firmware – это программное обеспечение, которое установлено в вашем Android устройстве. Прошивки бывают официальные – их разрабатывает производитель устройства или компания Google, если это устройство из линейки Nexus/Pixel/Android One, а также не официальные – их разрабатывают энтузиасты. В общем, прошивка это набор базового программного обеспечения, которое установлена на вашем устройстве. Без прошивки Android гаджет – это просто кирпич, который даже не включится.

Как узнать прошивку телефона samsung

Шаг 2: Обновление Android в вашей стране. Тогда новая и настроенная версия Android будет протестирована в вашей стране. Местная команда Samsung проверит всю функциональность всех доступных устройств для соответствующих рынков. Кроме того, поставщики телекоммуникационных услуг также тестируют новое обновление для Android и, при необходимости, применяют правильные настройки.

Итак, как узнать прошивку на телефонах Samsung.

  • На устройстве нажмите — Главная;
  • Нажмите — Меню;
  • Выберите — Настройки;
  • Выбрать — О телефоне/Сведения о телефоне;
  • Выбрать – Сведения о ПО.

Найдите «версию Android» или «версию прошивки», для того чтобы разглядеть четкую версию, в каковой функционирует ваше устройство, а также вы можете набрать код *#1234# звонок.

У Samsung прошивка обозначается таким образом:

Больше про Хуавей:  «Нет сети» на телефоне: проблемы и их решение

XE – Языковый пакет (в данном случае – восточная Европа Русский) D – Год выпуска (W–2003, D–2004, E–2005, F–2006, G–2007, H–2008, I–2009, J–2021….) G – Месяц (A=Январь, B=Февраль … K=Ноябрь, L=Декабрь) 1 – Ревизия прошивки. Возьмём к примеру X100XEDG1: цифра в конце – номер прошивки (версии)

В пункте Версия Android указана установленная на данный момент версия.

Откройте меню устройства и выберите Настройки .

Выберите Об устройстве или Сведения о телефоне .

Выберите Сведения о ПО . Если такого пункта нет, перейдите к следующему шагу.

В пункте Версия Android указана установленная на данный момент версия.

Для использования инструкций на сайте Samsung достаточно первой цифры, например на скриншоте ниже установлена 8-я версия.

Откройте меню приложений — список всех приложений, установленных на Вашем устройстве. Это почти всегда кнопка, расположенная в центре в нижней части главного экрана.

Какая из нескольких прошивок новее?

Используя знания, полученные выше вы легко можете узнать какая из нескольких прошивок является более новой. Например, у вас установлена прошивка S8500XXKK7 и вы нашли в интернете прошивку S8500XXKL7 . Давайте определим которая из них новее:

Прошивка выпущена в Ноябре 2021го года, версия 7 S8500XX K K7 — год выпуска: 2021й S8500XXK K 7 — месяц выпуска: Ноябрь S8500XXKK 7 — номер ревизии: 7

Прошивка выпущена в Декабре 2021го года, версия 7 S8500XX K L7 — год выпуска: 2021й S8500XXK L 7 — месяц выпуска: Ноябрь S8500XXKL 7 — номер ревизии: 7

Зайдите в настройки на своем устройстве.

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

Зайдите в настройки на своем устройстве.

В нижней части экрана найдите раздел «О планшете» (иногда он называется «Об устройстве»).

В нашем случае имя прошивки указано в пункте «Версия сборки». В вашем этот пункт может называть «Версия прошивки».

Собственно, на этом все. К слову, обновляться удобнее по воздуху.

XE – Языковый пакет (в данном случае – восточная Европа Русский)
D – Год выпуска (W–2003, D–2004, E–2005, F–2006, G–2007, H–2008, I–2009, J–2021….)
G – Месяц (A=Январь, B=Февраль … K=Ноябрь, L=Декабрь)
1 – Ревизия прошивки.
Возьмём к примеру X100XEDG1:
цифра в конце – номер прошивки (версии) – 1
последняя буква G – месяц – седьмой месяц (по англ. словарю G – седьмая буква)
предпоследняя буква D – год – 04 год
первые две буквы после Х100 – ХЕ – поддержка языков (в этом случае: восточная Европа Русский).

Настройка xprivacy

По большому счёту — это самое сложное из всего описанного в этой статье. XPrivacy позволяет контролировать громадное количество операций и данных, при этом у всех приложений разные потребности и для многих приложений приходится подстраивать ограничения индивидуально.

Я могу дать только рекомендации общего плана:

  • По моим наблюдениям, использовать сервис краудсорсинга для  автоматического получения настроек XPrivacy для приложений — не лучшая  идея. Настройка XPrivacy сложна, поэтому большинство пользователей с ней  не очень хорошо справляются, но с удовольствием отправляют свои  настройки в этот сервис. Выкачивая усреднённые чужие настройки вы  заблокируете примерно 10-20% того, что можно (и нужно) заблокировать.
  • Всё, что умеет блокировать/подделывать XPrivacy — имеет непосредственное  отношение к вашим личным данным. Поэтому блокировать стоит, по  возможности, практически всё.
  • Стоит сразу включить режим «эксперта» и разрешить блокирование системных  приложений.
  • Подготовьте максимально ограничивающий шаблон «по умолчанию» — включите  блокирование и запрос ограничений практически для всех категорий и  операций (включая небезопасные), за исключением:
  • Примените шаблон «по умолчанию» ко всем уже установленным приложениям  (включая системные, особенно GApps!), а потом пройдитесь по ним и  отключите часть ограничений исходя из задач приложения.
  • Если какое-то приложение не работает — посмотрите отчёт «Использование»  в XPrivacy чтобы увидеть что он кому недавно блокировал.
  • Не забывайте, что изменения ограничений вступают в силу через 15 сек.
  • Перед ограничением системных приложений лучше сделать бэкап из recovery.

В CyanogenMod есть свой аналог XPrivacy (Настройки → Конфиденциальность → Защищённый режим), но он позволяет контролировать слишком незначительную часть того, что можно заблокировать через XPrivacy. Одновременное использование Защищённого режима и XPrivacy не рекомендуется.

Определение владельца мобильного телефона

Намиот Д.Е.1, Колосова А.И.2

1 МГУ им. М.В.Ломоносова, факультет ВМК, старший научный сотрудник,

dnamiot@gmail . com 2МГУ им. М.В.Ломоносова, выпускница факультета ВМК, web 5tka cs @ mail . ru

Определение владельца мобильного телефона

КЛЮЧЕВЫЕ СЛОВА:

Мобильный телефон, владение мобильным телефоном, идентификация, модель цифровых сертификатов.

АННОТАЦИЯ:

В работе рассматривается задача подтверждения факта владения мобильным телефоном. В работе рассматривается модель цифровых сертификатов для мобильных устройств. В этой модели каждый мобильный пользователь может создать уникальную цифровую метку для своего телефона и подписать ее с помощью ссылки на свой профиль в социальной сети. После этого появляется возможность искать данные по накопленной базе цифровых сертификатов. Поиск может осуществляться как по идентификации мобильного телефона, так и по атрибутам профиля социальной сети или сетей. Введение

В работе рассматривается модель цифровых сертификатов для мобильных устройств, впервые описанная авторами в работе [1].

Проблема хищений мобильных телефонов остро стоит во всем мире. Как правило, у каждого владельца мобильного телефона хранится достаточное количество важной информации, которую может быть тяжело и которая не предназначена для сторонних пользователей. Как-то – список контактов, фотографии и др., в зависимости от сложности устройства. Поэтому нахождение утерянных аппаратов, равно как и противодействие их использованию, является важной задачей.

В данной работе рассматриваются мобильные устройства с операционной системой Android – смартфоны и др. Это, в большей степени, практический выбор, обусловленный удобством программирования. Рассматриваемая модель может быть применена и к другим мобильным операционным системам.

У всех мобильных аппаратов имеются различные идентификационные номера. Именно эти уникальные идентификаторы и могут быть использованы для нахождения утерянных телефонов, мониторинга установок некоего приложения, генерации технических средств защиты авторских прав (DRM – digital rights management). Например, мобильные операторы, при наличии определенного

оборудования могут полностью или частично прекратить обслуживать украденный телефон, перенаправлять SMS-сообщения с него на другой телефон. Или отследить его место нахождения по GPS [2]. В России подобная практика не так распространена, как в некоторых других странах, однако и у нас есть случаи нахождения украденных телефонов по IMEI номеру.

Предлагаемая модель рассматривает два основных аспекта:

-разработка методики идентификации мобильных аппаратов;

-разработка системы регистрации идентификационных номеров, а также принципов работы с регистрационной базой.

Методы идентификации мобильных телефонов

A. IMEI

IMEI (International Mobile Equipment Identity) – число (обычно 15-разрядное в десятичном представлении), уникальное для каждого использующего его аппарата. Применяется в сотовых телефонах сетей GSM, WCDMA и IDEN а также в некоторых спутниковых телефонах [3].

IMEI присваивается телефону во время изготовления на заводе. Он служит для идентификации устройства в сети и хранится в прошивке аппарата. Как правило, IMEI указывается в четырёх местах: в самом аппарате (в большинстве случаев его можно вывести на экран набором *#06# на клавиатуре), под аккумуляторной батареей, на упаковке и в гарантийном талоне. IMEI играет роль серийного номера аппарата и передаётся в эфир при авторизации в сети. Также IMEI используется для слежения за аппаратами и блокирования краденых телефонов на уровне оператора сотовой связи, что не позволяет в дальнейшем использовать такой аппарат в сети этого оператора, однако не мешает его использованию в других сетях.

В отличие от ESN и MEID, используемых в CDMA и прочих сетях, IMEI используется только для идентификации устройства и не имеет постоянного отношения к абоненту. Вместо него используется номер IMSI, хранящийся на SIM-карте, которую можно вставить в практически любой другой аппарат. Однако существуют специальные системы, позволяющие одному телефону использовать только одну определённую SIM-карту.

Модель и происхождение телефона описываются первыми 8 цифрами IMEI (так называемый TAC). Оставшаяся часть — серийный номер с контрольным числом в конце. Телефонам, поддерживающим одновременную работу с двумя SIM-картами, присваивается два номера IMEI [4].

Производители постоянно совершенствуют методы защиты программного обеспечения аппарата от изменения IMEI. В современных аппаратах IMEI хранится в однократно программируемой зоне памяти и не может быть изменен программными средствами [5].

В некоторых странах, например в Латвии, Великобритании, Республике Беларусь изменение IMEI является уголовно наказуемым

деянием. Имеется также прецедент попытки уголовного преследования за изменение IMEI в России [6].

B . MEID

MEID (Mobile Equipment IDentifier) – глобальный уникальный идентификатор подвижного оборудования, работающий в сетях CDMA, использует тот же базовый формат, что и IMEI [7].

C . IMSI

MSI (International Mobile Subscriber Identity) – международный идентификатор мобильного абонента (индивидуальный номер абонента), ассоциированный с каждым пользователем мобильной связи стандарта GSM, UMTS или CDMA. При регистрации в сети аппарат абонента передаёт IMSI, по которому происходит его идентификация. Во избежание перехвата, этот номер посылается через сеть настолько редко, насколько это возможно — в тех случаях, когда это возможно, вместо него посылается случайно сгенерированный TMSI [8].

В системе GSM идентификатор содержится на SIM-карте в элементарном файле (EF), имеющем идентификатор 6F07. Формат хранения IMSI на SIM-карте описан ETSI в спецификации GSM 11.11. Кроме того, IMSI используется любой мобильной сетью, соединенной с другими сетями (в частности с CDMA или EVDO) таким же образом, как и в GSM сетях. Этот номер связан либо непосредственно с телефоном, либо с R-UIM картой (аналогом SIM карты GSM в системе CDMA) [9].

Длина IMSI, как правило, составляет 15 цифр, но может быть короче. Например: 250-07-ХХХХХХХХХХ. Первые три цифры это MCC (Mobile Country Code, мобильный код страны). В примере 250 – Россия. За ним следует MNC (Mobile Network Code, код мобильной сети). 07 из примера – СМАРТС. Код мобильной сети может содержать две цифры по европейскому стандарту или три по североамериканскому. Все последующие цифры — непосредственно идентификатор пользователя MSIN (Mobile Subscriber Identification Number) [10].

D . Serial number

Серийный номер можно определить у устройств, не обладающих сервисом телефонии начиная с операционной системы Android 2.3 (“Gingerbread”) и у некоторых телефонов [11].

E . Android Id

Это 64 битный номер, который случайным образом генерируется при первом запуске устройства и остается неизменным далее. У устройств с операционной системой более ранних версий чем 2.2 (“Froyo”) он может не определяться [11].

F. Mac-Address

MAC-адрес (от англ. Media Access Control — управление доступом к среде, также Hardware Address) — это уникальный идентификатор, присваиваемый каждой единице оборудования компьютерных сетей. Большинство сетевых протоколов канального уровня используют одно из

трёх пространств MAC-адресов, управляемых IEEE: MAC-48, EUI-48 и EUI-64. Адреса в каждом из пространств теоретически должны быть глобально уникальными. Не все протоколы используют MAC-адреса, и не все протоколы, использующие MAC-адреса, нуждаются в подобной уникальности этих адресов [12].

В широковещательных сетях (таких, как сети на основе Ethernet) MAC-адрес позволяет уникально идентифицировать каждый узел сети и доставлять данные только этому узлу. Таким образом, MAC-адреса формируют основу сетей на канальном уровне, которую используют протоколы более высокого (сетевого) уровня. Для преобразования MAC-адресов в адреса сетевого уровня и обратно применяются специальные протоколы (например, ARP и RARP в сетях IPv4 и NDP в сетях на основе IPv6) [12].

Больше про Хуавей:  Как Заряжаются Беспроводные Наушники в Боксе и Сколько Времени? - ВайФайка.РУ

Адреса вроде MAC-48 наиболее распространены; они используются в таких технологиях, как Ethernet, Token ring, FDDI, WiMAX и др. Они состоят из 48 бит, таким образом, адресное пространство MAC-48 насчитывает 248 (или 281 474 976 710 656) адресов. Согласно подсчётам IEEE, этого запаса адресов хватит по меньшей мере до 2100 года [12].

EUI-48 от MAC-48 отличается лишь семантически: в то время как MAC-48 используется для сетевого оборудования, EUI-48 применяется для других типов аппаратного и программного обеспечения.

Идентификаторы EUI-64 состоят из 64 бит и используются в FireWire, а также в IPv6 в качестве младших 64 бит сетевого адреса узла.

Можно также получить МАС-адрес Wi-Fi или Bluetooth оборудования устройства, однако не рекомендуется использовать его в качестве уникального идентификационного номера, так как не все мобильные устройства имеют Wi-Fi. Если Wi-Fi модуль есть, он должен быть обязательно включен, иначе МАС-адрес не определится. Кроме того, МАС-адрес устройства можно изменить программным путем [12].

Модель цифровых сертификатов

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

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

Владелец телефонного аппарата может бесплатно, по собственной

инициативе, добавить сертификат для своего телефона в общую базу. База сертификатов публично доступна. Следовательно, сильно упрощается процесс проверки владельца телефона. А это, в свою очередь, сможет остановить какой-то значимый процент мобильных абонентов от пользования телефоном, который попал к ним не совсем законным способом. Кроме того, такая база может оказаться подспорьем для официального следствия.

Таким образом, общая идея данной модели состоит не в отслеживании потерянного (похищенного) телефона, а во введении возможности проверки владельца телефона в момент использования телефона. При этом, в первую очередь, имеется в виду использование смартфонов в сети Интернет. Самая простая модель использования: приложение во время авторизации пользователя в социальной сети может проверить, кому принадлежит данный телефон.

Естественно, что ничто не препятствует и операторам связи использовать ту же самую открытую базу данных для проверки владельцев в момент совершения звонков и отправки SMS.

В данной работе качестве уникального идентификатора используются IMEI номер и Android ID. Это позволяет увеличить надежность идентификация Android устройства. На практике, не у всех устройств определяются оба эти номера, но хотя бы один из них определяется практически всегда. Мобильные операторы для взаимодействия с телефоном используют IMEI номер.

Мобильное приложение разработано на Java, в среде Eclipse. Так как именно для этой среды существует официальный плагин Android Developer Tools (ADT), который предоставляет профессиональную среду разработки Android-приложений. Для определения IMEI номера и Android ID воспользовались классами TelephonyManager и Settings. Для определения ссылки на страницу пользователя в Facebook воспользовались некоторыми функциями Facebook SDK. В результате, при нажатии на кнопку регистрации, пользователь перенаправляется в окно авторизации в Facebook. Иными словами, используется стандартная схема авторизации с помощью Facebook в сторонних приложениях.

Взаимодействие с удаленной базой данных осуществлено на PHP с использованием JSON. В качестве удаленной базы данных используется MySQL. Основная таблица содержит 4 столбца: ID, IMEI, AndroidID и Link. Взаимодействие с ней сделано таким образом, чтобы было невозможно добавить строку с каким-то определенным IMEI-номером или Android ID более одного раза.

Для того, чтобы информировать пользователя об успешной отправке запроса с телефона в базу данных, и успешной авторизации в Facebook, добавлено соответствующее всплывающее сообщение (Toast) и функция добавления фото из профайла пользователя с его личной страницы. На рисунке 1 представлен общий вид после авторизации, получившегося в

итоге приложения на Android-эмуляторе. А на рисунке 2 – вид окна авторизации в Facebook.

I 5554:Class-10-NS

IMEI Database

ЗЕ il ♦ 8:39 Basic Controls

ООО

Hardware Buttons

Ф # © ®

1МЕГ Number ; 000000000000000 кмп^паыглплга

Android ID : e3ba0b304f5eaca1

m

Hardware Keyboard

Use your physical keyboard to provide input

Рисунок 1. Авторизация

Для того чтобы просматривать удаленную базу данных приложения авторами был сделан сайт http://fr30706.twl.ru/.

Ь 5554:Class-10-NS

аям

■Ml Г 9:29 Basic Controls

О’-,ЯЯ!И

HpIMEI.

Get Facebook for Android and browse faster.

ф ф ф

Hardware Butions

Already have an account?

Email or Phone Password

New to Facebook?

Create New Account

Forgot password? ■ Kelp Center

Рисунок 2. Авторизация в Facebook

Искать записи в базе данных можно по любому из трех полей: по IMEI номеру, по Android ID, или же по ссылке на личную страницу в Facebook.

Дальнейшие разработки

Можно указать следующие направления развития проекта. Во-первых, можно предложить пользователям физическое изготовление сертификатов. Это может быть реализовано в виде печати наклейки с QR-кодом, которая содержит URL для страницы с результатами поиска данного сертификата в базе данных. Получается некоторая аналогия контекстно-зависимого QR-кода [13].

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

программного API к базе данных. В этом случае, искать подтверждения владения можно будет программно. Например, приложения типа Geo Messages [14] или WATN [15] смогут также проверять законность владения телефоном отправителя сообщений. Развитие проекта входит в число приоритетных работ лаборатории ОИТ [16]. Заключение

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

Если телефон потерян или украден, то в этой базе можно найти контакты владельца. А если он честно подарен, продан и так далее – то можно посмотреть историю владения.

Литература

1. Колосова А., Намиот Д. Цифровые сертификаты для владельцев мобильных телефонов //International Journal of Open Information Technologies. – 2021. – Т. 1. – №. 4. – С. 7-11.

2. Sonia C. V, Aswatha A. R. SAPt: A Stolen Android Phone Tracking Application.

3. Gosden, P., Allen, A., McDonald, D., & Montemurro, M. (2021). A Uniform Resource Name Namespace for the GSM Association (GSMA) and the International Mobile station Equipment Identity (IMEI).

4. GSM Association Non Confidential Official Document IMEI Allocation and Approval Guidelines Version 6.0 (27th July 2021) (http://www.gsma.com/newsroom/wp-content/uploads/2021/03/ts0660tacallocationprocessapproved.pdf).

5. В. Шалькевич, А. Макаревич «Противодействие теневому обороту мобильных телефонов уголовно правовыми мерами», Журнал «Законность и правопорядок», No 3(7)/2008, стр. 36-40.

6. http://www.legislation.gov. uk/ukpga/2002/31/section/1.

7. Atarius R. A Uniform Resource Name Namespace for the Device Identity and the Mobile Equipment Identity (MEID). – 2021.

8. Matsumoto, S., & Sakurai, K. (2021, January). A proposal for the privacy leakage verification tool for Android application developers. In Proceedings of the 7th International Conference on Ubiquitous Information Management and Communication (p. 54). ACM.

9. Fred Gaechter “Chairman of IMSI Oversight Committee” (IOC)(GSMNA Doc 036/02) (http://www.ifast.org/files/IFAST22_015_GSMNALetter.pdf).

10. Abdalla, I., & Venkatesan, S. (2021, April). Scalable addressing of M2M terminals in 4G cellular wireless networks. In Wireless Telecommunications Symposium (WTS), 2021 (pp. 1-6). IEEE.

11. http://developer.samsung.com/android/technical-docs/How-to-retrieve-the-Device-Unique-ID-from-android-device.

12. IEEE Standard for Local and Metropolitan Area Networks: Overview and Architecture (IEEE Std 802®-2001 (R2007)(Revision of IEEE Std 802-1990).

13. Namiot, D., Sneps-Sneppe, M., & Skokov, O. (2021). Context-aware QR-codes. arXiv preprint arXiv:1307.7597.

14. Namiot, D. “Geo messages”, In Ultra Modern Telecommunications and Control Systems and Workshops (ICUMT), 2021 International Congress on (pp. 14-19). IEEE. DOI: 10.1109/ICUMT.2021.5676665

15. Namiot, Dmitry, and Manfred Sneps-Sneppe. “Where Are They Now-Safe Location Sharing.” Internet of Things, Smart Spaces, and Next Generation Networking. Springer Berlin Heidelberg, 2021. 63-74. DOI: 10.1007/978-3-642-32686-8_6

16. Намиот, Д., & Сухомлин, В. (2021). О проектах лаборатории ОИТ International Journal of Open Information Technologies, 1(5), 18-21.

Распаковка и анализ оригинального файла

1

. Сперва нам надо взять оригинальный DEODEX JAR файл, который отвечает за нужную нам часть кода. В нашем случае

HTCExtension.jar2

. Открыть любым архиватором и вытащить от туда classes.dex

3

. С помощью конвертера dex2jar преобразовать его в JAR файл. Команда:

dex2jar.bat classes.dex4

. Открыть полученный classes_dex2jar.jar файл в JD-GUI.

5

. Да, чаще всего JD-GUI декомпилирует код не так как он выглядит в оригинале, оно и понятно, но читать вполне можно. В исходнике мы видим, что подпрограмма проверяет параметры проекта и языковой флаг прошивки. В нашем прискорбном случае возвращается значение TRUE.

    public static boolean isChina()
    {
      if ((HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag == 23));
      while (((HtcBuildFlag.Htc_PROJECT_flag == 1) && (2 == HtcBuildFlag.Htc_LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27))
        return true;
      return false;
    }

6

. Чтобы сделать патч, нам надо дизассемблировать сам Dalvik код. Для этого используем baksmali. Удобнее всего создать отдельную папку и положить туда три файла вместе:

HTCExtension.jarsmali.jarbaksmali.jar

. Даем команду

java -Xmx512m -jar baksmali.jar -a -d -o HTCExtension -x HTCExtension.jar

- это API вашей версии Android. Для JB - это 16
- папка, где находятся все фреймворки прошивки.

В моем случае это была команда
java -Xmx512m -jar baksmali.jar -a 16 -d S:devAndroidAndroid-KitchenWORKING_JB_15systemframework -o HTCExtension -x HTCExtension.jar


7. В нашей вновь созданной папке появилась папка HTCExtension, а в ней наши файлы с Dalvik кодом.
8. Отыскиваем файл по пути comhtcutilcontactsBuildUtils$Customization.java и смотрим код:

.method public static isChina()Z
    .registers 3

    .prologue
    const/4 v0, 0x1

    .line 276
    sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S

    const/16 v2, 0xd8

    if-eq v1, v2, :cond_13

    sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S

    const/16 v2, 0xda

    if-eq v1, v2, :cond_13

    sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S

    const/16 v2, 0x17

    if-ne v1, v2, :cond_14

    .line 297
    :cond_13
    :goto_13
    return v0

    .line 283
    :cond_14
    sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S

    if-ne v1, v0, :cond_1d

    .line 285
    const/4 v1, 0x2

    sget-short v2, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_LANGUAGE_flag:S

    if-eq v1, v2, :cond_13

    .line 291
    :cond_1d
    sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S

    const/16 v2, 0x1b

    if-eq v1, v2, :cond_13

    .line 297
    const/4 v0, 0x0

    goto :goto_13
.end method

9. Страшно, не правда ли? Ничего же не понятно. Но, это дело поправимое. Создав несколько своих патчей и набив тем самым руку, вы легко сможете модифицировать код без сторонних средств. В нашем случае, в этом коде

    .prologue
    const/4 v0, 0x1

происходит присваивание переменной v0 значение 1, то есть TRUE. Далее идут всякие проверки, и если телефон не китайский, то значение переменной изменяется:

    .line 297
    const/4 v0, 0x0

    goto :goto_13 

10. Самый простой способ спасти отца русской демократии, это изменить код на следующий:

    .prologue
    const/4 v0, 0x0

, то есть поменять значение переменной с 1 на 0. То есть что бы ни было, всегда бы возвращалось значение FALSE и в JD-GUI код выглядел бы как

    public static boolean isChina()
    {
      if ((HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag == 23));
      while (((HtcBuildFlag.Htc_PROJECT_flag == 1) && (2 == HtcBuildFlag.Htc_LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27))
        return false;
      return false;
    }

11. Да, метод ,будет работать. Но мы же не ищем легких путей - это раз. Во-вторых не совсем красиво. Хочется кода что-то вроде

    public static boolean isChina()
    {
      return false;
    }

12. А как нам получить Dalvik код данного исходного кода? Для новичков мы сделаем небольшой трюк.

Создание dalvik кода

1. Открываем Android SDK.
2. Создаем новый проект, и в наш единственный тестовый класс пишем следующий код

package ru.habrahabr.test;

public class test
{
	public static boolean isChina()
	{
		return false;
	}
}

3. Компилируем наш проект и затем берем собранное приложение из рабочей области.
4. Кладем собранное приложение в папку, где мы с вами потрошили JAR файл.
5. Даем команду

java -Xmx512m -jar baksmali.jar -a  -d  -o test -x test .apk
6. Мы дизассемблировали только что собранное приложение в Dalvik код.
7. Открываем наш файлик test.smali и видим там код
.method public static isChina()Z .registers 1 .prologue .line 7 const/4 v0, 0x0 return v0 .end method

8. Все, код для патчинга готов.

Накатывание патча

1. Dalvik код замусорен маркерами, указывающими строку кода в оригинальном исходном файле. Это нужно при выводе ошибок, если таковые имеются в вашей программе. Без указаний строк код также прекрасно работает.
2. Удаляем строки с нумерацией строк, копируем и заменяем метод (подпрограмму) в нашем comhtcutilcontactsBuildUtils$Customization.java файле.

.method public static isChina()Z
    .registers 1

    .prologue
    const/4 v0, 0x0

    return v0
.end method

3. Сохраняем файл. Да, забыл сказать, редактор нужен нормальный, например Notepad или EditPlus. Кому какой нравится.

Компиляция и сборка патченного jar файла

1. С помощью backsmali мы распотрошили наш JAR файл, а теперь его надо собрать обратно.
2. Даем команду java -Xmx512m -jar smali.jar -a 16 HTCExtension -o classes.dex
3. В нашей папочке появляется файлик classes.dex
4. Снова открываем HTCExtension.jar файл архиватором и заменяем в нем существующий classes.dex на наш только что созданный.
5. Все, наш HTCExtension.jar содержит модифицированный программный код.

Замена оригинального файла на патченный

Обычно, для рядовых пользователей создаются специальные скрипты, которые через recovery заменяются. Но нам такое не интересно. Во-первых долго и нудно, во-вторых мы же опытные пользователи и можем себе позволить некоторые тонкости.

1. Заменить текущий рабочий файл можно следующими командами, если у вас уже стоит DEODEX прошивка и имеется root доступ:

adb push HTCExtension.jar /sdcard/HTCExtension.jar
adb shell
su
mount -o remount -rw /system
dd if=/system/framework/HTCExtension.jar of=/system/framework/HTCExtension.jar.back
dd if=/sdcard/HTCExtension.jar of=/system/framework/HTCExtension.jar
chmod 644 /system/framework/HTCExtension.jar
rm /data/dalvik-cache/system@framework@HTCExtension.jar@classes.dex
reboot

1-ая команда закидывает патченный файл на флешку
2-ая команда открывает shell
3-ая команда дает root доступ
4-ая команда монтирует систему в режим чтения/записи
5-ая команда делает резервную копию файла
6-ая команда перезаписывает существующий файл новым патченным.
7-ая команда настраивает разрешения
8-ая команда удаляет кэш
9-ая команда делает перезагрузку устройства.

2. Спасибо что дочитали до этого пункта, осталось немного.
3. После перезагрузки ваш новый патченный код вступит в силу.
4. Если код не работает или выскакивает ошибка, то путем не хитрых комбинаций можно вернуть назад резервную копию.

adb shell
su
mount -o remount -rw /system
dd if=/system/framework/HTCExtension.jar.back  of=/system/framework/HTCExtension.jar
rm /data/dalvik-cache/system@framework@HTCExtension.jar@classes.dex
reboot

Эпилог

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

К следующей статье я расскажу как делать Твики. Будет пример использования автоматической записи телефонных звонков родными средствами телефона. Спасибо за ваше внимание.

P.S. Если что-то не понятно или смущает, задавайте вопросы - всегда буду рад ответить и пояснить.

Рекламный идентификатор — реальность

Как обнаружил исследователь Серж Эгельман (Serge Egelman), более 70% приложений в Google Play используют хотя бы один дополнительный идентификатор без предупреждения. Некоторые из них, например 3D Bowling, Clean Master и CamScanner, скачали многие миллионы человек.

Чаще всего в ход идет Android ID, хотя IMEI, MAC-адреса и серийные номера разработчики тоже задействуют. Некоторые приложения отправляют партнерам сразу три идентификатора и более. Так, игра 3D Bowling — видимо, для верности — использует и рекламный идентификатор, и IMEI, и Android ID.

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

Троян в Google Play с сотней миллионов загрузок

Несмотря на то что подобное поведение не соответствует правилам Google Play, вовремя отловить злоупотребляющих идентификаторами разработчиков не так-то просто. Все приложения проверяют перед публикацией, но многие не совсем честные авторы успешно обходят эту проверку.

При этом просто запретить приложениям доступ к идентификаторам устройства Google не может: как мы уже говорили, их используют не только для рекламы. Лишая мобильные программы, например, возможности считывать Android ID, компания Google помешала бы разработчикам защищать свой продукт от нелегального копирования, а значит, нарушила бы их права.

Создание dalvik кода

1
. Открываем Android SDK.
2
. Создаем новый проект, и в наш единственный тестовый класс пишем следующий код

package ru.habrahabr.test;

public class test
{
	public static boolean isChina()
	{
		return false;
	}
}

3
. Компилируем наш проект и затем берем собранное приложение из рабочей области.
4
. Кладем собранное приложение в папку, где мы с вами потрошили JAR файл.
5
. Даем команду

java -Xmx512m -jar baksmali.jar -a  -d  -o test -x test .apk
6. Мы дизассемблировали только что собранное приложение в Dalvik код.
7. Открываем наш файлик test.smali и видим там код
.method public static isChina()Z .registers 1 .prologue .line 7 const/4 v0, 0x0 return v0 .end method

8. Все, код для патчинга готов.

Накатывание патча

1. Dalvik код замусорен маркерами, указывающими строку кода в оригинальном исходном файле. Это нужно при выводе ошибок, если таковые имеются в вашей программе. Без указаний строк код также прекрасно работает.
2. Удаляем строки с нумерацией строк, копируем и заменяем метод (подпрограмму) в нашем comhtcutilcontactsBuildUtils$Customization.java файле.

.method public static isChina()Z
    .registers 1

    .prologue
    const/4 v0, 0x0

    return v0
.end method

3. Сохраняем файл. Да, забыл сказать, редактор нужен нормальный, например Notepad или EditPlus. Кому какой нравится.

Компиляция и сборка патченного jar файла

1. С помощью backsmali мы распотрошили наш JAR файл, а теперь его надо собрать обратно.
2. Даем команду java -Xmx512m -jar smali.jar -a 16 HTCExtension -o classes.dex
3. В нашей папочке появляется файлик classes.dex
4. Снова открываем HTCExtension.jar файл архиватором и заменяем в нем существующий classes.dex на наш только что созданный.
5. Все, наш HTCExtension.jar содержит модифицированный программный код.

Замена оригинального файла на патченный

Обычно, для рядовых пользователей создаются специальные скрипты, которые через recovery заменяются. Но нам такое не интересно. Во-первых долго и нудно, во-вторых мы же опытные пользователи и можем себе позволить некоторые тонкости.

1. Заменить текущий рабочий файл можно следующими командами, если у вас уже стоит DEODEX прошивка и имеется root доступ:

adb push HTCExtension.jar /sdcard/HTCExtension.jar
adb shell
su
mount -o remount -rw /system
dd if=/system/framework/HTCExtension.jar of=/system/framework/HTCExtension.jar.back
dd if=/sdcard/HTCExtension.jar of=/system/framework/HTCExtension.jar
chmod 644 /system/framework/HTCExtension.jar
rm /data/dalvik-cache/system@framework@HTCExtension.jar@classes.dex
reboot

1-ая команда закидывает патченный файл на флешку
2-ая команда открывает shell
3-ая команда дает root доступ
4-ая команда монтирует систему в режим чтения/записи
5-ая команда делает резервную копию файла
6-ая команда перезаписывает существующий файл новым патченным.
7-ая команда настраивает разрешения
8-ая команда удаляет кэш
9-ая команда делает перезагрузку устройства.

2. Спасибо что дочитали до этого пункта, осталось немного.
3. После перезагрузки ваш новый патченный код вступит в силу.
4. Если код не работает или выскакивает ошибка, то путем не хитрых комбинаций можно вернуть назад резервную копию.

adb shell
su
mount -o remount -rw /system
dd if=/system/framework/HTCExtension.jar.back  of=/system/framework/HTCExtension.jar
rm /data/dalvik-cache/system@framework@HTCExtension.jar@classes.dex
reboot

Эпилог

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

К следующей статье я расскажу как делать Твики. Будет пример использования автоматической записи телефонных звонков родными средствами телефона. Спасибо за ваше внимание.

P.S. Если что-то не понятно или смущает, задавайте вопросы - всегда буду рад ответить и пояснить.

Создание патчей

Как я уже и рассказывал, мой телефон изначально имел запрет на использование Google. Ну хоть ты тресни, на Playstore не зайти, учетную запись не настроить, телефонная книга толком не синхронизируется. Зачем нужен такой Android? Долго копаясь в логах (logcat) самого устройства, я нашел записи, которые говорили о том, что использование Google запрещено.

Самое не удобное в Android, вы видите лог, но не знаете какое системное приложение его производит. Чтобы отыскать от куда ноги растут, мне пришлось распотрошить все системные приложения до дизассемблированного Java кода. Это заняло достаточно времени, но я до сих пор пользуюсь проделанной работой при анализе и поиске нужного кода. Этапы получения подобного инструментария следующие:

1

. Сделать DEODEX всей прошивки

2

. Вашу новую DEODEX прошивку надо будет собрать и прошить на телефон. Как это делается — тема другой статьи.

3

. Из каждого файла, находящегося в /system/framework вытащить файл classes.dex и переконвертировать в JAR посредством dex2jar.

4

. Каждый полученный JAR открыть в JD-GUI и пере-сохранить в исходный код

5

. Распаковать исходный код из архива.

В итоге у меня получилось столько папок, сколько было JAR файлов в /system/framework, и каждая папка имела структуру исходных кодов Java.Путем несложных манипуляций, я быстро отыскал то место, которое генерировало записи в logcat.

Не будем рассматривать всю логику запрета, так как для каждого случая это отдельная история. Мне пришлось потратить пару часов, прежде чем я нашел где производятся проверки, построить в голове блок схему алгоритма и понять куда надо лезть, чтобы алгоритм чуть чуть «попортить».

Оказалось все просто. Есть подпрограмма, которая на основе заранее установленных констант, при обращении отвечала, относится ли телефон к Китаю или же нет.

Код находился в файле HTCExtension.jar, а класс, который содержал данную подпрограмму находился в comhtcutilcontactsBuildUtils$Customization.java

1 Звездаслабоватона троечкухорошо!просто отлично! (1 оценок, среднее: 4,00 из 5)
Загрузка...

Расскажите нам ваше мнение:

Ваш адрес email не будет опубликован. Обязательные поля помечены *