
Изменений значений внутри игры Valheim на здоровье с помощью программы Cheat Engine.
Для начала нужно запустить саму игру(Valheim) и программу(Cheat Engine). В игре нужно загрузить игровой мир, после чего перейти в программу.

В программе с помощью кнопки компьютера с лупой кнопки нужно выбрать процесс – Valheim

И нажать Open. После этого начнем поиск адреса, в котором находится значение нашего здоровья. Для этого смотрим, сколько у нас здоровья в данный момент.

Здоровья 25. Потому в программе ставим значение 25, и изменим Value Type на Float. После чего жмем First Scan.

Как видим, нашлось почти 160 тысяч значений 25. Далее нам нужно поменять значение здоровья, чтобы искать среди найденных значений уже другое, изменившееся значение. Например, можно съесть еду:

Как видим, сейчас здоровья стало 40. В программе меняем искомое значение на 40 и жмем Next Scan.

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

Сейчас в этом списке двойным щелчком жмем на строчку в колонке Value и пытаемся изменить значение на меньшее:


Как видим, после изменения первой строчки ничего не поменялось – значение вернулось к прежнему. Проделываем те же шаги с остальными строчками, пока не найдем ту, на которой значение останется новым:

Получилась последняя строчка. Поздравляю, вы нашли значение здоровья! Остальные строчки можно удалять. А на оставшейся строчке нажать двойным щелчком в колонке Description, и написать, что это здоровье (чтоб потом не запутаться, если будем изменять и другие параметры).

И проверим в игре поставим значение 10 и вернемся в игру, чтобы убедиться, что нашли нужное значение.

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

Появится такое окно, в котором лишь один процесс будет иметь действие на наше здоровье. Для начала можно нажать Stop, потом выделить эту строку и нажать Show disassembler.

Жмем провой кнопкой на выделенной строчке, выбираем «Find out what addresses this instruction access».

Появится такое окно:

Ищем в нем строчку с адресом нашего значения здоровья, его можно посмотреть в основном окне программы:

В нашем случае это «1CFC16E3A4C». Выбираем эту строчку тут

И жмем Ctrl + R. Появляется такое окно:

Записываем значение верхнего регистра (RAX) и закрываем это окно.
В этом окне, кстати, тоже нажимаем Stop и закрываем его:

В этом окне

На выделенной строчке (мы не меняли выделение, тут выделена именно та строчка, которая меняет значение здоровья) жмем Ctrl + A. Появится это окно:

Тут жмем Ctrl + i , в появившемся окне просто жмем ОК:

В предыдущее окно вставится такой код:

Нам нужно его дополнить в месте, где написано «place your code here» следующими строчками:
cmp eax,C16E3A40
это мы сравниваем значение половины регистра RAX с тем значением, которое мы выписали ранее, писать надо только последние 8 знаков, вместо 16 (я пытался сравнить весь регистр RAX, вписывал 16 знаков, но они обрезались наполовину, потому не смог). То есть регистр RAX=000001CFC16E3A40, а нам нужно только C16E3A40.
jne originalcode
если результат сравнения отличается, то исполняется обычный код, если же равен, то сначала исполняются следующие две строчки:
mov [rbp-68],(float)100
здесь записываем в переменную значение 100 – значение, которое хотим видеть в нашем здоровье
movq xmm5,[rbp-68]
здесь записываем это значение из переменной в тот регистр, из которого далее будет браться игрой значение здоровья.
Итого, получаем такой код:

Жмем кнопку Execute.

Жмем Yes.

Жмем Yes.
Выходим в игру и проверяем:

Действие еды закончилось, ничего не действует на наше здоровье, потому и код не выполняется. Чтобы сработало, просто съедим что нибудь:

Всё, здоровье будет 100, и не будет меняться. Для проверки идем к врагам:

Всё работает!
_