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

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 в адресе была. Теперь счетчик не могу заставить работать((

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
6 минут назад, Kiorn сказал:

СПАСИБО

Люблю вот такие посты. От мене плюс. Удачи во взломе!!!

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, Garik66 сказал:

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

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

 

Изменено пользователем ReWanet

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
6 минут назад, ReWanet сказал:

Забыл про push / pop 

Кто забыл? :D

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 минуты назад, Garik66 сказал:

Кто забыл? :D

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

 

Изменено пользователем ReWanet

Поделиться сообщением


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

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

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

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

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

  • Понравилось 1

Поделиться сообщением


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

Помогите.Делаю в программе то что нужно,сохраняю таблицу,а при след. заходе в игру таблица уже не работает,что я делаю не так?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
37 минут назад, DimaZ сказал:

что я делаю не так?

то что не нужно

 

  • Смешно 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
39 минут назад, DimaZ сказал:

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

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

Поделиться сообщением


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

Много информации в этой теме и сложно разбираться без заголовков тем. Закрываю

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.

×

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

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