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

[Cheat Engine] Программа не находит массив байтов, соответственно не активируются скрипты


JackNewMan

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

Доброго времени суток. Начал осваивать уроки взлома "от а до я" на ютубе и столкнулся с одной проблемкой при работе с СЕ. (Версия 7.4)

Она заключается в том, что АОБ иньектор не всегда находит массив байтов, при том, что в инструкциях я их вижу и даже пробовал прописывать эти байты в скрипт вручную(отмечу, что пытаясь найти этот массив байтов через сканирование массива байтов, к успеху также не прихожу). Ругается вот так:

aobscan(noye,ERROR: Could not find unique AOB, tried code "44 89 44 03 0C 44 8B 44 03 0C") // should be unique

 

Увеличить количество байтов в скрипте пробовал, но результатов это не принесло. Другие способы работы с инструкциями не знаю - я пока на уроке "13. Делаем телепорт типа Save/Restore Position", да и хочется понять в чём может быть проблема.

 

Кто подскажет с чем такое может быть связано и как исправляется? Ну и заодно подсказать альтернативный способ работы с инструкциями (хотябы название, а я уж покопаюсь-поищу что это и с чем едят)

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

То, что тебе говорит СЕ - он не может найти уникальную цепочку байт, чтобы однозначно идентифицировать нужную инструкцию. В этом случае можно попробовать взять для сигнатуры побольше байт (некоторые умудряются брать по нескольку десятков байт), или же попробовать взять уникальные байты выше/ниже нужной инструкции, а в скрипте уже учесть смещение от выбранной  инструкции до нужной. Ну и не лишним будет указать игру, которую ты взламываешь, и что конкретно ты пытаешься сделать (вангую, что тоже телепорт, но мало ли).

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

Разобрался. Спасибо за ответ, но проблема была в другом, даже стыдно признаваться, но мб кто-то ещё так тупанёт и кому-то пояснение поможет. 😃

В общем, после того как скрипт мне выдал эту ошибку(раньше всегда сразу срабатывал), я не стал дописывать новые байты в сам скрипт, а пытался найти оригинальный набор байтов через сканирование, чтобы вставить в скрипт уже гарантированно рабочий вариант. Выбрал тип Array of byte, перевёл галочкой в хекс, дописал новые байты, но таким образом не смог найти ни одного значения, какие бы комбинации байтов не вписывал и сколько бы новых байтов туда не дописывал. Даже вопросики пробовал дописывать, как в некоторых гайдах советуют. А всё оказалось неприлично просто. Нужно было убрать галочку с Writable и поставить квадрат на CopyOnWrite (мб при скане массива байтов оптимально ставить квадрат и туда и туда).

После этого оригинальный массив байтов был найден моментально. В общем-то этой проблемы можно было избежать редактируя скрипт, а не выпендриваясь со сканированием. 😃 Зато разобрался.

 

Игра "кастельвания, лорды теней". Да, телепортация. А ещё мне любопытно, могут ли быть значения координат зашифрованы? (не встречал такого, просто любопытно)

 

ПС. Можете подсказать как в ассемблере смотреть значения реестров для инструкции? В окне отладчика можно нажать кнопку "доп информация", а в самом ассемблере вроде потыкал кнопочки, несколько раз вылетал с игры, но так и не нашёл искомое, да и запросы в поисковиках нужную инфу не дали.

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

7 часов назад, JackNewMan сказал:

А ещё мне любопытно, могут ли быть значения координат зашифрованы? (не встречал такого, просто любопытно)

на моем опыте - не встречал

 

7 часов назад, JackNewMan сказал:

ПС. Можете подсказать как в ассемблере смотреть значения реестров для инструкции?

может быть регистров? тогда так (например):

Спойлер

image.png.350c89428c1a85a5ba563d66cfa58475.pngimage.png.854cc692b06db3b6bac781e458416670.png

 

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

7 часов назад, Garik66 сказал:

может быть регистров? тогда так (например)

Вроде и смотрю на картинку, но как вы на это окно вышли не имею ни малейшего понятия. 😃 Вот я в ассемблере, куда тыкать дальше?

В теории можно подключать дебаггер, триггерить инструкцию и в дебаггере смотреть что к этой инструкции пристаёт и уже через ту инструкцию смотреть регистры этой, также её триггернув, но это извращение если честно.

 

14 минут назад, Antonshka сказал:

Шифрование координат используется в Cyberpunk 2077.

Вот не поверите, но когда в моей голове сформировался данный вопрос - на ум первой мне пришла именно эта игрушка. 😃 

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

В 01.12.2022 в 19:16, JackNewMan сказал:

Вроде и смотрю на картинку, но как вы на это окно вышли не имею ни малейшего понятия. 😃 Вот я в ассемблере, куда тыкать дальше?

В теории можно подключать дебаггер, триггерить инструкцию и в дебаггере смотреть что к этой инструкции пристаёт и уже через ту инструкцию смотреть регистры этой, также её триггернув, но это извращение если честно.

Значение регистров возможно узнать только при подключении отладчика. Так устроена работа системы.

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

В 04.12.2022 в 09:55, Antonshka сказал:

Значение регистров возможно узнать только при подключении отладчика. Так устроена работа системы.

Как-то неудобно немного. Возможно я чего-то не знаю или что-то делаю неправильно.

Мне для чего регистры-то понадобились. Я, изучая инструкции в ассемблере, ползаю вверх-вниз по инструкциям относительно сработавшей, смотря что там к чему, и, например, появилась нужда узнать с каким значением идёт сравнение или узнать адрес на который та или иная инструкция влияет, а узнавать это я пока умею только считая адрес через регистры+смещение и вручную его вводя через кнопку "Add address manually".

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

Изменено пользователем JackNewMan
Немного подправил четвёртое предложение.
Ссылка на комментарий
Поделиться на другие сайты

4 часа назад, JackNewMan сказал:

узнавать это я пока умею только считая адрес через регистры+смещение и вручную его вводя через кнопку "Add address manually".

для этих целей проще ИМХО воспользоваться опцией СЕ трассировка

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

13 часов назад, JackNewMan сказал:

Как-то неудобно немного. Возможно я чего-то не знаю или что-то делаю неправильно.

Дело в том, что у компьютерного процессора всего несколько регистров. RAX, RBX, RCX, и еше некоторые.

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

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

 

 

Человек может вести запись того, что он держал в своих руках последние 5, 10, 20, минут. Но специально человек этого не делает.

9 часов назад, Garik66 сказал:

для этих целей проще ИМХО воспользоваться опцией СЕ трассировка

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

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

×
×
  • Создать...

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

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