-
Автор темы
- #1
Взламывать игры на Android несколько проще, чем это может показаться: прочитав всего одну тему-гайд, Вы уже сможете создавать читы на игры без сильной защиты, сделанные на движке Юнити. Кроме того, чтобы начать делать читы, Вам нужна всего одна программа. Обо всём подробно — ниже.
Список необходимого ПО для начала работы:
2. Откройте выбранный Вами распаковщик и загрузите в него в него этот файл (как вариант, просто перетащите его на окно программы). Откройте древо файла в программе.
3. В Рефлекторе Вы увидите опцию под названием "Инструменты" ("Tools"), нажмите на неё, перейдите в раздел "Плагины" ("Add-Ins"), а теперь нажмите на значок '+'. Найдите свою распакованную папку и выберите "Reflexil.Reflector.AIO". Снова перейдите в раздел "Инструменты" ("Tools") и выберите Reflexil v2.0.
4. Нажмите кнопку поиска или F3. Теперь Вам нужно включить "Поиск члена" ("Search Member") через CTL + M или нажатием на кнопку:
В моддинге слабозащищённых игр легко найти интересные нам функции. Конечно, есть много вариантов их названий, но вот те, на которые Вы можете опираться. Попробуйте выполнить поиск по этим названиям:
Итак, мы будем пытаться создать чит на Subway Surfers, в ней действительно есть много вещей, которые можно взломать. Сейчас мы попробуем создать мод на монеты, ключи, сноуборды и на открытие всех персонажей.
Деньги и ключи — целочисленные значения (int), доски и персонажи — булевы (bool).
Одно важное примечание: Subway Surfers после какого-то момента стала использовать технологию защиту от юнити (il2cpp), что шифрует все файлы игры. Взлом игр с il2cpp — это отдельная тема для разговора. Так что для разбора Вам придётся скачать Сабвей Сёрферс более ранней версии — например, от 2017 года.
1. Давайте поищем "coins". Мы получим множество результатов.
2. Теперь — "get_coins". Мы увидим только несколько совпадений. Обычно, если Вы взломаете подобную функцию или значение, то сразу получите результат, но не в этом конкретном случае, так что не будем тратить на это время.
3. Ещё один поиск — "get_amountof". Мы получим это:
Это выглядит очень интересным. Почему? Ну, мы видим совпадения вместе со словами "ключи" и "монеты" + тип объявления — класс "PlayerInfo" (или же информация об игроке), поэтому это с 99% уверенностью можно считать нужным результатом.
4. Два раза нажмём на "get_amountOfCoins", и теперь мы увидим это:
Запомните: ВСЕГДА удаляйте опкод "Idfld". Нежелательно, чтобы он был загружен.
5. Теперь поменяйте опкод "Idarg.0" на "idc.i4", для этого щёлкните правой кнопкой мыши на "Idarg.0" и нажмите "изменить".
Это будет выглядеть примерно так:
Примечание: измените тип операнда на Int32!
6. Нажмите "Update" ("обновить") и сделайте то же самое для "get_amountOfKeys".
Теперь давайте разблокируем все ховерборды (или же доски).
1. Поискав по "isUnlocked", результатов Вы не увидите. Теперь попробуйте "isHoverboardUnlocked" ("Разблокирована ли доска"), Вы получите два результата, но какой из них выбрать? Тот, у которого тип объявления "HoverboardStickerManager", определён следующим образом:
Да, эта функция возвращает "PlayerInfo.Instance.isHoverboardUnlocked('тип')". Это то, что нам нужно.
2. Дважды нажмите на функцию "isHoverboardUnlocked", чтобы увидеть, что она возвращает.
Что мы должны сделать с этой функцией? Конечно, нам нужно вернуть "TRUE", чтобы игра при каждом обращении получала результат, который скажет ей, что каждая конкретная доска уже была открыта.
3. Что нам теперь делать? В этой вкладке (см. изображение ниже) мы должны сохранить только две инструкции, не имеет значения, какие именно. Просто постепенно стирайте их до тех пор, пока не останется только две записи:
На скриншоте получился такой результат, у Вас может быть совершенно другой. Вот пояснение, что они обозначают, ведь нам нужны эти инструкции, чтобы взломать все доски:
Посмотрите опкод обеих инструкций:
Что теперь делать?
4. Измените первую инструкцию ("Idc.i4.0") на "Idc.i4.1" что будет обозначать 'TRUE'.
5. Если Ваш второй опкод не является "ret", то измените его на соответствующий.
Теперь всё готово и функция всегда будет возвращать 'TRUE', что обозначает, что нам будут открыты все доски:
Давайте сделаем то же самое для персонажей.
1. Начните поиск по "isCharacterUnlocked". Нам нужна функция, что будет иметь следующее определение:
Как мы видим, она действительно возвращает "PlayerInfo.Instance.IsCollectionCompelete('тип')".
2. Дважды нажмите на "isCollectionComplete". Как и в первый раз, удаляйте все инструкции до тех пор, пока не останутся только две.
3. Опять же, как и раньше, измените первую инструкцию на "Idc.i4.1", а вторую на "ret".
Готово!
Мы также можем пропустить обучение. Подсказка: найдите "get_IsTutorialCompleted" и верните ему значение 'TRUE', как Вы сделали с досками и персонажами!
Хорошо, теперь мы со всем закончили, но Вы можете попытаться сделать читы на какие-то другие функции. Нам нужно сохранить изменения в файле:
Нажмите на "Save as...", затем сохраните DLL, например, на рабочий стол. Затем замените этим файлом оригинальный Assembly-CSharp.dll в .APK игре (откройте её архиватором, как и раньше).
Скопируйте .apk файл на свой телефон или в эмулятор, затем подпишите его с помощью ZipSigner:
Выберите наш .apk и нажмите "Sign The File", затем подождите. После завершения, найдите его в своем файловом менеджере и установите. Откройте игру, когда всё будет готово. Вы увидите, что всё работает:
Функции, которые мы взломали:
Эта тема — лишь перевод оригинальной статьи:
Её автор — G-Bo ッ.
Список необходимого ПО для начала работы:
- Любой удобный Вам распаковщик .NET приложений. Например: .NET Reflector, ILSpy, dnSpy и т.д. В этой теме будет инструкция работы на примере с .NET Рефлектором, тем не менее, Вы также можете использовать другие средства, все они похожи.
- Скачать бесплатный ILSpy: Пожалуйста, авторизуйтесь для просмотра ссылки.
- Скачать бесплатный ILSpy:
- Если Вы выбрали .NET Reflector, Вы также можете скачать плагин Reflexil для большего удобства редактирования функций.
- Скачать бесплатный Reflexil: Пожалуйста, авторизуйтесь для просмотра ссылки.
- Скачать бесплатный Reflexil:
—> Начало
1. Для начала, достаньте файл Assembly-CSharp.dll
из игры. Для этого откройте .APK файл установщика игры через любой архиватор, а затем перейдите по пути assets > bin > Data > Managed, он должен находиться тут.2. Откройте выбранный Вами распаковщик и загрузите в него в него этот файл (как вариант, просто перетащите его на окно программы). Откройте древо файла в программе.
3. В Рефлекторе Вы увидите опцию под названием "Инструменты" ("Tools"), нажмите на неё, перейдите в раздел "Плагины" ("Add-Ins"), а теперь нажмите на значок '+'. Найдите свою распакованную папку и выберите "Reflexil.Reflector.AIO". Снова перейдите в раздел "Инструменты" ("Tools") и выберите Reflexil v2.0.
4. Нажмите кнопку поиска или F3. Теперь Вам нужно включить "Поиск члена" ("Search Member") через CTL + M или нажатием на кнопку:
В моддинге слабозащищённых игр легко найти интересные нам функции. Конечно, есть много вариантов их названий, но вот те, на которые Вы можете опираться. Попробуйте выполнить поиск по этим названиям:
Coins
— Монеты, деньги.Gems
— Драгоценности, гемы.Gold
— Золото.Diamonts
— Алмазы.Money
— Деньги, монеты.Cash
— Деньги, монеты.Currency
— Валюта, деньги.get_gold
,get_coins
и т.п. — Получение игрой количества золота, монет и тому подобного.get_amountofcoins
,get_amountofgold
и т.п. — То же самое, что и выше.isLocked
,isFree
— Проверка игрой на то, доступна ли какая-то вещь или заблокирована.
Итак, мы будем пытаться создать чит на Subway Surfers, в ней действительно есть много вещей, которые можно взломать. Сейчас мы попробуем создать мод на монеты, ключи, сноуборды и на открытие всех персонажей.
Деньги и ключи — целочисленные значения (int), доски и персонажи — булевы (bool).
Одно важное примечание: Subway Surfers после какого-то момента стала использовать технологию защиту от юнити (il2cpp), что шифрует все файлы игры. Взлом игр с il2cpp — это отдельная тема для разговора. Так что для разбора Вам придётся скачать Сабвей Сёрферс более ранней версии — например, от 2017 года.
—> Взлом монет
1. Давайте поищем "coins". Мы получим множество результатов.
2. Теперь — "get_coins". Мы увидим только несколько совпадений. Обычно, если Вы взломаете подобную функцию или значение, то сразу получите результат, но не в этом конкретном случае, так что не будем тратить на это время.
3. Ещё один поиск — "get_amountof". Мы получим это:
Это выглядит очень интересным. Почему? Ну, мы видим совпадения вместе со словами "ключи" и "монеты" + тип объявления — класс "PlayerInfo" (или же информация об игроке), поэтому это с 99% уверенностью можно считать нужным результатом.
4. Два раза нажмём на "get_amountOfCoins", и теперь мы увидим это:
Запомните: ВСЕГДА удаляйте опкод "Idfld". Нежелательно, чтобы он был загружен.
5. Теперь поменяйте опкод "Idarg.0" на "idc.i4", для этого щёлкните правой кнопкой мыши на "Idarg.0" и нажмите "изменить".
Это будет выглядеть примерно так:
Примечание: измените тип операнда на Int32!
6. Нажмите "Update" ("обновить") и сделайте то же самое для "get_amountOfKeys".
Теперь давайте разблокируем все ховерборды (или же доски).
—> Разблокировка всех досок
1. Поискав по "isUnlocked", результатов Вы не увидите. Теперь попробуйте "isHoverboardUnlocked" ("Разблокирована ли доска"), Вы получите два результата, но какой из них выбрать? Тот, у которого тип объявления "HoverboardStickerManager", определён следующим образом:
Да, эта функция возвращает "PlayerInfo.Instance.isHoverboardUnlocked('тип')". Это то, что нам нужно.
2. Дважды нажмите на функцию "isHoverboardUnlocked", чтобы увидеть, что она возвращает.
Что мы должны сделать с этой функцией? Конечно, нам нужно вернуть "TRUE", чтобы игра при каждом обращении получала результат, который скажет ей, что каждая конкретная доска уже была открыта.
3. Что нам теперь делать? В этой вкладке (см. изображение ниже) мы должны сохранить только две инструкции, не имеет значения, какие именно. Просто постепенно стирайте их до тех пор, пока не останется только две записи:
На скриншоте получился такой результат, у Вас может быть совершенно другой. Вот пояснение, что они обозначают, ведь нам нужны эти инструкции, чтобы взломать все доски:
Посмотрите опкод обеих инструкций:
- "Idc.i4.0", что равносильно 'FALSE'.
- "ret" = RETURN, а смещение "ret" равно '1', это равнозначно 'TRUE'.
Что теперь делать?
4. Измените первую инструкцию ("Idc.i4.0") на "Idc.i4.1" что будет обозначать 'TRUE'.
5. Если Ваш второй опкод не является "ret", то измените его на соответствующий.
Теперь всё готово и функция всегда будет возвращать 'TRUE', что обозначает, что нам будут открыты все доски:
Давайте сделаем то же самое для персонажей.
—> Разблокировка всех персонажей
1. Начните поиск по "isCharacterUnlocked". Нам нужна функция, что будет иметь следующее определение:
Как мы видим, она действительно возвращает "PlayerInfo.Instance.IsCollectionCompelete('тип')".
2. Дважды нажмите на "isCollectionComplete". Как и в первый раз, удаляйте все инструкции до тех пор, пока не останутся только две.
3. Опять же, как и раньше, измените первую инструкцию на "Idc.i4.1", а вторую на "ret".
Готово!
Мы также можем пропустить обучение. Подсказка: найдите "get_IsTutorialCompleted" и верните ему значение 'TRUE', как Вы сделали с досками и персонажами!
—> Сохранение изменений в файле и конец работы
Хорошо, теперь мы со всем закончили, но Вы можете попытаться сделать читы на какие-то другие функции. Нам нужно сохранить изменения в файле:
Нажмите на "Save as...", затем сохраните DLL, например, на рабочий стол. Затем замените этим файлом оригинальный Assembly-CSharp.dll в .APK игре (откройте её архиватором, как и раньше).
Либо полностью распакуйте .APK файл игры через архиватор в папку, затем сохраните готовый файл по пути assets > bin > Data > Managed, Рефлектор предложит Вам сохранить его как "Assembly-CSharp.Patched.dll", но нам нужно, чтобы он назывался так: "Assembly-CSharp.dll". Подтвердите замену файла.
Найдите распакованный .apk файл игры, выберите ВСЕ файлы и создайте из них zip-архив, но измените его расширение на apk:
Найдите распакованный .apk файл игры, выберите ВСЕ файлы и создайте из них zip-архив, но измените его расширение на apk:
Скопируйте .apk файл на свой телефон или в эмулятор, затем подпишите его с помощью ZipSigner:
Выберите наш .apk и нажмите "Sign The File", затем подождите. После завершения, найдите его в своем файловом менеджере и установите. Откройте игру, когда всё будет готово. Вы увидите, что всё работает:
Функции, которые мы взломали:
get_amountOfCoins
get_amountOfKeys
isHoverboardUnlocked
isCharacterUnlocked
- И, возможно,
get_isTutorialCompleted
isThemeUnlockedForCharacter
isThemeSeen
isThemeOwned
isThemeActive
get_DoubleScore
get_ScoreMultiplier
Эта тема — лишь перевод оригинальной статьи:
Пожалуйста, авторизуйтесь для просмотра ссылки.
.Её автор — G-Bo ッ.
Последнее редактирование: