Декомпиляция приложений *.apk

В последнее время стал часто получать на свой мобильный телефон мошеннические SMS и MMS, просящие перейти на сайт, чтобы «просмотреть открытку/сообщение», «скачать приложение» и т.п. Сегодня решил проверить, что конкретно мне хотят подсунуть. Перейдя по одной из таких ссылок через компьютер, было загружено Android-приложение (*.apk) с именем  «opera_6.5.1». В сети сейчас гуляет много вирусов, маскирующихся под якобы новую версию браузера (в прочем, не самого популярного за рубежом, но очень любимого в СНГ), которую срочно нужно обновить. Доверчивые пользователи, скачавшие такое «обновление», получают на свое мобильное устройство вирус, который отсылает с их телефона смс-сообщения на платные номера (естественно, без ведома хозяина), в результате чего пользовательский счет человека в короткий срок может достичь нулевой отметки.

Где-то на Хабре я уже читал статью, как один человек решил декомпилировать ту самую Оперу, только в формате *.jar, чтобы детально разобраться в коде вируса. Но мне попалось приложение в формате *.apk, поэтому я тоже решил его декомпилировать (исключительно технический интерес!).

Для декомпиляции *.apk-приложения мне понадобились только две составляющие: dex2jar (утилита для извлечения классов, которые уже можно декомпилировать) и Java Decompiler (то, чем будем декомпилировать). Для тех, кому необходимо получить ресурсы приложения, то нужно воспользоваться еще и ApkTool.

# C:\Decompile_apk_app\dex2jar-0.0.9.7\dex2jar C:\Decompile_apk_app\opera_6.5.1.apk — данная команда позволяет получить файл opera_6.5.1_dex2jar.jar, который с успехом открывается с помощью Java Decompiler.

# C:\Decompile_apk_app\apktool\apktool d -f C:\Decompile_apk_app\opera_6.5.1.apk C:\Decompile_apk_app\Opera – команда позволяет получить файлы манифестов, ресурсов приложения, и файлы байт-кода в формате *.smali. Здесь можно найти список команд, присутствующих в байт-коде.

Вот так не сложно можно получить доступ если не к 100% исходникам приложения, то хотя бы к той части, которую можно осмысленно понять.