Модификация приложения ВК для Android

Главная » Инструкции и уроки » Модификация официального приложения Вконтакте для Android
Как оказывается, официальное приложение социальной сети Вконтакте для Android можно в некоторой степени модифицировать, даже в том случае, если нету исходного кода. Такого же рода изменения можно проделывать практически с каждым приложением, игрой или программой для мобильных устройств, которые работают на Java.

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

Для данного процесса понадобятся некоторые вспомогательные программы, список которых я опубликую ниже. Всё это программное обеспечение я запакую в архив, который можно будет скачать по ссылке в этом материале.

  • Android SDK – платформа, которая позволит производить тест получившегося приложения;
  • APKTool – программа, которая в некоторой степени предназначена для редактирования файлов формата .apk;
  • Dex2Jar – программа, преобразующая файлы формата .dex в jar-архивы и для некоторой работы с .apk файлами;
  • JD-GUI – софт для декомпиляции исходного кода, а также его изучения (просмотра).

Теперь собственно потребуется скачать само приложение, которое мы будем изменять. Лучше всего это сделать с официального сайта – VK.com.

Пошаговая инструкция о том, как изменить приложение:

  • Распаковываем приложение с помощью программы APKTool. Чтобы этого сделать, открываем консоль и вводит следующего рода команду:

    apktool d -s -r vk.apk

  • После этого шага появится следующего типа директория:

    │   AndroidManifest.xml
    │   apktool.yml
    │   classes.dex
    │   resources.arsc
    │
    ├───assets
    ├───lib
    └───res

  • Необходимый код будет находиться в файле «classes.dex». Теперь на помощь нам придёт утилита из списка – Dex2Jar. Чтобы осуществить задуманное, в консоли вводим следующую команду:

    d2j-dex2jar classes.dex

  • Преобразованный .jar файл теперь можно спокойно открыть программой JD-GUI. Находим код, который отвечает за авторизацию пользователя – это метод «doAuth» в классе «Auth»;
  • Теперь нам необходимо как-то внедрить свой код в метод «doAuth», который будет отсылать данные пользователя на сторонний сервер. Можно было бы заняться ручной правкой байткода, сгенерированного Java, но это затяжное и занудное занятие. Я решил воспользоваться библиотекой Javassist, которая позволяет производить необходимую модификацию байткода, но при этом писать внедряемый код на Java;
  • Напишем небольшую программу с использованием Javassist, которая добавит в начало метода «doAuth» дополнительный код, осуществляющий отправку данных.


  • Скомпилируем вышеописанный код из консоли:

    javac -cp ./javassist.jar Hook.java

  • Прежде чем запускать получившуюся программу, распакуем Auth.class из jar-файла (который мы получили ранее из dex-файла) в директорию рядом с сохранением полных путей. Также в директории с программой должны присутствовать файлы javassist.jar и android.jar (из Android SDK). Всё, теперь можно запускать:

    java -cp .;javassist.jar;android.jar Hook

  • После успешного выполнения мы получили модифицированный Auth.class, в этом можно убедиться, открыв файл в JD-GUI;
  • Заменим Auth.class в jar-файле с помощью любого архиватора. Воспользуемся d2j-jar2dex.bat и преобразуем jar-файл обратно в dex-файл:

    d2j-jar2dex classes_dex2jar.jar

  • Заменим classes.dex в директории, куда мы распаковывали apk-файл с помощью apktool, и создадим из директории новый apk-файл:

    apktool b vk vk.apk

  • У получившегося файла отсутствует цифровая подпись. Исправим это с помощью d2j-apk-sign из набора dex2jar:

    d2j-apk-sign vk.apk

  • Настало время протестировать получившийся файл. Для этого нам понадобится эмулятор из набора Android SDK или реальное устройство. В случае с эмулятором всё просто: настраиваем эмулятор, запускаем виртуальное устройство, выполняем в консоли adb install vk-signed.apk;
  • Запустим какой-нибудь сетевой снифер (я воспользовался Wireshark), запустим приложение ВКонтакте на эмуляторе и попробуем авторизоваться;
  • Снифер показывает, что данные авторизации были предварительно отправлены на тестовый адрес. Всё работает.


Раздел: Инструкции и уроки | Автор: Wall | Рейтинг популярности: 1597 | Дата: 19-05-2015, 15:58

 Похожие материалы



 Добавить комментарий к материалу
Ваше имя: Ваш E-Mail:

Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера


Все права на программы принадлежат разработчикам.
В случае копирования материалов, обратная индексируемая ссылка на сайт обязательна!
Nonsoc.com © 2012 - 2016 | Мобильная версия | Карта сайта