Sbenny
Сумасшедший ученый
Штатный сотрудник
Администратор
Отряд СБ Мод ⭐
✔ Утвержденный релизер
Активный пользователь
- пол
- M
- Устройство
- Хонор Magic5 Lite — Android 13
- Страна
- Sbennytopia
Прежде всего, ребята, если вы здесь, это потому, что вы хотите научиться взламывать игры для Android с помощью Net Reflector.
Исходя из своего опыта, я могу сказать, что взломать игры с помощью .NET Reflector очень легко по сравнению с другими методами, и если вы все еще не можете взломать какие-либо игры ПОСЛЕ ПРОЧИТАНИЯ ВСЕХ УЧЕБНЫХ ПОСОБИЙ, я могу вам помочь. Глянь сюда: Я научу вас, как взломать Android игры!
Прежде всего, вам необходимо знать требования, чтобы взломать .NET Reflector.
Требования:
1) Имейте файл .apk, который вы хотите взломать. Вы можете найти оригинальную версию каждой игры в нашей игровой зоне: Sbenny.com, ваш бесплатный провайдер приложений и игр для Android с MOD APK или, если вы предпочитаете, вы можете посмотреть в Google, чтобы найти нужную игру.
2) Установите WinRar на ваш компьютер. ( Скачать WinRar 32bit | Скачать WinRar 64bit )
3). Отражатель .NET. ( Скачать .NET Reflector 9.0 ). Если у вас есть проблемы с активацией трещины NET Reflector, пожалуйста, посмотрите на Руководство SusieQ о том, как загрузить и установить NET Reflector, (Запустите файл крэка от имени администратора, чтобы получить код ответа в Read-Me)
4) Иметь "Reflexil", плагин, необходимый для взлома файлов с помощью .NET Reflector. ( Скачать плагин Reflexil для .NET Reflector )
5) Иметь APK подписчик. Я лично использую подписавшего в один клик. ( Скачать в один клик apk signer )
Get Ready
Давайте подготовим наше рабочее пространство:
1) Первый шаг - заглянуть в наш файл .apk, чтобы убедиться, что его можно взломать с помощью этого метода. Что мы будем делать, это переименовать apk (я рекомендую вам включить расширение файла, чтобы сделать вашу жизнь проще: short.sbenny.com ) из .apk в .zip;
2) Дважды щелкните файл .zip, и вы сможете открыть его с помощью WinRar. Если нет, щелкните правой кнопкой мыши и выберите «Открыть с помощью ...», а затем выберите «WinRar»;
3) Попробуйте перейти в следующее местоположение: assets / bin / Data / Managed /. Если вы достигли этого успешно, и если вы видите много файлов .dll внутри него, то ДА, вы можете взломать эту игру (или вы можете ПОПРОБОВАТЬ взлом), используя .NET Reflector!
4) Теперь извлеките всю папку «Managed», куда хотите (у меня есть папка на моем рабочем столе, которую я использую исключительно для взлома игр, куда я помещаю все программное обеспечение, необходимое для их взлома).
5) Откройте «.NET Reflector», переместите ВСЕ ФАЙЛЫ .DLL из папки «Managed» внутри него (переместите их в ЛЕВОЕ поле Reflector).
6) Нажмите F3, затем нажмите Ctrl + M. Это активирует окно поиска и правильно настроит его для наших областей. Обратите внимание, что это должно быть сделано КАЖДЫЙ РАЗ, когда вы открываете .NET Reflector.
7) Запустите Reflector (если вы прочитали «ReadMe.txt» в папке Reflexil по моей ссылке для скачивания выше, вы уже знаете, как его запустить. В противном случае, хорошо, нажмите на значок шестеренки или перейдите в Инструменты -> Reflexil и нажмите в теме)
Хорошо, нам удалось все настроить правильно, и мы наконец-то можем приступить к взлому!
Давайте начнем
Итак, давайте внимательно прочитаем то, что я напишу ниже, так как это легко понять, если вы потратите достаточно времени на чтение, хорошо?
1) Первый шаг после того, как вы захватили файл .apk, - это открыть его с помощью WinRar (я лично переименовал расширение в .zip, чтобы автоматически открывать его с помощью WinRar, но вы можете просто щелкнуть правой кнопкой мыши по файлу .apk и выберите «Открыть с помощью ...» -> WinRar).
2) Перейдите по следующему пути внутри окна WinRar: assets / bin / data / Managed /, как на скриншоте ниже:
3) Извлеките (вы можете просто перетащить их) все файлы .dll этого архива в желаемую папку (или, чтобы быть быстрее, просто перетащите из нее всю папку «Управляемые» архива.
4) Теперь откройте NET Reflector, нажмите F3 и Ctrl + M (это нужно делать каждый раз, чтобы быстро настроить NET Reflector для нашего использования), загрузите плагин Reflexil, щелкнув значок шестеренки, и переместите все файлы. dll внутри окна .NET Reflector (слева, как на скриншоте ниже):
5) Теперь мы готовы к поиску, поэтому введите нужное ключевое слово в поле поиска и отредактируйте нужный код, как показано на скриншоте ниже. Смотри внимательно:
6) Чтобы отредактировать код, вам нужно щелкнуть правой кнопкой мыши нужную инструкцию, которую вы хотите изменить, и выбрать «Редактировать». Когда вы закончите редактировать, нажмите «Обновить», как на скриншоте ниже:
7) Теперь сохраним наш код. Для этого на левой панели .NET Reflector прокрутите вверх, пока не найдете имя измененной сборки, затем щелкните правой кнопкой мыши -> Reflexil -> Сохранить, как на скриншоте ниже:
8) Он добавит «.Patched» к исходному имени файла .dll, чтобы вы знали, какой из них изменен, а какой - исходный файл .dll. Теперь, чтобы убедиться, что мы изменили правильный код, давайте снова загрузим сборку в .NET Reflector, чтобы посмотреть, как она теперь выглядит. (этот шаг не является обязательным, но рекомендуется, если вы не на 100% уверены, что взлом правильно написан:
9) Хорошо, в моем примере коды были правильными, поэтому мы можем продолжить добавление измененного файла .dll в наш исходный файл .apk. Итак, мы снова открываем файл .apk с помощью WinRar и заменяем исходный «Assembly-Csharp.dll» (или любые другие файлы .dll, которые вы изменили) на файл, содержащий «.Patched», но, конечно, вам нужно переименовать файл на исходное название, иначе игра не загрузится. Итак, в моем примере я переименовал Assembly-Csharp.Patched.dll в Assembly-Csharp.dll, чтобы восстановить его исходное имя.
10) Теперь пришло время подписать его (или вы можете добавить заставку если хотите, перед подписанием файла .apk). Таким образом, мы перемещаем измененный файл .apk в ту же папку, что и файл "one_click_signer.cmd" (или, если вы используете другой подписчик apk, используйте свой метод для его подписи), затем мы открываем его двойным щелчком и командой Появится окно с подсказкой.
Все, что нам нужно сделать, это набрать:
и нажмите Enter, как на скриншоте ниже (не забудьте символы "", они являются частью кода, который вам нужно написать!):
11) Вот и все! Наш файл MOD APK готов! В этой папке вы найдете новый файл .apk, имя которого начинается с «signed-». Это подписанный файл .apk, которым вы, наконец, можете поделиться! Но сначала, конечно, протестируйте игру и убедитесь, что она работает должным образом. Если да, это означает, что вы хороший хакер и можете, наконец, загрузить файл .apk, чтобы поделиться им со всеми! Если файл .apk не работает должным образом или созданные вами коды не отображаются, не теряйте надежды! Просто попробуйте еще раз, изменив некоторые другие смещения! Удачи!
Часто задаваемые вопросы:
Если вам нужна помощь, как всегда, ответьте ниже, и я буду рад добавить дополнительную информацию или помочь вам!
У вас есть Int32?
Вы можете вернуть значение следующим образом:
ldc.i4 -> Int32 -> Your_Value (без ограничений)
в отставке
or
ldc.i4.s -> SByte -> Your_Value (максимум 128)
в отставке
У вас есть Int64?
Вы можете вернуть значение следующим образом:
ldc.i8 -> Int64 -> Ваше_значение
в отставке
У вас есть Один?
Вы можете вернуть значение следующим образом:
ldc.r4 -> Один -> Your_Value
в отставке
У вас есть двойной?
Вы можете вернуть значение следующим образом:
ldc.r8 -> Двойной -> Your_Value
в отставке
У вас есть "Логический"?
Я привык сравнивать логическое значение с вопросом. По сути, он что-то «спрашивает» у игры, и игра отвечает True (да) или False (нет).
Например: get_isVip «спросит» у игры, является ли пользователь VIP, и игра, вероятно, ответит «Нет, он не VIP !!!», так что мы можем здесь сделать?
У нас есть два пути. Первый (проще, но многому не научишься ..) - всегда возвращать True (да), а второй (не всегда применимо, но это «профи») - сделать игру такой, что ты - VIP. серьезно.
Но сначала давайте объясним, как вернуть в игре «Истина» или «Ложь».
Правда = ldc.i4.1 (или ldc.i4 -> Int32 -> 1)
Ложь = ldc.i4.0 (или ldc.i4 -> Int32 -> 0)
Помните, что вы всегда должны использовать ldc.i4 (а не ldc.r4, ldc.i8 и т. Д.), Иначе игра вылетит.
Итак, самый простой способ всегда возвращать True (или False) логическому значению - это заменить всю функцию:
[ИСТИНА]
ldc.i4.1
в отставке
[НЕПРАВДА]
ldc.i4.0
в отставке
Теперь поговорим о методе профи. Как мы уже говорили выше, все дело в том, чтобы заставить игру думать, что вы на самом деле VIP, поэтому логическое значение, естественно, вернет истинное значение, даже если мы оба знаем, что вы не VIP в игре (конечно, я поговорим о VIP, чтобы привести пример, вы можете заменить слово «VIP» чем угодно. Например, «get_isUnlocked» или просто «IsUnlocked» - это логическое значение для разблокировки элементов в игре и т. д. Это зависит от вас. правильное ключевое слово для взлома значения).
Иногда проводятся некоторые «проверки», чтобы убедиться, VIP вы или нет. Например, игра проверяет ваш VIP-уровень и, если он равен 0, возвращает false, а если он выше 0, возвращает true.
Это должно выглядеть так (очень простой пример) в окне декомпиляции NET Reflector:
get_isVip {
если (this.Player.get_vipLevel)> 0
{
возвращают правда
}
возвращают ложный
}
И в Reflexil (окно плагина внизу) вы должны увидеть что-то вроде:
0 ldarg.0
1 ldfld Player.get_vipLevel
2 ldc.i4 0
3 bge (6 -> ldc.i4.1)
4 ldc.i4.0
5 сб (7 -> сбн)
6 ldc.i4.1
7 ret
Теперь не так сложно понять, что говорит Рефлексил. Давайте сравним текст с декомпилированным кодом NET Reflector:
ldarg.0 -> "это."
ldfld -> загружает значение, в частности, значение vip уровня игрока
ldc.i4 0 -> это означает 0, относится к vip-уровню игрока
bge (6 -> ldc.i4.1) -> это означает «ветвь, если больше, чем». Это означает, что если VIP-уровень игрока (ldarg.0 + ldfld) больше 0 (ldc.i4 0), функция перейдет к шестой функции (ldc.i4.1, что означает истина).
ldc.i4.0 -> что означает ложь. Если функция не перешла на ldc.i4.1, игра вернет это значение (false), поэтому игрок не будет VIP
br (7 -> ret) -> это перейдет к 7-й функции, которая является "ret". Конечно, после возврата false функция должна закрыться, поэтому она перейдет к «ret» в конце.
ldc.i4.1 -> это означает истину и вызывается "bge", которое мы видели выше. Это единственный способ, которым это значение называется так, если значение игрока больше 0, это будет следующее возвращаемое значение = Игрок ЯВЛЯЕТСЯ VIP.
ret -> Вы лучше меня знаете, что "ret" завершает функцию. Помните, что ВСЕ функции в игре должны заканчиваться на "ret", иначе игра не будет работать должным образом.
Итак, после этого долгого и скучного урока, как профессионалы могут взломать это?
Ответ находится в вашем мозгу. Если уровень vip игрока выше 0, игрок будет VIP, что мы будем делать? Конечно, взломаем vip уровень игрока! Как? Просто найдите "get_vipLevel" (обратите внимание, что это всего лишь пример, он не применяется к каким-либо конкретным играм, и ключевое слово может измениться), и это, вероятно, будет Int32, поэтому вы просто замените всю его функцию на:
ldc.i4 -> Int32 -> 15 (например, поскольку в большинстве игр с VIP-интерфейсом уровень VIP ограничен 15, в то время как в некоторых других максимальное значение уровня VIP составляет 10)
в отставке
Это не только автоматически активирует ваше VIP-членство, но также даст вам VIP-уровень = 15.
Обратите внимание, что даже если нам удастся взломать, в частности, VIP-уровень, некоторые онлайн-игры по-прежнему НЕ дают вам привилегии VIP-членства, или вы получите только некоторые из них. Почему? Потому что иногда уровень VIP в онлайн-играх управляется сервером, поэтому вы можете быть единственным, кто видит, что вы VIP-пользователь, тогда как все остальные люди увидят, что вы НЕ VIP-пользователь, потому что вы не являетесь VIP для сервера. Таким образом, если это значение на стороне сервера, вы все равно не сможете получить свои привилегии vip с помощью этого хака.
КАК размножаться ценность?
Легко, ты должен Добавить число, на которое нужно умножить значение, за которым следует "mul" перед "ret" или, если быть более точным, после того, как функция вернет значение, которое вы хотите взломать.
Пример:
ldarg.0 (что означает «это»)
ldfld Player :: get_money
ldc.i4 (или ldc.i8, или ldc.r4, или ldc.r8. Какой? См. мои примеры выше) -> Int32 (или Int64, или Single, или Double. Какой? См. мои примеры выше) -> Your_Value
мул
в отставке
Иногда функция возвращает разные значения, если происходят разные события, поэтому может потребоваться умножить большее количество значений.
КАК деление / вычитание / добавить ценность?
Это то же самое, что и раньше, вам просто нужно использовать «div» (или «sub» или «добавить»), а не «mul» (div = делить, mul = умножать, sub = вычитать, добавлять = добавлять).
Что разница между умножением удалось и просто возвращая 9999999?
Основное отличие состоит в том, что возвращение 9999999 даст значение STATIC. Он никогда не будет уменьшаться / увеличиваться, в то время как умножение (или добавление) значения даст ДИНАМИЧНОЕ значение, поэтому у вас могут кончиться деньги, но теоретически у вас также есть более низкий шанс бана. Не думайте о 9999999 только когда говорите о деньгах. Это может быть HP или Damage или XP и так далее ..
Я буду продолжать помещать некоторую основную (и, возможно, продвинутую) информацию здесь, чтобы помочь студентам начать заниматься взломом. На данный момент у меня нет времени, чтобы закончить эту тему, но я готов найти очень полезные сведения о том, как взломать игры.
Я не разрешаю кому-либо делиться своим учебником без моих разрешений.
Исходя из своего опыта, я могу сказать, что взломать игры с помощью .NET Reflector очень легко по сравнению с другими методами, и если вы все еще не можете взломать какие-либо игры ПОСЛЕ ПРОЧИТАНИЯ ВСЕХ УЧЕБНЫХ ПОСОБИЙ, я могу вам помочь. Глянь сюда: Я научу вас, как взломать Android игры!
Прежде всего, вам необходимо знать требования, чтобы взломать .NET Reflector.
Требования:
1) Имейте файл .apk, который вы хотите взломать. Вы можете найти оригинальную версию каждой игры в нашей игровой зоне: Sbenny.com, ваш бесплатный провайдер приложений и игр для Android с MOD APK или, если вы предпочитаете, вы можете посмотреть в Google, чтобы найти нужную игру.
2) Установите WinRar на ваш компьютер. ( Скачать WinRar 32bit | Скачать WinRar 64bit )
3). Отражатель .NET. ( Скачать .NET Reflector 9.0 ). Если у вас есть проблемы с активацией трещины NET Reflector, пожалуйста, посмотрите на Руководство SusieQ о том, как загрузить и установить NET Reflector, (Запустите файл крэка от имени администратора, чтобы получить код ответа в Read-Me)
4) Иметь "Reflexil", плагин, необходимый для взлома файлов с помощью .NET Reflector. ( Скачать плагин Reflexil для .NET Reflector )
5) Иметь APK подписчик. Я лично использую подписавшего в один клик. ( Скачать в один клик apk signer )
Get Ready
Давайте подготовим наше рабочее пространство:
1) Первый шаг - заглянуть в наш файл .apk, чтобы убедиться, что его можно взломать с помощью этого метода. Что мы будем делать, это переименовать apk (я рекомендую вам включить расширение файла, чтобы сделать вашу жизнь проще: short.sbenny.com ) из .apk в .zip;
2) Дважды щелкните файл .zip, и вы сможете открыть его с помощью WinRar. Если нет, щелкните правой кнопкой мыши и выберите «Открыть с помощью ...», а затем выберите «WinRar»;
3) Попробуйте перейти в следующее местоположение: assets / bin / Data / Managed /. Если вы достигли этого успешно, и если вы видите много файлов .dll внутри него, то ДА, вы можете взломать эту игру (или вы можете ПОПРОБОВАТЬ взлом), используя .NET Reflector!
4) Теперь извлеките всю папку «Managed», куда хотите (у меня есть папка на моем рабочем столе, которую я использую исключительно для взлома игр, куда я помещаю все программное обеспечение, необходимое для их взлома).
5) Откройте «.NET Reflector», переместите ВСЕ ФАЙЛЫ .DLL из папки «Managed» внутри него (переместите их в ЛЕВОЕ поле Reflector).
6) Нажмите F3, затем нажмите Ctrl + M. Это активирует окно поиска и правильно настроит его для наших областей. Обратите внимание, что это должно быть сделано КАЖДЫЙ РАЗ, когда вы открываете .NET Reflector.
7) Запустите Reflector (если вы прочитали «ReadMe.txt» в папке Reflexil по моей ссылке для скачивания выше, вы уже знаете, как его запустить. В противном случае, хорошо, нажмите на значок шестеренки или перейдите в Инструменты -> Reflexil и нажмите в теме)
Хорошо, нам удалось все настроить правильно, и мы наконец-то можем приступить к взлому!
Давайте начнем
Итак, давайте внимательно прочитаем то, что я напишу ниже, так как это легко понять, если вы потратите достаточно времени на чтение, хорошо?
1) Первый шаг после того, как вы захватили файл .apk, - это открыть его с помощью WinRar (я лично переименовал расширение в .zip, чтобы автоматически открывать его с помощью WinRar, но вы можете просто щелкнуть правой кнопкой мыши по файлу .apk и выберите «Открыть с помощью ...» -> WinRar).
2) Перейдите по следующему пути внутри окна WinRar: assets / bin / data / Managed /, как на скриншоте ниже:
3) Извлеките (вы можете просто перетащить их) все файлы .dll этого архива в желаемую папку (или, чтобы быть быстрее, просто перетащите из нее всю папку «Управляемые» архива.
4) Теперь откройте NET Reflector, нажмите F3 и Ctrl + M (это нужно делать каждый раз, чтобы быстро настроить NET Reflector для нашего использования), загрузите плагин Reflexil, щелкнув значок шестеренки, и переместите все файлы. dll внутри окна .NET Reflector (слева, как на скриншоте ниже):
5) Теперь мы готовы к поиску, поэтому введите нужное ключевое слово в поле поиска и отредактируйте нужный код, как показано на скриншоте ниже. Смотри внимательно:
6) Чтобы отредактировать код, вам нужно щелкнуть правой кнопкой мыши нужную инструкцию, которую вы хотите изменить, и выбрать «Редактировать». Когда вы закончите редактировать, нажмите «Обновить», как на скриншоте ниже:
7) Теперь сохраним наш код. Для этого на левой панели .NET Reflector прокрутите вверх, пока не найдете имя измененной сборки, затем щелкните правой кнопкой мыши -> Reflexil -> Сохранить, как на скриншоте ниже:
8) Он добавит «.Patched» к исходному имени файла .dll, чтобы вы знали, какой из них изменен, а какой - исходный файл .dll. Теперь, чтобы убедиться, что мы изменили правильный код, давайте снова загрузим сборку в .NET Reflector, чтобы посмотреть, как она теперь выглядит. (этот шаг не является обязательным, но рекомендуется, если вы не на 100% уверены, что взлом правильно написан:
9) Хорошо, в моем примере коды были правильными, поэтому мы можем продолжить добавление измененного файла .dll в наш исходный файл .apk. Итак, мы снова открываем файл .apk с помощью WinRar и заменяем исходный «Assembly-Csharp.dll» (или любые другие файлы .dll, которые вы изменили) на файл, содержащий «.Patched», но, конечно, вам нужно переименовать файл на исходное название, иначе игра не загрузится. Итак, в моем примере я переименовал Assembly-Csharp.Patched.dll в Assembly-Csharp.dll, чтобы восстановить его исходное имя.
10) Теперь пришло время подписать его (или вы можете добавить заставку если хотите, перед подписанием файла .apk). Таким образом, мы перемещаем измененный файл .apk в ту же папку, что и файл "one_click_signer.cmd" (или, если вы используете другой подписчик apk, используйте свой метод для его подписи), затем мы открываем его двойным щелчком и командой Появится окно с подсказкой.
Все, что нам нужно сделать, это набрать:
Код:
"name of the apk file.apk"
11) Вот и все! Наш файл MOD APK готов! В этой папке вы найдете новый файл .apk, имя которого начинается с «signed-». Это подписанный файл .apk, которым вы, наконец, можете поделиться! Но сначала, конечно, протестируйте игру и убедитесь, что она работает должным образом. Если да, это означает, что вы хороший хакер и можете, наконец, загрузить файл .apk, чтобы поделиться им со всеми! Если файл .apk не работает должным образом или созданные вами коды не отображаются, не теряйте надежды! Просто попробуйте еще раз, изменив некоторые другие смещения! Удачи!
Часто задаваемые вопросы:
Если вам нужна помощь, как всегда, ответьте ниже, и я буду рад добавить дополнительную информацию или помочь вам!
У вас есть Int32?
Вы можете вернуть значение следующим образом:
ldc.i4 -> Int32 -> Your_Value (без ограничений)
в отставке
or
ldc.i4.s -> SByte -> Your_Value (максимум 128)
в отставке
У вас есть Int64?
Вы можете вернуть значение следующим образом:
ldc.i8 -> Int64 -> Ваше_значение
в отставке
У вас есть Один?
Вы можете вернуть значение следующим образом:
ldc.r4 -> Один -> Your_Value
в отставке
У вас есть двойной?
Вы можете вернуть значение следующим образом:
ldc.r8 -> Двойной -> Your_Value
в отставке
У вас есть "Логический"?
Я привык сравнивать логическое значение с вопросом. По сути, он что-то «спрашивает» у игры, и игра отвечает True (да) или False (нет).
Например: get_isVip «спросит» у игры, является ли пользователь VIP, и игра, вероятно, ответит «Нет, он не VIP !!!», так что мы можем здесь сделать?
У нас есть два пути. Первый (проще, но многому не научишься ..) - всегда возвращать True (да), а второй (не всегда применимо, но это «профи») - сделать игру такой, что ты - VIP. серьезно.
Но сначала давайте объясним, как вернуть в игре «Истина» или «Ложь».
Правда = ldc.i4.1 (или ldc.i4 -> Int32 -> 1)
Ложь = ldc.i4.0 (или ldc.i4 -> Int32 -> 0)
Помните, что вы всегда должны использовать ldc.i4 (а не ldc.r4, ldc.i8 и т. Д.), Иначе игра вылетит.
Итак, самый простой способ всегда возвращать True (или False) логическому значению - это заменить всю функцию:
[ИСТИНА]
ldc.i4.1
в отставке
[НЕПРАВДА]
ldc.i4.0
в отставке
Теперь поговорим о методе профи. Как мы уже говорили выше, все дело в том, чтобы заставить игру думать, что вы на самом деле VIP, поэтому логическое значение, естественно, вернет истинное значение, даже если мы оба знаем, что вы не VIP в игре (конечно, я поговорим о VIP, чтобы привести пример, вы можете заменить слово «VIP» чем угодно. Например, «get_isUnlocked» или просто «IsUnlocked» - это логическое значение для разблокировки элементов в игре и т. д. Это зависит от вас. правильное ключевое слово для взлома значения).
Иногда проводятся некоторые «проверки», чтобы убедиться, VIP вы или нет. Например, игра проверяет ваш VIP-уровень и, если он равен 0, возвращает false, а если он выше 0, возвращает true.
Это должно выглядеть так (очень простой пример) в окне декомпиляции NET Reflector:
get_isVip {
если (this.Player.get_vipLevel)> 0
{
возвращают правда
}
возвращают ложный
}
И в Reflexil (окно плагина внизу) вы должны увидеть что-то вроде:
0 ldarg.0
1 ldfld Player.get_vipLevel
2 ldc.i4 0
3 bge (6 -> ldc.i4.1)
4 ldc.i4.0
5 сб (7 -> сбн)
6 ldc.i4.1
7 ret
Теперь не так сложно понять, что говорит Рефлексил. Давайте сравним текст с декомпилированным кодом NET Reflector:
ldarg.0 -> "это."
ldfld -> загружает значение, в частности, значение vip уровня игрока
ldc.i4 0 -> это означает 0, относится к vip-уровню игрока
bge (6 -> ldc.i4.1) -> это означает «ветвь, если больше, чем». Это означает, что если VIP-уровень игрока (ldarg.0 + ldfld) больше 0 (ldc.i4 0), функция перейдет к шестой функции (ldc.i4.1, что означает истина).
ldc.i4.0 -> что означает ложь. Если функция не перешла на ldc.i4.1, игра вернет это значение (false), поэтому игрок не будет VIP
br (7 -> ret) -> это перейдет к 7-й функции, которая является "ret". Конечно, после возврата false функция должна закрыться, поэтому она перейдет к «ret» в конце.
ldc.i4.1 -> это означает истину и вызывается "bge", которое мы видели выше. Это единственный способ, которым это значение называется так, если значение игрока больше 0, это будет следующее возвращаемое значение = Игрок ЯВЛЯЕТСЯ VIP.
ret -> Вы лучше меня знаете, что "ret" завершает функцию. Помните, что ВСЕ функции в игре должны заканчиваться на "ret", иначе игра не будет работать должным образом.
Итак, после этого долгого и скучного урока, как профессионалы могут взломать это?
Ответ находится в вашем мозгу. Если уровень vip игрока выше 0, игрок будет VIP, что мы будем делать? Конечно, взломаем vip уровень игрока! Как? Просто найдите "get_vipLevel" (обратите внимание, что это всего лишь пример, он не применяется к каким-либо конкретным играм, и ключевое слово может измениться), и это, вероятно, будет Int32, поэтому вы просто замените всю его функцию на:
ldc.i4 -> Int32 -> 15 (например, поскольку в большинстве игр с VIP-интерфейсом уровень VIP ограничен 15, в то время как в некоторых других максимальное значение уровня VIP составляет 10)
в отставке
Это не только автоматически активирует ваше VIP-членство, но также даст вам VIP-уровень = 15.
Обратите внимание, что даже если нам удастся взломать, в частности, VIP-уровень, некоторые онлайн-игры по-прежнему НЕ дают вам привилегии VIP-членства, или вы получите только некоторые из них. Почему? Потому что иногда уровень VIP в онлайн-играх управляется сервером, поэтому вы можете быть единственным, кто видит, что вы VIP-пользователь, тогда как все остальные люди увидят, что вы НЕ VIP-пользователь, потому что вы не являетесь VIP для сервера. Таким образом, если это значение на стороне сервера, вы все равно не сможете получить свои привилегии vip с помощью этого хака.
КАК размножаться ценность?
Легко, ты должен Добавить число, на которое нужно умножить значение, за которым следует "mul" перед "ret" или, если быть более точным, после того, как функция вернет значение, которое вы хотите взломать.
Пример:
ldarg.0 (что означает «это»)
ldfld Player :: get_money
ldc.i4 (или ldc.i8, или ldc.r4, или ldc.r8. Какой? См. мои примеры выше) -> Int32 (или Int64, или Single, или Double. Какой? См. мои примеры выше) -> Your_Value
мул
в отставке
Иногда функция возвращает разные значения, если происходят разные события, поэтому может потребоваться умножить большее количество значений.
КАК деление / вычитание / добавить ценность?
Это то же самое, что и раньше, вам просто нужно использовать «div» (или «sub» или «добавить»), а не «mul» (div = делить, mul = умножать, sub = вычитать, добавлять = добавлять).
Что разница между умножением удалось и просто возвращая 9999999?
Основное отличие состоит в том, что возвращение 9999999 даст значение STATIC. Он никогда не будет уменьшаться / увеличиваться, в то время как умножение (или добавление) значения даст ДИНАМИЧНОЕ значение, поэтому у вас могут кончиться деньги, но теоретически у вас также есть более низкий шанс бана. Не думайте о 9999999 только когда говорите о деньгах. Это может быть HP или Damage или XP и так далее ..
Я буду продолжать помещать некоторую основную (и, возможно, продвинутую) информацию здесь, чтобы помочь студентам начать заниматься взломом. На данный момент у меня нет времени, чтобы закончить эту тему, но я готов найти очень полезные сведения о том, как взломать игры.
Я не разрешаю кому-либо делиться своим учебником без моих разрешений.
Последний раз редактировалось модератором: