Как найти имя приложения по UID?
В «истории батареи» я обнаружил, что приложение с UID 10058 использует много батареек.
Как я могу найти имя приложения с UID равным 10058?
6 ответов
Android назначает каждому приложению идентификатор пользователя (ID пользователя) во время установки; в отличие от PID (Process ID), который является временным и постоянно меняется, UID остается постоянным, пока приложение не переустанавливается. UID должен быть уникальным для каждого приложения, за исключением случаев, когда приложение явно запрашивает общий доступ к идентификатору пользователя с другим приложением (для этого существуют ограничения безопасности, два приложения должны быть подписаны с одним и тем же закрытым ключом, то есть от одного и того же разработчика).
Эти приложения заявляют, что отображают UID приложений:
Попробуйте найти /data/system/packages.xml (вам нужен root для просмотра этого файла), каждое установленное приложение должно иметь запись там. Скажем, у меня в телефоне установлен Adobe Reader:
Для приложений, которые попросили поделиться идентификатором пользователя с другим приложением, скажем Handcent:
, тогда атрибут, который вы ищете, это sharedUserId=»10064″
Настроить adb на ПК, подключиться устройство на ПК, запустите оболочку на ПК и введите:
Замените UID идентификатором, который вы ищете, например 10102.
Если Android установлен, из adb shell или приложения эмулятора терминала вы можете сделать:
В выводе все, что должно быть до UID, это имя пакета.
ps перечисляет процессы и grep фильтры для нужного идентификатора.
Но это работает, только если приложение запускается при запуске команды.
В оболочке ADB (или эмуляторе терминала) используйте следующую команду:
и посмотрите в поле «Имя». Это должно быть название процесса. Поэтому в вашем случае это будет « cat /proc /10058 /status «
У меня была аналогичная проблема с Android 6.0, Moto G 2nd Gen с 2014 года. Мне удалось обновить приложение ES File Explorer, и я заметил, что он раздулся, как ад, и всасывает много батареи. Я удалил приложение из системы, но приложение разрешило процессу зомби заняться процессором. UID был похож на ваш 10118, и он перечислялся в статистике батареи как самый голодный ресурсный процесс.
Итак, прежде чем принимать какие-либо решительные меры, попробуйте выяснить, какое приложение дает вам плохое время, удалите его и перезагрузите. Проверка ОС Мониторинг списка использования ЦП, и все должно быть в порядке.
Чтобы найти «все» с помощью UID (или GroupID) на корневом телефоне, включая запущенные процессы, системные приложения и аппаратные датчики:
Подводные камни идентификации Android-устройства
Некоторым разработчикам может понадобится идентифицировать Android-устройства своих пользователей. Чаще всего это делается не для того чтобы распознать именно девайс, а для определения конкретной установки приложения. Также я встречала несколько кейсов, когда это было необходимо, если у разработчика появлялось несколько приложений и он хотел понимать, что они работают в одной среде.
Гугл говорит, что идентифицировать устройство очень просто. Но мы же говорим об Android:)
Данная статья ориентирована на приложения или библиотеки, которые не хотят привязываться к гугловым сервисам.
Итак, давайте погрузимся в это чудесное приключение по получению уникального идентификатора устройства.
Тут мы видим несколько путей:
Advertising ID
Это уникальный для пользователя рекламный идентификатор, предоставляемый службами Google Play. Он необходим для работы рекламы, чтобы Google понимал, какую рекламу можно показывать конкретному пользователю и какая реклама уже была показана с помощью встроенных в приложения рекламных баннеров. А так же это значит, что вы лишитесь этого идентификатора, если ваше приложение будет скачано, к примеру, с Amazon, а помимо этого вам придется втащить в ваше приложение гугловые библиотеки.
Вывод: мы не идентифицируем устройство во всех случаях.
Но мы же хотим наверняка, верно? Тогда идем дальше.
Это международный идентификатор мобильного оборудования, используемый на телефонах стандарта GSM. Номер IMEI используется сетями для идентификации смартфонов и блокировки доступа в сеть украденных или занесенных в черный список девайсов. Но к сожалению с IMEI может возникнуть ряд проблем:
Вывод: мы не идентифицируем устройство во всех случаях и нас еще и могут обмануть:C
MAC-address
It may be possible to retrieve a Mac address from a device’s WiFi or Bluetooth hardware. We do not recommend using this as a unique identifier. To start with, not all devices have WiFi. Also, if the WiFi is not turned on, the hardware may not report the Mac address.
Serial Number
Считается уникальным серийным номером устройства, который остается с ним до “самого конца”. Получить его можно таким способом:
А теперь про проблемы. Во-первых, для получения серийного номера потребуется запросить у пользователя разрешение READ_PHONE_STATE, а пользователь может отказать. Во-вторых, серийный номер можно изменить.
Вывод: мы не идентифицируем устройство во всех случаях, мы должны запросить permission у пользователя, которые их подбешивают и нас все еще могут обмануть.
Android ID
— Вот оно! — должны завопить мы. — Решение всех наших бед!
Android ID — это тоже уникальный идентификатор устройства. Представляет из себя 64-разрядную величину, которая генерируется и сохраняется при первой загрузке устройства.
Получить его можно вот так:
Казалось бы, такая короткая строчка избавляет нас от головной боли по идентификации устройства. Даже ребята из гугл использую Android_ID для LVL в примере.
И тут наши надежды рушатся и ничто уже не будет прежним. После обновления на Android 8 Android_ID теперь стал уникальным для каждого установленного приложения. Но, помимо этого, гугл ведь заботится о нас, так что приложения, которые были установлены до обновления останутся с прежними одинаковыми идентификаторами, которые гугл сохраняет с помощью специально написанного для этого сервиса. Но если приложение будет удалено, а затем заново установлено — Android_ID будет разным. Для того чтобы это не произошло, нужно использовать KeyValueBackup.
Но этот backup сервис нужно зарегистрировать, еще и package name указать. Более того, в документации написано, что это может не сработать по любой причине. И кто в этом виноват? Да никто, просто вот так.
Общий вывод
Если у вас хороший бекенд, то просто собирайте слепок устройства (установленные приложения, сервисы, любые данные об устройстве, которые можете достать) и сравнивайте параметры уже там, какой-то процент изменений считайте приемлемым.
Что такое UID. И с чем его едят.
Для новичков
В Symbian OS UID-ы используются повсеместно для разнообразных идентификаций типов
файлов и увязки файлов с теми или иными приложениями. Конечно, пользователю более понятны обычные
имена файлов и Symbian OS гибко поддерживает имена файлов различной длинны. Но с точки зрения системы,
32-битные номера обеспечивают большую однозначность, систематичность и более легкую идентификацию.
Поэтому UID-ы являются фундаметальной характеристикой ОС.
По определению, UID-тип объекта состоит из трех отдельных UID-ов используемых
в комбинациях. Составные компоненты UID-ов называются UID1, UID2 и UID3 имеют следующие основные
характеристики:
— UID1- может быть рассмотрен как идентификатор на уровне системы; например, исполняемые файлы,
DLL, файловые хранилища все различаются по UID1.
— UID2-различия между объектами имеющими один и тот же UID1 и могут быть рассмотрены как идентификатор
интерфейса; например, статический интерфейс (разделяемая библиотека) и полиморфический интерфейс
(приложение или встраеваемая программная оболочка) DLL-ки отличаются по UID2.
— UID3-идентифицирует объекты, имеющие конкретный UID2 и может рассматриваться как идентификатор
проекта; например, UID3 может быть разделен между всеми объектами, принадлежащими данной программе,
включая библиотеки, если имеются, DLL-ки каркасов,и все документы.
UID-тип это объект типа TUidType, которой можно создать из комбинаций всех
или некоторых из трех возможных UID-ов. Если переменная имеет прелставляет собой UID, то можно выяснить
и значения составляющих её компонентов UID1, UID2 и UID3.
Объект в Symbian OS и, особенно, многие файлы в Symbian OS могут иметь все, несколько,
или вообще не иметь не одного из трех возможных UID-ов.
Вариант с отсутсвием UID-ов необходим для того, чтобы можно было взаимодействовать
с другими системами, позволяя легко и свободно использовать по назначению в Symbian OS не родные
файлы данных. Symbian OS позволяет создавать настраиваемые файловые ассоциации и идентификации даже
когда UID-ы отсутсвуют. Это делается по расширениям имен файлов.
Каждый «родной» документ должен иметь соотвествующий UID1. его значение задается
приложением, создавщим этот документ.
Необходимым является только UID1, но в большинстве случаев разработчики захотят
определить второй и третий UID-ы для документов, которые создает и использует их приложение. Значения
этих UID используются каркасом архитектуры приложения, чтобы управлять связями между приложениями
и их документами. Например, это позволяет при открытии файла определить и запустить связанное с ним
приложение, а также правильно отображать иконку этого приложения, возле файла документа. И наоборот
это позволяет приложению, отсортировывать свои файлы среди прочих.
UID задается из диапазона 0х01000000 до 0x0fffffff.
UID можно в любое время посмотреть, зайдя например в программу SmartFileMan, и нажав клавишу «5» на нужном файле.На экране появятся все три UID-a.
Как определить Device ID на Android
На всех гаджетах, которые работают под управлением операционной оболочки Android есть свой уникальный ID. Он позволяет идентифицировать гаджет среди множества других и отвечает за бесперебойную интеграцию с сервисами Google и другими. Иногда, возникает ситуация, когда срочно надо узнать Device Name, но многие пользователи не знают, как это сделать. Эта статья дает развернутый ответ на вопрос – как узнать Device ID.
Несколько способов определения идентификатора
Существует несколько основных методов, позволяющих узнать идентификатор девайса. Рассмотрим каждый из них:
Номер необходимо записать, чтобы в будущем не возникало проблем с поиском. Многие задают вопрос – как узнать ID планшета Андроид. Такими же способами, если гаджет не имеет выхода в сеть, то только с помощью специальных утилит.
Вызов меню Recovery на OS Android: Видео
Как изменить имя устройства на Андроиде
Теперь рассмотрим еще один важный аспект – как поменять имя устройства на Андроиде. Это можно сделать в меню нескольких опций – для Bluetooth и Wi-Fi (в большинстве гаджетов). Для того чтобы сменить имя на Bluetooth надо активировать модуль. Дальше зайти в “Настройки”.
Активировать дополнительную кнопку и среди предложенных пунктов выбрать «Переименовать устройство».
После выбора, появится строка, где надо будет ввести новое имя для своего гаджета.
После завершения процедуры, каждый кто попробует подключится или передать файлы будет видеть уже новое имя. С Wi-Fi все происходит похожим образом. Надо зайти в меню радио модуля. Клацнуть на кнопку, которая вызывает настройки и выбрать Wlan Direct.
Появится текущее название, в правом углу будет кнопка «Переименовать». После ее нажатия и ввода нового имени, девайс будет переименован.
Выводы
Каждый раз, перед тем как изменить имя гаджета на ОС Android, надо быть очень внимательным, неправильный ввод тех или иных данных может вызвать неправильное функционирование устройства. Также после переименования, придётся подключаться к некоторым устройствам с нуля.
Как определить Device ID на Android: Видео
Поделитесь материалом в соц сетях:
Здравствуйте! У меня такой вопрос. Разработчики одного приложения,которое я скачала,а со временем не стало запускаться,так и вот они (разработчики) просят мой device id. Можно ли им дать этот код для ррешения проблемы
Да, это нужно чтобы разработчики смогли определить модель Вашего телефона и смогли Вам помочь(найти прошивку и проанализировать, что может быть не так)
Доброго времени суток, я случайно изменил свой id, а старый не записал, возможно ли восстановить старый id?
Здравствуйте. В статье же написано, как узнать ID девайса. Первый способ – открыть задний отсек, вытащить аккумуляторную батарею и внимательно посмотреть на пространство под ней. Там должна быть наклейка, где и находится искомый ID. Ну а на счет изменить ID, вы же как-то изменили? Вот таким же способом вы можете назначить старый ID и сохранить его. Но, вот еще один вариант, приложение Android ID Changer (скачать модно на сайте 4PDA). Приложение требует root прав.
Забанили в чате рулетка за то,что показывал как в танчики на ps4 играю…если id поменять,то это поможет вернуться на его просторы?…напишите пожалуйста на почту…спасибо!
Здравствуйте. Какой именно id вы хотите поменять? На чьи просмотры вернутся?
Здравствуйте! Скажите пожалуйста, ID девайса и ID провайдера это одно и тоже?
Здравствуйте, выше была тема о чат рулетке, присоединяюсь к Артуру, но хочу добавить, что везде пишут, что бан ставится именно на саму камеру якобы, так вот мой вопрос исходя из этого, возможно ли как-то сменить название камеры на Андроиде, или же сменить ID самой камеры, либо какие-то альтернативные варианты?
Нет. Аббревиатура ID расшифровывается как идентификатор. То есть, это просто идентификатор устройства. Теперь отвечая на ваш вопрос – ID девайса – это идентификатор устройства. А ID провайдера – это идентификатор провайдера. То есть, это некий уникальный номер, по которому можно понять, что это за устройство. Это как идентификационный налоговый номер человека, только касающийся какого-то устройства. Вот и все. Учитывая вышесказанное, ID устройства (device) и ID провайдера – это разные вещи. То есть, и то и то является идентификатором, но это идентификаторы разных вещей. В первом случае это идентификатор какого-то устройства, а во втором случае – это идентификатор провайдера.
Здравствуйте!
Подскажите есть ли как связан Device ID и номер телефона абонента?
Есть ли между ними взаимосвязь?
Здравствуйте. Давайте рассуждать логично. Device ID – это нечто вроде серийного номера устройства. В дословном переводе это звучит так – идентификатор устройства (то есть, это некий номер, по которому можно идентифицировать устройство, будь то телефон, планшет, холодильник или стиральная машинка). По сути, это как ваш идентификационный налоговый номер, по которому налоговая служба вас идентифицирует, как плательщика налогов, как гражданина определенной страны. А номер телефона абонента – это номер вашего мобильного телефона, который выдает мобильная компания. То есть, грубо говоря, это номер СИМ-карты, которую вы вставляете в телефон. И по этому номеру вам могут звонить другие абоненты мобильной связи. Вот вам вопрос – есть ли между этими понятиями связь? Ответ будет двузначным, так как в каких-то случаях связь есть, но если говорить в общем, то это разные понятия. Например, по номеру мобильного телефона можно узнать ID устройства, можно заблокировать телефон и так далее.
Здравствуйте. Возможно, проблема в программной части. Где-то произошел какой-то сбой. Найти этот сбой вы не сможете. Поэтому рекомендую сразу сделать сброс до заводских параметров – http://v-androide.com/instruktsii/obsluzhivanie/sbros-android.html. Если не поможет, то возможно, поможет прошивка. По поводу прошивания, вот для начала статья – http://v-androide.com/instruktsii/obsluzhivanie/kak-proshit-android.html. Но, если вы не уверены. что сами сможете прошить, то лучше сразу отнесите в ремонт. И тут подбираемся к третьему варианту. Возможно, что сам модем работает не корректно (аппаратная проблема). В таком случае надо просто заменить 3G модем в телефоне (если это возможно и если есть мастера, которые смогут это сделать). Самостоятельно вы точно не сможете заменить.
Здравствуйте. У меня такая проблема: полученные из Интернет-магазина blutooth-наушники не обнаруживаются ни одним устройством. Написала продавцу – он посоветовал удалить ID смартфона. Вот что он пишет: a. Turn off your bluetooth and delete “Device ID “ on your mobile phone
b.In the off state, long press the MFB button of earphone for 5 seconds, until the red and green led lights alternately c.Turn on your mobile phone Bluetooth and search for device ID “G18″
d.connect bluetooth earphone with your mobile phone, you can enjoy the call and listen to music function”.
Но ведь тогда удалится вся информация – сообщения, контакты, приложения и т.д.
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Основы безопасности операционной системы Android. Native user space, ч.2
Вступление
Сегодня я продолжу рассматривать безопасность на уровне немного выше ядра. Во второй части мы рассмотрим, откуда появляются system.img, userdata.img и cache.img, а также как обеспечивается безопасность в Native user space.
Всем кому интересно, добро пожаловать!
Список статей
Что подразумевается под Native user space
Под Native user space подразумеваются все компоненты пространства пользователя, которые выполняются вне Dalvik Virtual Machine, и которые не являются частью Linux kernel. Native user space — это исполняемые файлы, скомпилированные под определенную архитектуру. К ним относятся исполняемые файлы, которые запускаются из init скрипта автоматически или в случае наступления какого-либо события, toolbox утилиты, а также некоторые исполняемые файлы, которые пользователь может запустить из-под shell.
Начало
Как я уже рассказывал в первой части, в основе Android лежит Linux kernel. Как и во всех Linux системах, в основе безопасности Android лежит access control. Т.е. каждый ресурс (например, файл) содержит мета-информацию о том, кто создал этот файл — owner (владелец) — и к какой основной группе (owner group) принадлежит owner (владелец). Каждый процесс запускается от имени какого-то user (пользователя). У каждого пользователя есть основная группа. Кроме того он может являться членом других групп. Таким образом, если к каждому ресурсу прикрепить информацию (в формате rwxrwxrwx) о том, кто может читать/писать/исполнять ресурс (например, файл), то можно контролировать доступ к этому файлу. Например, файлу можно назначить разрешения: что может делать с этим файлом owner (владелец) этого файла; что могут делать пользователи, которые входят в состав owner group; что могут творить все остальные. Здесь об этом можно почитать подробнее.
Но у Android есть некоторые отличия. Во-первых, изначально Android — это операционная система для телефонов, которые, как известно, относятся к очень личным вещам и которые мы не любим давать в чужие руки. То есть она была задумана как операционная система, у которой только один пользователь. Поэтому было принято решение использовать различных Linux users для обеспечения безопасности (для каждого приложения — отдельный пользователь, как я уже рассказывал в первой статье). Во-вторых, в Android некоторые user (пользователи) и их UID (идентификаторы) были жестко запрограммированы в систему, что вызывает очень много нареканий людей связанных с безопасностью (хотя я, если честно, не очень понимаю, почему критикуется такой подход). Мы уже видели этих пользователей в файле system/core/include/private/android_filesystem_config.h Например, root имеет идентификатор 0, а system — 1000.
Как я уже отмечал, процесс запускается от имени того же пользователя (UID), что и процесс, который запускает этот новый процесс, т.е. UID(calling_process) == UID (called_process). Первый процесс, который запускается в Android — init — запускается от имени root (UID == 0). Таким образом, по-идее, все процессы также должны быть запущены от имени того же пользователи. Так оно, наверное, бы и было. Но, во-первых, процессы, запущенные от имени привилегированного пользователя (а так же те, кто обладает определенными capabilities), могут изменять свой UID на менее привилегированный. А во-вторых, в Android при запуске демонов в init.rc скрипте так же можно указать, с привилегиями какого пользователя и каких групп запускать данный процесс.
Все процессы, которые будут запущены через этих демонов, уже не будут иметь root привилегии.
System, data и cache
Я столько раз анонсировал эту тему, что можно было подумать, что она очень сложная и запутанная. На самом деле, это не так. System.img, userdata.img и cache.img — то, что получается в результате компиляции операционной системы Android. То есть в результате сборки системы получаются эти три файла, которые мы и записываем на наше устройство.
Но самое важно здесь не это. Благодаря тому, что в Android системе user name и UID системных пользователей жестко запрограммированы, уже на этапе компиляции мы можем определить права доступа различных системных пользователей к различным директориям в данных образах. Эти права доступа указаны в файле system/core/include/private/android_filesystem_config.h, который мы уже рассматривали в первой статье. Права доступа определяются отдельно для директорий (android_dirs[]) и отдельно для файлов (android_files[]) следующим образом:
А функция static inline void fs_config(const char *path, int dir, unsigned *uid, unsigned *gid, unsigned *mode, uint64_t *capabilities), которая определена дальше в этом файле отвечает за выставление owner, owner group, capabilities и прав доступа. Эта функция вызывается во время сборки образа.
В общем здесь всё должно быть более-менее понятно, за исключением установки флагов прав доступа (setuid и setgid) для некоторых файлов (например, для «system/xbin/su» права доступа определены как 06755, где первая 6 означает, что выставлен флаг установки ID пользователя (4) и флаг установки ID группы (2)). Установка этих флагов означает, что пользователь может повысить права запускаемого процесса до уровня owner (владельца) файла или owner group (группы владельца). В случае Android, каждое приложение — это пользователь со своими UID и GID. Таким образом, по умолчанию если вы из своего приложения запускаете какой-нибудь native executable, он исполняется с теми же UID и GID, как и приложение его вызвавшее. Установка данных флагов прав доступа позволяет выполнить native executable с правами владельца. В нашем случае, владелец — AID_ROOT (root). Происходит это следующим обрзазом system/extras/su/su.c:
Т.е. вызываются функции setuid и setgid. В этом случае, если данные функции выполнились успешно, то процесс начинает работать от имени owner и owner group данного файла. В нашем примере, данный процесс получает права суперпользователя, т.е. он может делать всё, что ему пожелается 🙂 Подобная анархия не всегда оправдана, поэтому в Linux ввели понятие capabilities. Так приложению «run-as» не нужны всё права суперпользователя, ему достаточно иметь возможность только менять свой идентификатор, чтобы запускать приложения от имени различных пользователей. Кстати, capabilities похоже появились недавно — в Android 2.3.x я их не встречал.
Безопасность
В случае привилегированных программ (типа, su) необходимо ограничивать круг приложений, которые могут вызывать эти программы. В противном случае любое приложение может получить права суперпользователя. Поэтому очень часто в такие программы встраивают проверку по UID:
Т.е. программа вначале проверяет, от чьего имени запущен вызывающий процесс, используя функцию getuid(). А потом сравнивает эти значения со значениями, которые жестко запрограммированы в систему. В данном случае, только процессы запущенные от имени пользователей «system» и «root» имеют право использовать su.
Заключение
В данной статье мы закончили разбирать, как обеспечивается безопасность на уровне Native user space. В следующих статьях я планирую разобрать, как работают permission (разрешения), но в связи с большой текущей загрузкой не знаю, когда приступлю к их написанию. Как всегда, буду очень рад дополнениям и исправлениям.





