Чистка для Андроида


Вирусы под андроид. №7 (Чистка APK [1])
Май 16, 2016 – 09:44
5 достойных альтернатив

Привет, дорогой Друг. Давно не было материалов, это все последствия работы. Последнее время что-то очень много навалилось. Но думаю скоро все наладится. Очень часто спрашивают, как же сделать APK чистым?

Историю эту начнем с того, что антивирусы по большей части полагаются на сигнатурный анализ. А значит, они не смогут отследить последовательность выполнения кода в памяти. Давайте перечислим места куда AV любят ставить детект:

  1. Подпись
  2. Ресурсы
  3. Манифест
  4. Последовательность вызываемых функций (Самый сложный)

Чистка подписи

Ну начнем с самого простого, это цифровая подпись. Берёте и подписываете другим сертификатом. Сверяете детекты, если они пропали – значит вы справились. Сертификаты можно генерировать через встроенную утилиту подписи в Android Studio. Я бы даже сказал нужно, ведь неправильно созданный сертификат, это еще 1 детект к вашему зверю.

Чистка ресурсов

Тут уже начинаются сложности, но не такие большие как в след пунктах. Ваша задача сделать приложение совсем не похожее на другое. Что нужно для этого?

  1. Переименовываете все файлы в ресурсах. (не забывайте менять пути в остальных файлах)
  2. Если есть картинки, то желательно к ним применить сжатие, чтобы изменилась контрольная сумма.
  3. Содержимое файлов xml желательно тоже менять, но это не так критично.

Чистка манифеста

Всего 1 файл, а доставляет кучу проблем. Ведь это отправная точка на анализ вашего APK. Тут все пути и все важные классы. Далее делаем следующие шаги:

  1. Изменить имя пакета APK.
  2. Далее идет изменения названия классов указанных в манифесте, при этом не забывайте менять названия файлов и сами классы в файле. Android Studio делает это очень удобно.
  3. Изменение расположение элементов внутри xml.

Чистка кода

Тут вам поможет только фантазия. Основная задача – изменить цепочку вызываемых функций. Можно добавлять мусор или просто изменить алгоритм на другой. Все зависит от того какой у вас проект. Так же вам придется написать какую нибудь простую функцию шифрования статических строк.

Мы возьмем base64:

static String Encode64(String text){ byte data = text.getBytes("UTF-8"); String base64 = Base64.encodeToString(data, Base64.DEFAULT); return base64; } static String Decode64(String base64){ byte data = Base64.decode(base64, Base64.DEFAULT); String text = new String(data, "UTF-8"); return text; }

Source: vxlab.info
Что еще почитать?

Похожие публикации