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

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

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

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

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

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

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

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

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

Вирусы под андроид. №6 (Мониторинг приложений)

Всем привет из далёких уголков нашей любимой и необъятной страны. Сегодня мы поговорим о мониторинге приложений. Это важный урок, который позволит отслеживать приложения и считать статистику запусков. Для начала нужно понять что такое приложение и как оно работает.

Нудная теория​

Любое приложение делится на две части:

  1. Background — сервисы и тому подобное.
  2. Activity — то что показывается юзеру.
У приложения может быть много Activity, одни могут быть доступны из меню приложений андроида, а другие вызываются через код. Каждое activity имеет свое имя и структуру. К примеру, у нас есть приложение «com.microsoft.hack» (это имя для package) и есть activity «startpage«, тогда полное название данной activity будет «com.microsoft.hack.startpage«. Названия могут быть вложенными, это определяется структурой папок и расположением «.java» файлов.

Подготовка к слежению​

Что нам потребуется?

  1. Создать процесс (сервис к примеру), который будет раз в N секунд запрашивать ActivityManager и проверять какое приложение наверху.
  2. Выполнять любые действия, принимая во внимания эту информацию.
Для начала идем в Manifest, запрашиваем права, для работы с ActivityManager:
Код:
<uses-permission android:name="android.permission.GET_TASKS" />

и регистрируем сервис:
Код:
<service android:name=".Monitor" />

Создаем наш сервис, где будем вести обработку:
Код:
public class Monitor extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return Service.START_STICKY;
}
 
@Override
public IBinder onBind(Intent intent) {
throw new UnsupportedOperationException("");
}
 
@Override
public void onCreate()
{
MyTimerTask myTask = new MyTimerTask();
Timer myTimer = new Timer();
myTimer.schedule(myTask, 0, 1000);
}
 
class MyTimerTask extends TimerTask {
public void run() {
// выполнение кода анализа процессов.
}
}
}

Запуск в первой activity, которая стартует при запуске приложения:
Код:
context.startService(new Intent(context, Monitor.class));

Переходим к обработке:
Код:
ActivityManager am = (ActivityManager) Context.getSystemService(cnt.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
app = taskInfo.get(0).topActivity.getClassName();
//*log place

После чего в app лежит та самая строка с activity.

Важный момент: мы можем ставить обработку как на всё приложение, так и на отдельные его окошки.

Как я узнаю какие существуют названия и как их посмотреть?
Это очень просто, заместо «//*log place» пишем код:
Код:
Log.w("log",app);

и увидим в logcat логи всех переключаемых приложений.

Как мне вставить свою обработку?
Нужно написать после получения переменной app:
Код:
if(app.equals("name_activity"){
// делаем действия
}

Всегда приходит конец​

Вот и материал пришел к логическому концу. Это хорошая база для написание инжектов, обработки действий для запущенных приложений, сбора статистики и всего что может прийти Вам в голову.
Спасибо за внимание =)