Перейти к содержанию

Garik66

Помогаторы
  • Постов

    5 750
  • Зарегистрирован

  • Победитель дней

    292

Весь контент Garik66

  1. SergBrNord, PS1: Да, и ещё заметил у тебя на скрине Анализа Структур, что есть предыдущее значение НР (где-то я уже использовал такое у себя в скрипте вместо максимального) , так что 1 вариант скрипта можно записать ещё и так, чтобы записывать не #99, а игровое значение.
  2. PS: 1. вариант выглядит более надёжно, потому что, обрати внимание на строчку у тебя по коду игры: xor eax,ecx // значение НР XORируется. и уже шифрованное значение загружается в по смещению +04: mov [ecx+04],eax // шифрованное значение загружается во второй элемент от начала структуры. Так что возможна далее по коду проверка, поэтому вариант 2. может не работать. Какая возможна проверка: Недавно LIRW ломал игру "unepic" и попросил помочь с шифрованными значениями (правда так и не воспользовался моим скриптом). Так вот, в этой игре код примерно такой же. Что сделали разработчики: Записывают XORированные значения (XORирование через две константы) в два соседних адреса, а потом дальше по коду сверяют их друг с другом и, если значения в этих адресах не совпадают, то Ваш ГГ лопается - смотрится очень прикольно кстати - мне понравилось .
  3. Стандартная ошибка всех, кто начинает (не беспокойся все эту ошибку делают ). Посмотри участок твоего кода: mov dword ptr [ecx], #99 // записываем 99 НР code: mov [ecx],eax // и сразу же затираем их значением в eax/ Если твой фильтр верен. Исправить скрипт можно двумя вариантами: 1. 2.
  4. SerVick 1. Не нужно цитировать полностью сообщение, об этом часто пишем (Xipho, NullAlex и я), особенно, если в сообщении есть видео, коды, потом очень неудобно читать топик. Тем более что движок форума позволяет выделить нужную строчку в сообщении и эту строчку уже процитировать. 2. да. для 32-битных программ.
  5. Лестницы ни какой нет. При срабатывании инструкции на адресе НР: mov [ebx],eax в eax лежит текущее значение НР, в ebx временно лежит адрес НР ГГ, т.е. этой инструкцией записываются текущие НР в адрес НР ГГ. mov ebx,eax эти же текущие НР записываются в ebx, по видимому дальше по коду игры текущее значение НР будет ещё использоваться. mov eax,[esp+18] загрузка в регистр eax (который на данный момент кода свободен) какого-то значения из стека (значение находится на 6 позиции от верха стека 18(HEX)=24, 24/4=6), esp всегда - это указатель на вершину стека. Стек используется для экономии памяти, т.е. при загрузке значения в стек не нужно куда-то записывать указатель на это значение (т.е. при каждой загрузке в стек мы экономим 4 байта на указателе и ещё на доп.инструкциях.) Про стек, его организацию почитай например статью из вики: Что точно хранится в этом моменте на 6 позиции стека без игры тебе не скажет никто, Это может быть урон, рассчитанный ранее или например наоборот лечение рассчитанное ранее. Ну допустим это урон. Тогда дальше возможен например такой код. cmp ebx,eax // сравниваем текущее значение НР ГГ с нанесённым по нему уроном. jbe @F // если меньше или равно, то прыгаем например на функцию смерти ГГ. sub ebx,eax // если больше, то отнимаем от НР ГГ урон.
  6. LUA я не знаю, так что сам код не смотрел даже, но судя поэтому: Часы у него показывают время и дату (и мировое и внутриигровое).
  7. SerVick Понял, что ты нашёл и почему тебя это запутало. СЕ при поиске/отсеве адресов 4 байта (или float) проверяет все адреса с шагом 4 байта, т.е. кратно 4. а теперь посмотри на инструкцию, которая работает с нужным нам адресом: "willrock.exe"+22210: D9 96 C7 02 00 00 - fst dword ptr [esi+000002C7] Смещение 000002C7 не кратно 4. Поэтому адрес, который ты нашел. находится по смещению [esi+000002C8] - да он морозит кислород. Вот сейчас специально переискал: получил адрес [092419F8] значение в 4 байтах 3762339364 (во float -5.555431153E19). Поставив на него бряк всё равно выйдем на правильную инструкцию fst dword ptr [esi+000002C7], а уже из инструкции получим правильный адрес: [092419F7] = (float) 5.941988945. Наверное разрабы специально сместили адрес на байт, чтобы запутать новичков. Да и при построении Структуры, СЕ тоже не покажет правильный адрес, а покажет адрес [092419F8], поэтому его тоже нужно вводить вручную.
  8. Вот нашёл пример, чел написал часы с календарём для "OpenComputers" мод Ссылка на описание: Ссылка на сам код:
  9. SerVick Я не проверял, но думаю все три скрипта и мой, и LIRW, и твой работают примерно одинаково. Я думаю разрабы взяли за основу в этой игре содержание углекислого газа в лёгких при задержке дыхания т.е. при 0 % углекислого газа нормальное содержание кислорода, а при 25 % углекислого газа кислорода уже нет, он уже весь ушёл на окисление. Мой скрипт просто постоянно записывает 0 %. Поэтому работает, как вы выразились - как по воздуху. Твой скрипт отнимает тоже самое количество, что и прибавилось углекислого газа, поэтому, если твой скрипт включён до вхождения в воду, то он работает так же как и мой, т.е. концентрация 0 процентов (инструкция с которой работал ты находится как раз над моей). Скрипт LIRW в игре не смотрел, но думаю, что работает также. Реализаций много как видишь. А теперь вернёмся к твоим значениям, как видимо - ты пока ещё путаешься в типах значениях Никаких значений типа 4б = 138354444 и 1.058382152E-14 = 675195203 там нет. Чтобы убедиться: перейди в отладчик выдели там мою инструкцию: "willrock.exe"+22210: D9 96 C7 02 00 00 - fst dword ptr [esi+000002C7] ПКМ по ней и выбери в контекстном меню "Найти адреса, к которым обращается инструкция" И в новом появившемся окне сразу выбери тип float. Найдётся один адрес и значение в нём на воздухе будет равно 0. А когда нырнёшь, то значение начнёт расти и при значении выше 25 начнут отниматься НР.
  10. У меня на 1 месте Fallout 2. (Fallout от Беседки не понравились). Ну а в коллекции Heroes of Might and Magic II Gold (и конечно же 3), The Witcher (1 и 3 части), Вся серия King's Bounty, Dark Souls - Prepare to Die Edition (второй не понравился) и Hitman Absolution. ЗЫ: Забыл - первый Дьябло и из настольных игр - Преферанс и Тысяча.
  11. На всякий случай скрипт с аобсканом, а то вдруг адрес инструкции меняется после перезагрузки игры: И скрипт infiniteHP
  12. Вот сейчас отключил заморозку адреса. Здоровье начинает отниматься когда кислород (а точнее думаю это углекислый газ ) равен 25.58665848 во float.
  13. Но никаких твоих значений я не нашёл и да, как и говорил кислород лежит в структуре ГГ (по смещению [esi+00000040] так и написано - player .
  14. Значит что я нашёл значение во float от 0 (когда шкала полная т.е. не в воде) и до 24 (когда нужно уже умирать - утонул). инструкция на запись: "willrock.exe"+22210: D9 96 C7 02 00 00 - fst dword ptr [esi+000002C7]
  15. Значение во float кислорода. Осталось 36 значений заморозил все, кислород замер, но игра вылетела, так что не успел выйти на кокретное значение. Сейчас перекурю - сделаю.
  16. Ну кислород думаю где-то рядом с HP будет (обычно в структуре очень близко лежит), только нужно дойти до место купания.
  17. Если я скачал ту же игру, что и у тебя. То например НР ГГ в самом начале: экранное значение 4 байта 100 реальное значение float 100 И не каких твоих значений я там не нашёл.
  18. Чёй-то не могу найти нормальный репак, наверное забью, не хочется потом чистить опять комп, если нормально не встанет.
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.