• ! Привет посетитель !

    Зачем данный ресурс нужен ?

    В рунете было много ресурсов с интересными обсуждениями и работами по вирусным технологиям, а также в область ИБ.

    Но со временем у людей меняются интересы, а кто-то просто не может держать такие сайты, сайты удаляются, я подумал а печему-бы не сделать такой архив со статьями на тематику вирусов и ИБ.

    Цель ресурса:

    Собрать какие-то актуальные утеренные обсуждения и работы.

    Пока-что поднял два сайта:

    1) https://archivevx.net/exelab/f/

    2)Vxlab.info - Тут просто сделаю перепост статей сюда:https://archivevx.net/index.php?forums/vxlab-info-Статьи-ресурса.4/

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

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

Друг вокруг

Первым делом окинем взором окрестности, напишем простой и незамысловатый код:
Код:
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{
//есть админ
}

Приплыли​

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