20111222

Третья часть про трейнеры!

На этот раз - видео. Вот [ссылка].
Заодно выкладываю [архив] с исходным кодом и скомпилированным трейнером.

Нагуглите и прочитайте обо всём, что не стало понятным из урока (в частности - про новые WinAPI-функции), спросите об оставшеимся тут, в комментариях на youtube или на [форуме], медитируйте, делайте зарядку и чистите зубы 2 раза в день. :)

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

PS: Очень полезно будет загрузить скомпилированный трейнер в Olly (File -> Open) и посмотреть на его работу пошагово. Многое запросто может встать на свои места. Попробуйте, не бойтесь экспериментировать! Это же так весело и интересно. :)

4 комментария:

  1. Дмитрий23/12/11 00:44

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

    ОтветитьУдалить
  2. Попробую объяснить:

    Открывая процесс через WinAPI OpenProcess, мы получаем полный доступ (на чтение и на запись) к его адресному пространству - это значит, что мы можем менять как данные в оперативной памяти (адреса, которые мы обычно через СЕ ищем), так и код. Адреса в памяти и адреса в коде очень похожи, главный принцип тут в том, что адреса кода своего положения относительно начала файла (базового адреса) никогда не меняют. Будет отдельный случай, когда это может происходить, скоро будет по этому случаю урок.

    А вот когда игра грузится и винда выдаёт ей кусок оперативной памяти для хранения всех её данных - этот кусок как раз может загрузиться как по статическим адресам (зелёным, они своего положения тоже не меняют), так и динамическим (чёрным, к ним надо искать указатели).

    В моём примере трейнера мы меняли код (писали сначала команду "отключить получение урона", а затем "вернуть оригинальный код обратно"), а можем и менять какие-то значения в памяти игры.

    Спасибо за дельный комментарий, нужно мне будет подробно на этом остановиться, заодно покажу как из трейнера с указателями работать. :)

    ОтветитьУдалить
  3. Дмитрий23/12/11 20:27

    А вот, если мне необходимо изменить именно адрес, но он динамический, т.е. у меня есть указатель на адрес, как мне это реализовать средствами FASM?

    ОтветитьУдалить
  4. Скоро будет урок про это.

    ОтветитьУдалить

Не люблю мат и низкий уровень грамотности. Чем конкретнее поставите свой вопрос и чем лучше он будет выглядеть - тем большая вероятность на мой ответ. :)