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

TrainMe - Chameleon [Level 2]


holy

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

Здравствуйте :)


Написал относительно простенький TrainMe. Не смотря на его простоту, в нем есть то, с чем новичек сразу не справится :)

 

Задание:

- Найти указатель на значение (не забудьте проверить его, после перезапуска программы) и скинуть CT файл (мне будет интересно взглянуть на найденные вами адреса). Как вы это сделаете, откуда возьмете - не важно, главное чтобы из адресного пространства программы.

 

Скачать

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

12 часа назад, holy сказал:

Найти указатель на значение (не забудьте проверить его, после перезапуска программы)

holy, почему именно тебе нужны указатели? 

Я например очень давно их не ищу, изредка, если труднонаходимый фильтр ищу поинтеры 1 (максимум 2 уровня).

 

В табличке куча адресов с указателями (найдены автопоиском СЕ, я не много из них выбрал, их там очень и очень много)

и скрипт  "pointer" с прикреплённым адресом "Value" , активируй скрипт, измени значение в трейнми и в адресе будет

значение (это способ, который я обычно использую). 

 

TrainMe by holy - Chameleon LEVEL 2.CT

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

3 minutes ago, Garik66 said:

почему именно тебе нужны указатели? 

Потому-что скрипт написать в разы проще ) В чем тут тогда соревнование? Кто быстрее скачает файл и запустит CE?

Иногда, когда реальное расположение значения невозможно поймать, как например в TrainMe Maze, я не прошу находить адреса, так как в том TrainMe реальное значение бегало по массиву и не имело статичного адреса.

Именно для этого и присутствует пункт "Задание". В данном TrainMe всё просто, главное подумать в нужном направлении, и решив задание, ты не скажешь что оно было странным или глупым )

Поверь, правильный ответ у данного TrainMe действительно очень прост, главное понять код и всё станет ясно :)

 

16 minutes ago, Garik66 said:

В табличке куча адресов с указателями (найдены автопоиском СЕ, я не много из них выбрал, их там очень и очень много)

и скрипт  "pointer" с прикреплённым адресом "Value" , активируй скрипт, измени значение в трейнми и в адресе будет

значение (это способ, который я обычно использую). 

  • К сожалению, ни в одном из указателей не оказалось того значения :(
  • Скрипт работает, но после выключения скрипта и изменения значения в программе - программа крэшится, скорее всего конфликтуют твои имена pointer и Pointer во время DISABLE (отключения) скрипта, изменил имя с Pointer на PointerS и скрипт стал корректно выключаться.
  • Однако если захочешь, то подумай над тем, как узнать реальный адрес :)
Ссылка на комментарий
Поделиться на другие сайты

24 минуты назад, holy сказал:

Не работает:

1. Адрес 77C521F8 находится вне адресного пространства кода.

2. У меня адреса 77C521F8 вообще нет.

Эт на Win XP указатель

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

Just now, SpiritWithim said:

Эт на Win XP указатель

Адрес не находится в адресном пространстве программы. Ты нашел не тот адрес.

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

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

14 минуты назад, holy сказал:
  • К сожалению, ни в одном из указателей не оказалось того значения :(
  • Скрипт работает, но после выключения скрипта и изменения значения в программе - программа крэшится, скорее всего конфликтуют твои имена pointer и Pointer во время DISABLE (отключения) скрипта, изменил имя с Pointer на PointerS и скрипт стал корректно выключаться.
  • Однако если захочешь, то подумай над тем, как узнать реальный адрес :)

Странно у меня всё работает, не вылетает, перекачал ещё раз твою прогу (а то удалил) и записал видео:

 

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

31 minutes ago, Garik66 said:

Странно у меня всё работает

Выключи скрипт и нажми кнопку Inc value или Dec value. Программа вылетит. У меня так.

Но не в этом суть, это не важно ) У меня Cheat Engine 6.5.1 может по этому.

 

P.S. У тебя наверно какой-то плагин имеется в CE, ибо у тебя Lua Engine ругается. Либо скрипт либо ещё что-то, я не знаю )

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

28 минуты назад, holy сказал:

Выключи скрипт и нажми кнопку Inc value или Dec value. Программа вылетит. У меня так.

:wacko:Ну да, конечно нужно было переименовать либо pointer, либо Pointer (различия заглавная/не заглавная буква нет).:rolleyes:

Скрипт подправил, перезалил табличку.

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

31 минуты назад, holy сказал:

ибо у тебя Lua Engine ругается.

Да ругается (об этом писал раньше), но не знаю с чем это связано, у меня СЕ 6.5 (не люблю промежуточные версии).

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

2 часа назад, LIRW сказал:

Не знай как будет работать или нет у других, но Base - 00401344 + 0 + 0  У меня всё работает.

Жень, там два таких адреса:

1. Твой

2. [[["TrainMe by holy - Chameleon LEVEL 2.exe"+13A8]+0]+0] или [[[004013a8]+0]+0].

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

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

Жень, там два таких адреса:

1. Твой

2. [[["TrainMe by holy - Chameleon LEVEL 2.exe"+13A8]+0]+0] или [[[004013a8]+0]+0].

Ну в принципе да Игорь. Я просто не стал второй давать, так как смысл то какой :mellow: и этот рабочий - даже комп перегружал, ну проверить и работало всё.  Адрес ищется за один заход за 5 секунд - прям брык и всё. Было 17 адресов в начале, закрыл программу, перезагрузил и осталось 4.  Два из них оказались какие то странные, очень сомнительные и потом они перестали работать. А вот 2 адреса рабочих.

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

4 hours ago, LIRW said:

Не знай как будет работать или нет у других, но Base - 00401344 + 0 + 0  У меня всё работает.

Верно! Правильный подход.

 

Суть данного TrainMe в том, что он обманывает CheatEngine тем, что выдает якобы "статический" адрес, который на самом деле при перезапуске программы меняется.

На самом деле существует 3 таких адреса в коде (3 инструкции в которых присутствует адрес):

  1. При инициализации (присвоению значению 100)
  2. При увеличении / уменьшении значения на 10
  3. При освобождении динамически выделенной памяти

Но суть в том, чтобы добавить в таблицу CE адрес на одну из этих инструкций (например):

CPU Disasm
Address   Hex dump             Command                                  Comments
004013A6  |.  8B15 83604000    MOV EDX,DWORD PTR DS:[406083]

И добавить к ним оффсет, например в данном случае 004013A6 + 2 (опкод команды MOV в данном случае занимает 2 байта 0x8B15) и получаем указатель на указатель который указывает на значение.
 

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

  • 1 месяц спустя...
  • 2 недели спустя...
  • 2 недели спустя...
×
×
  • Создать...

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

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