Блог программиста
не только о программировании

Дружественные ресурсы:

IntSystem.org | Веб-разработка, все о ней

DevOps-заметки |

26.05.2017

Kotlin как еще один инструмент для ленивых вирусописателей

На недавно прошедшей конференеции I/O 2017 Google представила поддержку языка программирования Kotlin в Android Studio. В Kotlin заявлена максимально возможная совместимость с Java, в том числе конвертация Java-кода в Kotlin при минимальных изменениях. Под катом результаты эксперимента, насколько это соответствует действительности и как хорошо к этому готовы антивирусные решения.

Что за эксперимент?

Из открытых источников был загружен образец исходного кода, который применялся в малвари. Код написан на Java, был собран стандартными средствами и отправлен на суд virustotal. Затем код был сконвертирован в Kotlin, а все последующие шаги повторены.

Перед загрузкой apk на проверку, они были проверены на работоспособность в отладчике с эмулятором. На рисунке ниже пример работы Kotlin-приложения.

В конце сравниваем результаты, делаем выводы.

Какие результаты?

Как и следовало ожидать, в случае, когда "стандартный" apk имеет 2 детекта, apk, собраный c Kotlin не вызывает никаких подозрений у Avira. Отдельно хочется отметить, что манифест для обоих случаев сам сервис разобрал идентично, поэтому детект по сигнатуре ресурсов маловероятен (все имена, файлы и прочее, что не касается кода совпадают). Вполне вероятно, что для более распространенного кода,для которого  количество детектов было бы выше, результат будет более наглядным, но сходу мне такой найти не удалось, а те, что удавалось (например, размещенный на том же гитхабе Dendroid) требуют такого количества доработок, что проще писать заного, но это идет вразрез с экспериментом.

Итоги

Конвертация из Java в Kotlin действительно в большинстве случаев проходит легко и непринужденно, однако, бывают моменты, на которых конвертация запинается и генерирует некорректный код. О чем IDE заботливо предупреждает программиста.

Но также хочется отметить, что количество правок сильно меньше, чем количество верно сконвертированного кода, а по тем ошибкам, что приходилось исправлять вручную, IDE дает подсказки. Ручные изменения заняли несколько минут, притом что для решения проблем не пришлось пользоваться поисковыми системами, только смотреть на код и исправлять ошибки по аналогии. Т.е. конвертация не автоматическая, но с минимальным вмешательством.

С одной стороны, почему-то мне кажется, что кем-то и относительно скоро эта возможность будет использована, с другой - антивирусные решения по крайней мере в сфере "мобильных" угроз, если можно так выразиться, не настолько эффективны, как хотелось бы. Поэтому надеемся только на себя и остаемся на связи, до скорого!