Как ломать программы Андроид

Для выполнения описанных в статье действий понадобится ряд инструментов, и главный инструмент — это Linux. Да, многие из названных далее программ могут работать и в Windows, но в любых операциях, связанных с Android и его приложениями, лучше не полагаться на детище Билли. В Linux практически все сделать проще, командная строка здесь в разы удобнее (она нам ох как понадобится), а некоторые инструменты просто недоступны для других ОС.

После установки Linux в виртуалку или второй системой сразу устанавливаем средства разработки на Java и виртуальную машину. В Ubuntu это можно сделать с помощью одной команды:

$ sudo apt-get install openjdk-7-jdk

Также нам нужны четыре инструмента для распаковки и декомпиляции приложений:

  • Apktool — швейцарский армейский нож для распаковки и запаковки приложений;
  • Jadx — декомпилятор байт-кода Dalvik в код на Java;
  • Backsmali — дизассемблер кода Dalvik (не пугайся, с настоящим ассемблером он имеет мало общего);
  • Sign — утилита для подписи пакетов.

Для удобства создадим в домашнем каталоге подкаталог Android и скачаем эти инструменты в него:

Как взломать любую игру на монеты и гемы

$ cd ~ $ mkdir ~/Android cd ~/Android $ wget https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.2.0.jar $ wget https://github.com/skylot/jadx/releases/download/v0.6.0/jadx-0.6.0.zip $ wget https://github.com/appium/sign/raw/master/dist/sign.jar $ wget https://bitbucket.org/JesusFreke/smali/downloads/baksmali-2.1.3.jar $ mkdir jadx cd jadx $ unzip ../jadx-0.6.0.zip

Добавим в конец файла ~/.bashrc следующие строки:

alias apktool=’java -jar ~/Android/apktool_2.2.0.jar’ alias jadx-gui=’~/Android/jadx/bin/jadx-gui’ alias baksmali=’java -jar ~/Android/baksmali-2.1.3.jar’ alias sign=’java -jar ~/Android/sign.jar’ alias javac=’javac -classpath /home/j1m/Android/android-sdk-linux/platforms/android-23/android.jar’ alias dx=’/home/j1m/Android/android-sdk-linux/build-tools/23.0.3/dx’

Они нужны для того, чтобы вместо длинных и неудобных команд вроде java -jar ~/Android/sign.jar можно было набрать просто sign.

Взломанные программы для андроид телефона

MegaDroid.RU » ВСЕ ПОДБОРКИ » Взломанные программы

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

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

Zemana Antivirus cd asap # unzip asap.apk

Да, APK — это обычный архив ZIP, но тем не менее он имеет четкую структуру:

  • META-INF — каталог, содержащий файлы MANIFEST.MF, CERT.MF и CERT.RSA. Первые два — список всех файлов пакета и их контрольных сумм, последний содержит открытый ключ разработчика и созданную с помощью закрытого ключа цифровую подпись файла CERT.MF. Эти данные нужны, чтобы при установке пакета система смогла выяснить, что пакет не был модифицирован и действительно создан его автором. Это важно, так как, поскольку нет возможности подделать цифровую подпись пакета (для этого нужен закрытый ключ), модифицированный пакет придется подписывать другим ключом;
  • res — ресурсы приложения. Здесь находятся иконка (mipmap), переводы строк (values), изображения (drawable), а также описания интерфейса приложения (layout). Все их можно модифицировать, чтобы изменить внешний вид приложения. Правда, файлы XML придется сначала «разжать» — для улучшения производительности они хранятся в бинарном формате;
  • classes.dex — код приложения в форме байт-кода виртуальной машины Dalvik. Обычно приложения содержат только один такой файл, но, используя директиву multiDex, разработчик может заставить среду разработки разбить его на множество более мелких для улучшения производительности или преодоления ограничения на 65 536 методов в одном dex-файле;
  • AndroidManifest.xml — манифест приложения, описывающий его структуру, включая активности, сервисы, обработчики интентов и так далее. Опять же в формате бинарного XML.

Также пакет может содержать другие каталоги, например assets (любые файлы, включенные разработчиком, в данном случае — шрифты и база данных) и lib (нативные библиотеки, созданные с использованием Android NDK).

Как Сломать Игру Через Телефон в 2023 году

Легальные способы

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

1. Скидки и акции — цены в Гугл Плей постоянно меняются и иногда разработчики устраивают распродажи. Для удобства можно воспользоваться специальными программами AppSales или Best App Sale, которые автоматически отслеживают и оповещают о новых скидках и акциях.

2. Альтернатива — для поиска похожих программ можно воспользоваться сайтом AlternativeTo.net. Просто введите в строку поиска название нужной утилиты, а затем отфильтруйте в результатах только бесплатные.

3. Приложение дня — установите приложение AppGratis или MyAppFree и узнавайте о новых приложениях, которые на сутки стали бесплатными.

4. Amazon Underground — воспользуйтесь магазином приложений компании Амазон. Особенность этого маркета в том, что для продвижения Amazon каждый день делает полностью бесплатным одно из наименований. Кроме этого, периодически устраиваются разнообразные акции и распродажи, в рамках которых статус бесплатных получают целые наборы действительно ценных и достойных программ.

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

Изучаем код

Само собой разумеется, просто разархивировать пакет недостаточно. Чтобы разобраться в работе приложения, необходимо декомпилировать файл classes.dex.

Для этого мы воспользуемся jadx-gui. Запускаем, выбираем asap.apk и видим слева список пакетов Java, включенных в APK. В данном случае это пакеты android.support — официальная библиотека Google, реализующая поддержку функций новых версий Android в старых (например, чтобы получить Material Design в Android 4.1), com.google.android.gms — Google Mobile Services, com.nispok.snakbar — реализация GUI-элемента snakbar, а также несколько других.

Основной код приложения содержится в пакете com.citc.asap, именно такое имя носит и само приложение в Google Store и на устройстве. Открываем его и видим больше десятка каталогов и множество исходников Java. Наша задача — сделать приложение «оплаченным», не платя за него. Но как найти нужный файл, реализующий проверку на оплату? Скорее всего, он будет содержать в имени слово billing. Пробегаемся по исходникам в поисках нужного нам файла и натыкаемся на исходник BaseBillingFragment в подкаталоге (пакете) fragments:

Это очень простой класс Java, в котором есть интересный метод:

protected boolean hasPrime()

Все, что он делает, — просто возвращает значение поля mHasPrime, однако интересен он не этим, а своим именем. Дело в том, что платная (точнее, оплаченная) версия ASAP называется Prime, и очевидно, что метод hasPrime как раз и нужен для проверки оплаты приложения. Чтобы подтвердить свою догадку, сохраним декомпилированные исходники (File -> Save all) в каталог и попробуем найти в них вызовы hasPrime():

Совпадений немного, основной «пользователь» hasPrime() — это SettingsFragment, то есть исходник, отвечающий за формирование окна настроек. Учитывая, что Prime-версия отличается от бесплатной именно тем, что в ней разблокированы дополнительные поля настроек, уже сейчас мы можем быть на 90% уверены, что hasPrime() — нужный нам метод. Скорее всего, именно с его помощью приложение выясняет, куплена ли Prime-версия. Осталось только убедиться в этом окончательно, подменив код метода на свой.

Взломанный Google Play

Третий способ более сложный и осуществляется с помощью взломанного Плей Маркета, который можно взломать самостоятельно или скачать уже взломанный. Для того чтобы взломать Play Market вам понадобятся Рут права, установщик BusyBox и приложение Lucky Patcher.

Если у вас всё это есть, то следуйте дальнейшей инструкции:

Читайте также:
Как выключить программу в Mac OS

Как вернуть платеж в Google Play

  1. Запустите Лаки Патчер, откройте вкладку «инструменты» и нажмите «Установить модифицированный Google Play».
  2. После завершения установки откройте Google Play и купите любое платное приложение.
  3. Затем нажимаем кнопку «вернуть платеж».
  4. Платеж отменен, а приложение осталось на вашем устройстве.

Помните, вернуть деньги за покупку приложения таким образом можно всего один раз и в течении 15 минут!

Чтобы создать модифицированный APK скачанной игры или приложения:

  1. Откройте Lucky Patcher.
  2. Выберите нужное приложение.
  3. Затем пункт «Меню патчей» и нажмите кнопку «Создать измененный apk».
  4. Далее выберите «Apk с вырезанной лицензией».
  5. В следующем окне поставьте галочки в двух первых пунктах и нажмите «пересобрать приложение».

Lucky Patcher — это патчер игр и приложений Андроид, с функциями вырезки рекламы и проверки лицензии. Также программа обладает возможностью клонирования APK и заменой оригинального Google Play Market’a на взломанный, для запуска «пиратских» версий софта.

Также вам может понадобиться установщик BusyBox, который доступен для скачивания в Гугл Плей.

Вносим правки

Метод hasPrime() очень прост: он возвращает значение поля mHasPrime, которое имеет тип boolean. Нетрудно предположить, что в случае, если приложение оплачено, hasPrime() вернет true, иначе вернет false. Наша задача — сделать так, чтобы метод всегда возвращал true и остальная часть приложения думала, что приложение оплачено, и разблокировала дополнительные опции в окне настроек.

К сожалению, сделать это с помощью прямой правки исходного кода не получится: приложение нельзя скомпилировать обратно. Однако никто не запрещает дизассемблировать код, внести правки и собрать его вновь. И как раз здесь нам понадобится apktool. Дизассемблируем APK:

$ apktool d -r asap.apk

В текущем каталоге появится подкаталог asap. Открываем файл asap/smali/com/citc/asap/fragments/BaseBillingFragment.smali и находим hasPrime(). Декларация метода будет выглядеть так:

.method protected hasPrime()Z .locals 1 .prologue .line 167 iget-boolean v0, p0, Lcom/citc/asap/fragments/BaseBillingFragment;->mHasPrime:Z return v0 .end method

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

  • .method protected hasPrime()Z — объявляет protected-метод, который возвращает значение типа boolean (Z);
  • .locals 1 — говорит виртуальной машине, что метод использует в своей работе один регистр (в данном случае он будет содержать возвращаемое значение);
  • .prologue и .line 167 — директивы, необходимые для отладки, на ход исполнения не влияют;
  • iget-boolean v0, p0 … — получает значение поля типа boolean и записывает в регистр v0, регистр p0 — это нулевой параметр, он всегда равен имени класса (this);
  • return v0 — возвращает значение регистра v0;
  • .end method — закрывает тело метода.

Теперь мы должны изменить данный метод так, чтобы он возвращал true независимо от значения поля mHasPrime. Мы могли бы сделать это вручную, но проще написать новый метод на Java:

И пропустить его через компилятор и дизассемблер:

$ javac Test.java $ dx —dex —output=Test.dex Test.class $ baksmali Test.dex

На выходе получаем следующий ассемблерный код:

.method protected hasPrime()Z .registers 1 const v0, 1 return v0 .end method

Ты уже должен сам догадаться, что он объявляет константу v0 со значением 1 и возвращает ее (в Dalvik тип boolean — это int, который может иметь значение 1 — true или 0 — false). Осталось только вставить этот код вместо оригинального и собрать пакет обратно:

Пакет появится в каталоге asap/dist. Переименуем его, чтобы не запутаться:

$ mv asap/dist/asap.apk asap-fake-hasPrime.apk

И подпишем с помощью тестового ключа:

В результате в текущем каталоге появится файл asap-fake-hasPrime.s.apk. Остается только закинуть его на карту памяти и установить, удалив перед этим оригинальное приложение.

Настройки ASAP Launcher до…

…и после манипуляций

Выводы

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

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

Источник: gusejnovmaksim.ru

Ломаем софт для Android

Ломаем софт для Android

Ни один разговор о взломе и модификации приложений не обходится без упоминания дизассемблера, дебаггера, формата исполняемых файлов и вездесущей IDA Pro. Однако в случае с Android все намного проще, и здесь для вскрытия и даже внедрения кода в приложение совсем не обязательно использовать все эти инструменты. Код можно легко декомпилировать обратно в Java и модифицировать, используя пару простых инструментов и текстовый редактор.

Этой статьей мы начинаем цикл, посвященный вскрытию и модификации приложений для Android. Первая часть — вводная, поэтому никакого хардкора, мы разберемся в устройстве пакетов APK, научимся разбирать APK на части, декомпилировать его код, вносить правки и собирать обратно, а в качестве примера взломаем одно популярное приложение из маркета.

Вторая статья будет целиком посвящена внедрению бэкдора/вируса в чужое приложение. Это уже не просто правка нескольких строк, а глубокая модификация.

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

СНАРЯЖАЕМСЯ

Для выполнения описанных в статье действий понадобится ряд инструментов, и главный инструмент — это Linux. Да, многие из названных далее программ могут работать и в Windows, но в любых операциях, связанных с Android и его приложениями, лучше не полагаться на детище Билли. В Linux практически все сделать проще, командная строка здесь в разы удобнее (она нам ох как понадобится), а некоторые инструменты просто недоступны для других ОС.

После установки Linux в виртуалку или второй системой сразу устанавливаем средства разработки на Java и виртуальную машину. В Ubuntu это можно сделать с помощью одной команды:

$ sudo apt-get install openjdk-7-jdk

Также нам нужны четыре инструмента для распаковки и декомпиляции приложений:

  • Apktool — швейцарский армейский нож для распаковки и запаковки приложений;
  • Jadx — декомпилятор байт-кода Dalvik в код на Java;
  • Backsmali — дизассемблер кода Dalvik (не пугайся, с настоящим ассемблером он имеет мало общего);
  • Sign — утилита для подписи пакетов.

Для удобства создадим в домашнем каталоге подкаталог Android и скачаем эти инструменты в него:

$ cd ~ $ mkdir ~/Android cd ~/Android $ wget https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.2.0.jar $ wget https://github.com/skylot/jadx/releases/download/v0.6.0/jadx-0.6.0.zip $ wget https://github.com/appium/sign/raw/master/dist/sign.jar $ wget https://bitbucket.org/JesusFreke/smali/downloads/baksmali-2.1.3.jar $ mkdir jadx cd jadx $ unzip ../jadx-0.6.0.zip

Добавим в конец файла ~/.bashrc следующие строки:

alias apktool=’java -jar ~/Android/apktool_2.2.0.jar’ alias jadx-gui=’~/Android/jadx/bin/jadx-gui’ alias baksmali=’java -jar ~/Android/baksmali-2.1.3.jar’ alias sign=’java -jar ~/Android/sign.jar’ alias javac=’javac -classpath /home/j1m/Android/android-sdk-linux/platforms/android-23/android.jar’ alias dx=’/home/j1m/Android/android-sdk-linux/build-tools/23.0.3/dx’

Они нужны для того, чтобы вместо длинных и неудобных команд вроде java

-jar ~/Android/sign.jar можно было набрать просто sign.

ВСКРЫВАЕМ ПОДОПЫТНОГО

Теперь нам нужно найти приложение, которое, во-первых, нетрудно расковырять, а во-вторых, которое несет какую-то пользу и достаточно известно. То есть брать простейшую софтину только для того, чтобы было не очень сложно разобраться в ее коде, мы не будем, а вместо этого устремим свой взор на топ Play Store. Практически идеальный кандидат на эту роль — выпущенный два месяца назад ASAP Launcher, удобнейший домашний экран с массой полезных и неординарных функций.

Для начала пройдемся по APK без использования специальных инструментов. Для этого скачаем пакет при помощи сервиса APKPure : открываем страницу приложения в Play Store, копируем URL из адресной строки и вставляем в строку поиска на APKPure . Далее нажимаем кнопку Download APK и ждем окончания загрузки.

Читайте также:
Как подключить программу меркурий

Для удобства переименуем пакет в asap.apk:

# cd ~/Downloads # mv ASAP Launcher_v1.16_apkpure.com.apk asap.apk

Разархивируем с помощью unzip:

# mkdir asap; cd asap # unzip asap.apk

Да, APK — это обычный архив ZIP, но тем не менее он имеет четкую структуру:

  • META-INF — каталог, содержащий файлы MF, CERT.MF и CERT. RSA. Первые два — список всех файлов пакета и их контрольных сумм, последний содержит открытый ключ разработчика и созданную с помощью закрытого ключа цифровую подпись файла CERT.MF. Эти данные нужны, чтобы при установке пакета система смогла выяснить, что пакет не был модифицирован и действительно создан его автором. Это важно, так как, поскольку нет возможности подделать цифровую подпись пакета (для этого нужен закрытый ключ), модифицированный пакет придется подписывать другим ключом;
  • res — ресурсы приложения. Здесь находятся иконка (mipmap), переводы строк (values), изображения (drawable), а также описания интерфейса приложения (layout). Все их можно модифицировать, чтобы изменить внешний вид приложения. Правда, файлы XML придется сначала «разжать» — для улучшения производительности они хранятся в бинарном формате;
  • dex — код приложения в форме байт-кода виртуальной машины Dalvik. Обычно приложения содержат только один такой файл, но, используя директиву multiDex, разработчик может заставить среду разработки разбить его на множество более мелких для улучшения производительности или преодоления ограничения на 65 536 методов в одном dex-файле;
  • xml — манифест приложения, описывающий его структуру, включая активности, сервисы, обработчики интентов и так далее. Опять же в формате бинарного XML.

Также пакет может содержать другие каталоги, например assets (любые файлы, включенные разработчиком, в данном случае — шрифты и база данных) и lib (нативные библиотеки, созданные с использованием Android NDK).

ИЗУЧАЕМ КОД

Само собой разумеется, просто разархивировать пакет недостаточно. Чтобы разобраться в работе приложения, необходимо декомпилировать файл classes.dex. Для этого мы воспользуемся jadx-gui. Запускаем, выбираем asap. apk и видим слева список пакетов Java, включенных в APK. В данном случае это пакеты android.support — официальная библиотека Google, реализующая поддержку функций новых версий Android в старых (например, чтобы получить Material Design в Android 4.1), com.google.android.gms — Google Mobile Services, com.nispok.snakbar — реализация GUI-элемента snakbar, а также несколько других.

Основной код приложения содержится в пакете com.citc.asap, именно такое имя носит и само приложение в Google Store и на устройстве. Открываем его и видим больше десятка каталогов и множество исходников Java. Наша задача — сделать приложение «оплаченным», не платя за него. Но как найти нужный файл, реализующий проверку на оплату? Скорее всего, он будет содержать в имени слово billing. Пробегаемся по исходникам в поисках нужного нам файла и натыкаемся на исходник BaseBillingFragment в подкаталоге (пакете) fragments:

Это очень простой класс Java, в котором есть интересный метод:

protected boolean hasPrime()

Все, что он делает, — просто возвращает значение поля mHasPrime, однако интересен он не этим, а своим именем. Дело в том, что платная (точнее, оплаченная) версия ASAP называется Prime, и очевидно, что метод hasPrime как раз и нужен для проверки оплаты приложения. Чтобы подтвердить свою догадку, сохраним декомпилированные исходники (File -> Save all) в каталог и попробуем найти в них вызовы hasPrime():

Совпадений немного, основной «пользователь» hasPrime() — это SettingsFragment, то есть исходник, отвечающий за формирование окна настроек. Учитывая, что Prime-версия отличается от бесплатной именно тем, что в ней разблокированы дополнительные поля настроек, уже сейчас мы можем быть на 90% уверены, что hasPrime() — нужный нам метод. Скорее всего, именно с его помощью приложение выясняет, куплена ли Prime-версия. Осталось только убедиться в этом окончательно, подменив код метода на свой.

ВНОСИМ ПРАВКИ

Метод hasPrime() очень прост, он возвращает значение поля mHasPrime, которое имеет тип boolean. Нетрудно предположить, что в случае, если приложение оплачено, hasPrime() вернет true, иначе вернет false. Наша задача — сделать так, чтобы метод всегда возвращал true и остальная часть приложения думала, что приложение оплачено, и разблокировала дополнительные опции в окне настроек.

К сожалению, сделать это с помощью прямой правки исходного кода не получится, приложение нельзя скомпилировать обратно. Однако никто не запрещает дизассемблировать код, внести правки и собрать его вновь. И как раз здесь нам понадобится apktool. Дизассемблируем APK:

$ apktool d -r asap.apk

В текущем каталоге появится подкаталог asap. Открываем файл *asap/smali/ com/citc/asap/fragments/BaseBillingFragment.smali* и находим hasPrime, декларация метода будет выглядеть так:

.method protected hasPrime()Z .locals 1 .prologue .line 167 iget-boolean v0, p0, Lcom/citc/asap/fragments/BaseBilling Fragment;->mHasPrime:Z return v0 .end method

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

  • .method protected hasPrime()Z — объявляет protected-метод, который возвращает значение типа boolean (Z);
  • .locals 1 — говорит виртуальной машине, что метод использует в своей работе один регистр (в данном случае он будет содержать возвращаемое значение);
  • .prologue и .line 167 — директивы, необходимые для отладки, на ход исполнения не влияют;
  • iget-boolean v0, p0. — получает значение поля типа boolean и записывает в регистр v0, регистр p0 — это нулевой параметр, он всегда равен имени класса (this);
  • return v0 — возвращает значение регистра v0;
  • .end method — закрывает тело метода.

Теперь мы должны изменить данный метод так, чтобы он возвращал true независимо от значения поля mHasPrime. Мы могли бы сделать это вручную, но проще написать новый метод на Java:

public class Test < public boolean hasPrime() < return true; >>

И пропустить его через компилятор и дизассемблер:

$ javac Test.java $ dx —dex —output=Test.dex Test.class $ baksmali Test.dex

На выходе получаем следующий ассемблерный код:

.method protected hasPrime()Z .registers 1 const v0, 1 return v0 .end method

Ты уже должен сам догадаться, что он объявляет константу v0 со значением 1 и возвращает ее (в Dalvik тип boolean — это int, который может иметь значение 1 — true или 0 — false). Осталось только вставить этот код вместо оригинального и собрать пакет обратно:

$ apktool b asap

Пакет появится в каталоге asap/dist. Переименуем его, чтобы не запутаться:

$ mv asap/dist/asap.apk asap-fake-hasPrime.apk

И подпишем с помощью тестового ключа:

$ sign asap-fake-hasPrime.apk

В результате в текущем каталоге появится файл asap-fake-hasPrime.s.apk. Остается только закинуть его на карту памяти и установить, удалив перед этим оригинальное приложение.

Настройки ASAP Launcher до и после манипуляций

ВЫВОДЫ

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

Источник: shlyahten.ru

Основы хАкКиНгА / модифицирования APK приложений // перевод-туториал #1

//————————————————-Вступление————————————————-
Привет!
Давно не было чего-то полезного от меня (не знал чего можно поделать..), исправляюсь. Это будет серия переводов разных тем по данной тематике.
Эта тема — перевод туториала с сайта

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

. Кроме туториалов и прочих полезностей на нём вы можете найти игры со встроенными мод-меню: Among Us, Last Day on Earth, Hide Online и прочие популярные и не очень игры. Это не реклама, просто личная рекомендация и благодарность сайту (всё это делают администраторы и выкладывают за бесплатно).
Также, я постарался в разы улучшить свой принцип перевода, чтобы тема читалась намного приятнее и понятнее, чем было раньше.
Ну, что ж, начнём.

Читайте также:
Как проверить номер телефона кому принадлежит программа Яндекс

1. Что такое APK?

.apk — установочный файл приложения для Android’а, его можно сравнить с .exe файлом для Windows. Вам нужен этот файл, чтобы установить Приложение/Игру на ваш Android.

2. Каким образом я могу открыть APK файл на компьютере?

Сначала вам нужно получить APK игры. Самое лучшее место для скачивания APK на ваш компьютер без каких-либо инструментов — это apkcombo.com.

После загрузки APK файла, вы сможете увидеть что находится в нём, если откроете его Winrar/Winzip/7zip’ом. Для этого просто переименуйте файл из .apk в .zip.
Позже, когда вы станете более чем базовым моддером, вам иногда будет необходимо декомпилировать APK, чтобы получить

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

. Со временем вы поймёте что я имею ввиду. Вы можете использовать инструмент для этого, который я опубликую в разделе «Что означает подпись». Декомпиляция подразумевает, что APK разбирается полностью, по частям, так как некоторые файлы, такие как classes.dex, являются ничем иным, как еще одной заархивированной кучей других файлов.

3. В чём разница между подписанным и неподписанным APK файлом?

Каждое приложение в Google Play Market получает уникальную подпись. Она обязательно должна быть у приложения, без неё, разработчику не получится загрузить приложение в Маркет. Подпись можно сравнить с курткой охранника. Если вы хотите изменить APK, вам нужно расстегнуть куртку, но вы не сможете застегнуть её снова, это может сделать только Play Market.

Поэтому, вам нужно взять новую куртку и надеть ее поверх старой. Мы, моддеры, используем Google TestKey, который можно открыто использовать. Обычно его делают для тестирования приложений перед их публикацией, но он отлично подходит и для запуска модифицированных APK.

В случае, если мы используем новую подпись после модификации файла, APK будет «подписан» и может работать на устройствах без

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

. Но вам нужно удалить оригинальную игру, вы не можете установить мод поверх неё, потому что оригинальная игра имеет оригинальную подпись, а ваш мод — нет. Единственная проблема заключается в том, что Play Market не принимает тестовый ключ.

Я рекомендую этот инструмент для этого случая:
Apk Easy Tool

«Неподписанный» означает, что вы оставили расстёгнутую куртку открытой. Вы изменили APK и модифицировали его, но оставили открытым оригинальный ключ внутри, вы не подписываете его тестовым ключом. Устройства Android не могут справиться с этим по умолчанию.

Но если вы получите root права на своё устройство и включите патч LuckyPatcher’а, вы сможете сказать устройству: «куртка закрыта, установите её». Таким образом, вы сможете обновить оригинальную игру в Play Market’е с помощью мода. Говоря простыми словами — вы лжёте своему устройству.

Для получения дополнительной информации читайте: // скоро тут будет ссылка

4. Я хочу научиться моддить, но я не понимаю что делать. Что означает DLL и .so или .NET и IDA?

Вот мы и подошли к главной причине, по которой вы сюда зашли.

Ну, есть в основном, 3 типа файловых систем, которые разработчики используют для публикации игр:

1) DLL-запускаемая игра

Если в игре запущены библиотеки DLL, вам нужно будет модифицировать их. Для этого случая вам нужны такие программы, как

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

.
Если вы хотите знать, как идентифицировать этот тип запуска, откройте APK, как написано выше, и перейдите в папку assetsbinDataManaged. Если вы найдете библиотеки DLL внутри, эта игра работает с библиотеками DLL. Это будет выглядеть так:

Рекомендуеме туториалы: // ссылки на туториалы скоро будут тут.

2) .so-запускаемая игра (IDA):
Если в игре нет библиотек DLL, то в основном она работает с файлами расширения .so. Один из них — файл

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

. Сначала поговорим про IDA. Чтобы идентифицировать эти игры, вам нужно перейти к папке /lib/armeabi-v7a/ в APK. Если внутри нет libil2cpp.so , но есть ещё один гораздо больший файл .so, а затем другие файлы .so, вам понадобится IDA, чтобы моддить эту игру. Это будет выглядеть так:


Рекомендуемые туториалы по IDA:
1.
Пожалуйста, авторизуйтесь для просмотра ссылки.

2. // скоро тут будет ссылка

3) .so-запускаемая игра (il2cpp)

Что ж, давайте перейдем к последней важной файловой системе — il2cpp. Это в основном игра, которая спроектирована как DLL-игра, но преобразована в файловую систему .so, чтобы сделать ее более сложной для модификации. Вам нужно будет сдампить оффсеты il2cpp и модифицировать его с помощью редактора

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

. Для идентификации такой игры, вам нужно просто сделать те же шаги, что и на IDA, но вы найдете libil2cpp.so файл внутри папки. Он выглядит так:


Рекомендованные туториалы:
1. // Скоро тут будет ссылка.
2.
Пожалуйста, авторизуйтесь для просмотра ссылки.

Рекомендованные инструменты:
// Скоро тут будет ссылка.

4. Я узнал, что игра работает с DLL, но когда я пытаюсь открыть DLL с помощью .NET reflector, я получил ошибки. Что делать?

Значит, этот DLL-файл защищен от моддинга. Это гораздо больше, чем основы. У нас есть учебники для шифрования здесь, но вы должны начать с незащищенных игр, пока не узнаете все основы в совершенстве, прежде чем пытаться обойти такую защиту.

Рекомендованные туториалы:
1. // Скоро тут будет ссылка.
2. // Скоро тут будет ссылка.

Рекомендованные инструменты:
// Скоро тут будет ссылка.

5. Несколько дополнительных советов:

Некоторые из вас начинают моддировать уже модифицированные игры, не могут найти их тут. Это НЕ тот путь, не та игра, с которых нужно начинать. У вас есть 90% шанс, что на игру нет мода, потому что его просто безумно трудно сделать! Это полностью уничтожит вашу мотивацию. Делайте прямо противоположное. Начните с игр, которые уже моддированы, и не входят в

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

(это тоже слишком сложно), тогда вы уже будете знать, что это возможно, и вы знаете, какие функции возможно реализовать. Не сдавайтесь, потому что вы не можете сделать точно такой же мод, маленькие цели будут мотивировать вас до тех пор, пока вы не будете достаточно хороши для больших пушек =)

Credits:
1. G-Bo (Я) (ОН))) —

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

— Gamehacks и другие;
2. Все, кто опубликовал инструменты / учебные пособия, перечислены в списке.

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

Спасибо Вам за то, что дочитали эту тему до конца, для меня это действительно важно. Если у вас есть какие-либо пожелания, вопросы к теме, или, может, советы новичкам в этой сфере, то не стесняйтесь, пишите ниже, постараюсь ответить каждому.
На самом деле, впереди ещё очень много работы и тем для перевода, надеюсь, что я не сгорю, и очень постараюсь этого не сделать 🙂

Все переводы тем по данной тематике на текущий момент:
1. Основы (эта тема);
2. APK Easy Tool

Источник: yougame.biz

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru