Пытаюсь изменить игру.

Sbenny.com доверяют 1,328,509 XNUMX XNUMX счастливых пользователей с 2014 года.
Зарегистрируйтесь

cmhruser

Начинающий Уровень 1️⃣
Участник 7 лет
Привет. Я пытаюсь изменить некоторые игровые значения. См. картинку ниже.
В этом сценарии игра подсчитывает очки «чести» (attack_honor), которые можно выиграть после матча PVP.
Я изменил ldc.i4.0 на ldc.i4 с целочисленным значением 250000. И удалил функцию вызова.

Однако это приводит к сбою игры. Что я делаю не так? Как мне заставить игру загружать значение 25000 или что-то еще, а не вызывать скрипт?
 

Вложения

Kryo

APK Fanatic Уровень 5️⃣
Участник 7 лет
Вы проверили, что получает ценность чести? Кроме того, мне кажется, что это диалоговое окно, которое нужно показать после вашего пвп-матча.
 

Sbenny

Сумасшедший ученый
Штатный сотрудник
Администратор
Отряд СБ Мод ⭐
✔ Утвержденный релизер
Активный пользователь
Нет ничего лучше, чем сам NET Reflector, чтобы проверить, правильно ли вы изменили свой код. Просто сохраните исправленную dll, поместите ее обратно в NET Reflector и снова перейдите к этой функции. Если вы видите цифру 250000 на месте, это означает, что вы изменили ее правильно. Имейте в виду, что если вы сделали это правильно, это не значит, что в игре все будет работать так, как ожидается, особенно в данном случае, поскольку мы почти наверняка имеем дело с онлайн-игрой, и даже несмотря на то, что Крио указал вам на возможно правильное решение , могут быть проверки самой dll (или сервера), чтобы увидеть, взломаны значения или нет.

Возможно, вы ищете общие ключевые слова, такие как «обнаружить», «чит», «взломать» и т. д., и найдите тот, который содержит «Application.OnQuit» (или аналогичный), который является обычной функцией закрытия игры. Тогда у вас будет два варианта:

1) *обнуление* функции (заменив всё на «ret»). Обратите внимание, что это решение не самое лучшее, поскольку вы удаляете эффект функции, которая ОБНАРУЖАЕТ ваш взлом, поэтому вам лучше следовать второму варианту.

2) Убедиться, что ваш код не обнаружен. Вы можете найти логическое значение, которое возвращает TRUE (ldc.i4.1) (или FALSE ldc.i4.0), если оно обнаруживает, что вы используете взлом, и затем может вызвать некоторые дополнительные коды, чтобы помешать вам играть, поэтому было бы разумно убедиться, что эта ПЕРВАЯ функция, которая вызывает последующие, НЕ обнаруживает ваш взлом, просто заменяя TRUE на FALSE (или FALSE на TRUE). Другой аналогичный подход — заменить (если есть) brtrue (который загружает функцию только в том случае, если предыдущие условия истинны) на brfalse (который будет загружать ту же функцию, только если предыдущие условия являются ЛОЖЬМИ). Таким образом, это может быть сделано из чего-то вроде:

if UserCheating BRTRUE -> Какой-то код, который помешает мне играть

К

if UserCheating BRFALSE -> Какой-то код, который помешает мне играть

потому что, поскольку мы точно знаем, что жульничаем, мы можем закрыть это приложение (или не дать мне играть), только если я НЕ жульничаю, чего не произойдет в модифицированной версии игры. :p

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

Kryo

APK Fanatic Уровень 5️⃣
Участник 7 лет
в этой игре используется файл playeprefs? вы можете взломать это в dll.
 

Sbenny

Сумасшедший ученый
Штатный сотрудник
Администратор
Отряд СБ Мод ⭐
✔ Утвержденный релизер
Активный пользователь
Поскольку это онлайн-игра, я сомневаюсь, что в ней есть метод PlayerPrefs, но мы подождем ее ответа. :)
 

cmhruser

Начинающий Уровень 1️⃣
Участник 7 лет
Спасибо, Бенни. Это полезная информация. Буду продолжать работать над этим.
Нет ничего лучше, чем сам NET Reflector, чтобы проверить, правильно ли вы изменили свой код. Просто сохраните исправленную dll, поместите ее обратно в NET Reflector и снова перейдите к этой функции. Если вы видите цифру 250000 на месте, это означает, что вы изменили ее правильно. Имейте в виду, что если вы сделали это правильно, это не значит, что в игре все будет работать так, как ожидается, особенно в данном случае, поскольку мы почти наверняка имеем дело с онлайн-игрой, и даже несмотря на то, что Крио указал вам на возможно правильное решение , могут быть проверки самой dll (или сервера), чтобы увидеть, взломаны значения или нет.

Возможно, вы ищете общие ключевые слова, такие как «обнаружить», «чит», «взломать» и т. д., и найдите тот, который содержит «Application.OnQuit» (или аналогичный), который является обычной функцией закрытия игры. Тогда у вас будет два варианта:

1) *обнуление* функции (заменив всё на «ret»). Обратите внимание, что это решение не самое лучшее, поскольку вы удаляете эффект функции, которая ОБНАРУЖАЕТ ваш взлом, поэтому вам лучше следовать второму варианту.

2) Убедиться, что ваш код не обнаружен. Вы можете найти логическое значение, которое возвращает TRUE (ldc.i4.1) (или FALSE ldc.i4.0), если оно обнаруживает, что вы используете взлом, и затем может вызвать некоторые дополнительные коды, чтобы помешать вам играть, поэтому было бы разумно убедиться, что эта ПЕРВАЯ функция, которая вызывает последующие, НЕ обнаруживает ваш взлом, просто заменяя TRUE на FALSE (или FALSE на TRUE). Другой аналогичный подход — заменить (если есть) brtrue (который загружает функцию только в том случае, если предыдущие условия истинны) на brfalse (который будет загружать ту же функцию, только если предыдущие условия являются ЛОЖЬМИ). Таким образом, это может быть сделано из чего-то вроде:

if UserCheating BRTRUE -> Какой-то код, который помешает мне играть

К

if UserCheating BRFALSE -> Какой-то код, который помешает мне играть

потому что, поскольку мы точно знаем, что жульничаем, мы можем закрыть это приложение (или не дать мне играть), только если я НЕ жульничаю, чего не произойдет в модифицированной версии игры. :p

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