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

Cheat Engine. Общие вопросы по работе с программой


Рекомендуемые сообщения

10 минут назад, Garik66 сказал:

Приведи свой скрипт - > объясню где у тебя ошибка и почему валится игра.

В своих уроках я неоднократно этот вопрос затрагивал и показывал.

 

Спойлер

[ENABLE]

aobscan(Items_Condition,D9 80 64 01 00 00 DE) // should be unique
alloc(IC,$256)


label(return)
label(metka1)
label(IC_1)
registersymbol(IC_1)


IC:
  mov ecx,[eax+0000011C]
  cmp [ecx+0C],'Play_Snd'
  jne metka1
  add [IC_1],1
  metka1:
  mov ecx,0

  fld dword ptr [eax+00000164]
  jmp return

IC_1:
dd 0

Items_Condition:
  jmp IC
  nop
return:
registersymbol(Items_Condition)

[DISABLE]

Items_Condition:
  db D9 80 64 01 00 00
unregistersymbol(Items_Condition)
unregistersymbol(IC_1)
dealloc(IC)

 

 

Причину краша я нашел. Лишняя 1 в адресе была. Теперь счетчик не могу заставить работать((

А уроки я посмотрю, обязательно.

Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 287
  • Создана
  • Последний ответ

Топ авторов темы

2 минуты назад, Kiorn сказал:

Теперь счетчик не могу заставить работать((

Счетчик не работает понятно почему - позже объясню.

 

Вначале культура задания вопросов, принятая на форуме:

1. Если просят привести скрипт, то приводите его с стандартными СЕ-ными ЛОГами, которые внизу скрипта. 

 

Теперь вопросы по скрипту:

1. В регистре ecx - ты уверен, что он свободный? Если нет, лучше юзать push ecx/pop ecx.

2. Ты уверен, что в адресе [eax+0000011C] у всех адресов с которыми работает выбранная тобою инструкция (fld dword ptr [eax+00000164]), есть указатели (поинтеры)? Если не уверен, то хотябы нужно поставить проверку на 0, прежде чем пытаться  писать такую инструкцию mov ecx,[eax+0000011C]. Чаще всего именно здесь и происходит вылет из игры.

 

Теперь почему не работает счетчик:

Вот так 

cmp [ecx+0C],'Play_Snd'

[ecx+0C] всегда будет не равно 'Play_Snd'

Потому что [ecx+0C] - это 4 байта, а  Play_Snd это 8 байт.

Я уже и ранее писал, но вы читаете не внимательно, т.е. варианты:

либо как у меня в скрипте в том сообщении  перевести в HEX и сравнивать по 4 байта, либо можно сделать ещё так:

cmp [ecx+0C],'Play'    // Первые 4 байта
jne.....
cmp [ecx+0C+04],'_Snd' // Следующие 4 байта строчка нужна, если недостаточны первые 4 байта для сравнения.
jne......

Отпишись о результатах.

Ссылка на комментарий
Поделиться на другие сайты

ЗЫ: забыл, у тебя там строка в уникоде, поэтому скорее всего это 

cmp [ecx+0C],'Play'    // Первые 4 байта
jne.....

тоже не сработает, т.к. 'привет' слеши для обычного текста, поэтому скорее всего нужно будет перевести в HEX.

Ссылка на комментарий
Поделиться на другие сайты

8 минут назад, Garik66 сказал:

ЗЫ: забыл, у тебя там строка в уникоде, поэтому скорее всего это 


cmp [ecx+0C],'Play'    // Первые 4 байта
jne.....

тоже не сработает, т.к. 'привет' слеши для обычного текста, поэтому скорее всего нужно будет перевести в HEX.

Garik66, спасибо большое!

Проблема была в [eax+0000011C] (Play уплыл от туда).

Нашел другое значение и без Sting'ов.

Проблема решена.

Ребята! Всем СПАСИБО за помощь!!!

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

1 час назад, Garik66 сказал:

1. В регистре ecx - ты уверен, что он свободный? Если нет, лучше юзать push ecx/pop ecx.

Забыл про push / pop 
А так вообще не понимаю проверки по тексту. Хотя иногда сам ей грешил. Ну это ИМХО.

 

Изменено пользователем ReWanet
Ссылка на комментарий
Поделиться на другие сайты

2 минуты назад, Garik66 сказал:

Кто забыл? :D

Я в своем сообщение забыл упомянуть про них.

 

Изменено пользователем ReWanet
Ссылка на комментарий
Поделиться на другие сайты

строки нельзя сравнивать через cmp

это будет сравнение как чисел,  разве что указатель на него сравнивать (если это const строка)

а так строки сравнивают через cmps-инструкции или другие

(хотя не знаю зачем сроки сравнивать для чита)) чаще работаем с указателями или некими перечислениями)

  • Понравилось 1
Ссылка на комментарий
Поделиться на другие сайты

  • 2 месяца спустя...
39 минут назад, DimaZ сказал:

Делаю в программе то что нужно

Лучше создай отдельную тему с указанием игры и объяснениями, что именно делаешь,  а в идеале приложи скрипт, обычно если таблица не работает после перезапуска, то проблема с сигнатурами, придется ручками делать её  длиннее

Ссылка на комментарий
Поделиться на другие сайты

  • MasterGH закрыто и откреплено это тема
Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...

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

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