Се­год­ня мы с тобой напишем чит для шутера AssaultCube на Android. Но сна­чала зас­тавим игру работать и в про­цес­се изу­чим при­емы деком­пиляции и сбор­ки APK, а так­же перенап­равле­ния тра­фика и под­делки игро­вого сер­вера.

warning

Ис­поль­зование читов наруша­ет поль­зователь­ское сог­лашение игры, что может пов­лечь юри­дичес­кое прес­ледова­ние. Мы обсужда­ем здесь соз­дание чита исклю­читель­но в целях обу­чения. Автор и редак­ция не несут ответс­твен­ности за воз­можные пос­ледс­твия при­мене­ния и рас­простра­нения такого ПО.

Да­вай для начала про­бежим­ся по теории. Прог­раммы и игры для Android обыч­но пишут с при­мене­нием сле­дующих язы­ков прог­рамми­рова­ния и тех­нологий:

  • Java — тра­дици­онный и самый рас­простра­нен­ный вари­ант. Код ком­пилиру­ется в байт‑код Java, затем в DEX для Dalvik/ART;
  • Kotlin — сов­ремен­ный язык от JetBrains, офи­циаль­но под­держи­вает­ся Google с 2017 года. Сов­местим с Java, более лаконич­ный и безопас­ный;
  • C/C++ — исполь­зуют­ся через Android NDK (Native Development Kit) для высокоп­роиз­водитель­ных модулей, игр, биб­лиотек;
  • Dart (Flutter) — кросс‑плат­формен­ный фрей­мворк от Google;
  • JavaScript/TypeScript — час­то исполь­зуют­ся через React Native, Cordova;
  • C# — мож­но исполь­зовать через Xamarin.

Ре­зуль­тат ком­пиляции Android-при­ложе­ния — это файл с рас­ширени­ем .apk (Android Package). APK — это ZIP-архив, содер­жащий сле­дующие ком­понен­ты:

  • AndroidManifest.xml — манифест при­ложе­ния, вклю­чает опи­сание ком­понен­тов, раз­решений, точек вхо­да;
  • classes.dex — ском­пилиро­ван­ный байт‑код Dalvik/ART (основной код при­ложе­ния);
  • resources.arsc — ском­пилиро­ван­ные ресур­сы (стро­ки, сти­ли, атри­буты);
  • res/ — про­чие ресур­сы (изоб­ражения, layout XML и дру­гое);
  • META-INF/ — метадан­ные, под­писи APK;
  • assets/ — про­изволь­ные фай­лы, дос­тупные при­ложе­нию в ран­тай­ме;
  • lib/ — натив­ные биб­лиоте­ки (соот­ветс­тву­ют архи­тек­турам: armeabi-v7a, arm64-v8a и так далее).
Структура файла
Струк­тура фай­ла
 

Настраиваем эмулятор

Все дей­ствия будем про­водить в эму­лято­ре, а не на реаль­ном устрой­стве, что­бы его слу­чай­но не окир­пичить. Из всех эму­лято­ров мой выбор пал на AVD, который пос­тавля­ется вмес­те с Android Studio. Уста­нав­лива­ем и запус­каем. Теперь соз­даем экзем­пляр устрой­ства:

  1. От­кры­ваем Virtual Device Manager.
  2. Ви­дим, что уже есть готовое устрой­ство, и дуб­лиру­ем его.
  3. Убе­дим­ся, что у устрой­ств выб­ран сер­вис Google Play Store.
  4. За­пус­тим и про­верим, что все у нас работа­ет.
Создание виртуальных устройств
Соз­дание вир­туаль­ных устрой­ств
 

Ставим AssaultCube

Для начала заг­рузим игру AssaultCube, на которой мы будем упражнять­ся. Ее нуж­но уста­новить на оба устрой­ства. Для это­го откры­ваем коман­дную стро­ку и перехо­дим вот в этот каталог (там хра­нят­ся все ути­литы):

%LOCALAPPDATA%\Android\Sdk\platform-tools

Вы­пол­няем коман­ду adb devices, что­бы прос­мотреть спи­сок дос­тупных эму­лято­ров. Они будут пред­став­лены в фор­мате <name>-<port> <type>, нап­ример emulator-5554 device.

Те­перь уста­новим наш APK:

adb -s emulator-5554 install myapp.apk

Как вари­ант, мож­но прос­то перета­щить APK на эму­лятор и под­твер­дить уста­нов­ку.

Установка APK-файла
Ус­танов­ка APK-фай­ла

В какой‑то момент тебе может понадо­бить­ся уда­лить APK. Сде­лать это мож­но вот как. Сна­чала смот­рим спи­сок уста­нов­ленных пакетов:

adb -s emulator-5554 shell pm list packages | sort

За­тем уда­ляем ненуж­ный:

adb -s <device-serial> shell pm uninstall <app-package-name>

Нап­ример:

adb -s emulator-5554 shell pm uninstall net.cubers.assaultcube
Удаление файла APK
Уда­ление фай­ла APK

Пос­ле того как мы уста­нови­ли AssaultCube, запус­тим ее и вой­дем в меню сетевой игры. Ничего не про­исхо­дит? Я тоже стол­кнул­ся с этой проб­лемой, но потом нашел режим раз­работ­ки.

Переключение в режим разработки
Пе­рек­лючение в режим раз­работ­ки

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

Неудачное подключение
Не­удач­ное под­клю­чение
 

Перенаправляем трафик на локальный сервер

Ви­димо, игро­вые сер­веры мер­твы. Но мы можем перенап­равить под­клю­чение на локаль­ный сер­вер. Нас­трой­ку и запуск сер­вера я опи­сывал во вто­рой статье серии «Чит сво­ими руками».

Перенаправление трафика
Пе­ренап­равле­ние тра­фика

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    1 Комментарий
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии