Мини-Реверс-Инжиниринг И Модификация Приложений Windows Phone

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

Немного подумав, я решил покопаться в коде игры и добавить небольшой хак на очки.

Итак, вот как разобрать приложение для Windows Phone, что-то в нем изменить и собрать все обратно: Для начала определимся со всем, что нам нужно:

  • Разблокированное устройство Windows Phone (эмулятор тоже будет работать, но удовольствия от игры нет).

  • Установлен WP7.1 SDK или любую альтернативу установке .

    xap на устройство.

  • .

    NET-отражатель для декомпиляции/компиляции сборок.

  • Рефлексил для сохранения сборок
  • ВхГ редактировать значения HEX
  • Телефон7Маркет скачать .

    xap с маркета

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

Для начала скачайте приложение из маркета с помощью Phone7Market. Находим игру поиском, кликаем правой кнопкой мыши и сохраняем в нужную директорию на диске.



Мини-реверс-инжиниринг и модификация приложений Windows Phone

Теперь копируем наш файл .

xap, переименовываем копию в .

zip и распаковываем в папку.

Например, после операций моя папка выглядит примерно так:

Мини-реверс-инжиниринг и модификация приложений Windows Phone

Теперь перейдем к самому интересному.

Распакуйте reflexil и скопируйте путь к нему.

Теперь запустите ReShrper и перейдите в Инструменты -> Надстройки.

нажмите Добавить и вставьте путь к Reflexil.Reflector.dll в папку с reflexil. Эта штука нужна в рефлекторе для того, чтобы редактировать и пересобирать сборки.

Открываем в рефлекторе наш ранее распакованный архив.

Быстро пролистав список библиотек, открываем ту, название которой похоже на приложение.

Скорее всего, это основной проект.

Мини-реверс-инжиниринг и модификация приложений Windows Phone

Класс сразу бросается в глаза Конфигурация .

Подождите, это класс с базовыми ценностями! Теперь вы можете изменить что-то незначительное, например скорость или вероятность появления автомобилей.

Немного подкорректируем скорость начисления очков, вероятность появления препятствий и количество очков за обход препятствий.



Мини-реверс-инжиниринг и модификация приложений Windows Phone

Открытие ВхГ и выберите нашу библиотеку ThreeDMoto.dll .



Мини-реверс-инжиниринг и модификация приложений Windows Phone

Немного страшно, но легко понять.

Находим строку, которую будем менять.

  
   

public static readonly float[] TIMESPAN_OF_SHIFT = new float[] { 0.5f, 1f, 3f, 5f };

Итак, у нас есть значения 0,5, 1, 3, 5. Возвращаемся в HxD и нажимаем поиск.

Будем искать по номеру 3.

Мини-реверс-инжиниринг и модификация приложений Windows Phone

Было найдено несколько значений.

Сейчас ищем 5. Их всего 2. Теперь нам нужно найти место, где 3 и 5 находятся рядом:

Мини-реверс-инжиниринг и модификация приложений Windows Phone

Большой.

Убеждаемся, что стоят именно нужные цифры и заменяем все 4 на 0,1

Мини-реверс-инжиниринг и модификация приложений Windows Phone

Нажмите «Сохранить» и переключитесь на отражатель.

Чтобы убедиться, что мы все сделали правильно.

Удаляем библиотеку из рефлектора и подключаем снова.

Заходим в конфиг и находим нужную строку:

public static readonly float[] TIMESPAN_OF_SHIFT = new float[] { 0.1f, 0.1f, 0.1f, 0.1f };

Итак, конструкция изменилась.

Теперь в проводнике перетаскиваем dll на zip и подтверждаем замену.

Переименуйте .

zip в .

xap и загрузите приложение на устройство.



Мини-реверс-инжиниринг и модификация приложений Windows Phone

И получаем первую ошибку.

Эта ошибка возникает, поскольку пакет .

xap содержит файл с контрольной суммой приложения.

WMAppPRHeader.xml .

Удаляем файл из архива и пробуем еще раз:

Мини-реверс-инжиниринг и модификация приложений Windows Phone

Телефон говорит что-то странное.

Если вдуматься, то такое может возникнуть только из-за редактирования библиотеки без перекомпиляции.

Итак, снова открываем рефлектор с библиотекой и сохраняем нашу библиотеку.



Мини-реверс-инжиниринг и модификация приложений Windows Phone

Снова выполняем действие переименования, перетаскиваем и загружаем проект на устройство.

Это сработало.

Теперь ускорение происходит за четверть секунды, а очки умножаются в 4 раза практически мгновенно.

Теперь отредактируем количество очков за обход препятствия и вероятность появления препятствий на дороге.



Мини-реверс-инжиниринг и модификация приложений Windows Phone

Замените все на:

Мини-реверс-инжиниринг и модификация приложений Windows Phone

Сохраняйте, переименовывайте, копируйте, переименовывайте, загружайте.

Теперь вы легко сможете установить рекорд любого размера.

Оригинальное приложение.

Отредактированное приложение.



Итак, подведем итоги

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

Чтобы усложнить жизнь тем, кто будет это смотреть или редактировать, можно использовать удобные и простые инструменты для обфускации кода и подписи сборок.

Это создаст несколько проблем.

Из-за подписи сборку будет сложнее редактировать, а из-за обфускации будет совершенно непонятно, что редактировать.

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

Теги: #windows phone 7 #WP7 #reflector #Разработка для Windows Phone #обратное проектирование

Вместе с данным постом часто просматривают: