На этот раз - видео. Вот [ссылка].
Заодно выкладываю [архив] с исходным кодом и скомпилированным трейнером.
Нагуглите и прочитайте обо всём, что не стало понятным из урока (в частности - про новые WinAPI-функции), спросите об оставшеимся тут, в комментариях на youtube или на [форуме], медитируйте, делайте зарядку и чистите зубы 2 раза в день. :)
Согласен, урок получился довольно скомканным - но у меня очень мало времени, простите. Работа, да и праздники, как-никак.
PS: Очень полезно будет загрузить скомпилированный трейнер в Olly (File -> Open) и посмотреть на его работу пошагово. Многое запросто может встать на свои места. Попробуйте, не бойтесь экспериментировать! Это же так весело и интересно. :)
Заодно выкладываю [архив] с исходным кодом и скомпилированным трейнером.
Нагуглите и прочитайте обо всём, что не стало понятным из урока (в частности - про новые WinAPI-функции), спросите об оставшеимся тут, в комментариях на youtube или на [форуме], медитируйте, делайте зарядку и чистите зубы 2 раза в день. :)
Согласен, урок получился довольно скомканным - но у меня очень мало времени, простите. Работа, да и праздники, как-никак.
PS: Очень полезно будет загрузить скомпилированный трейнер в Olly (File -> Open) и посмотреть на его работу пошагово. Многое запросто может встать на свои места. Попробуйте, не бойтесь экспериментировать! Это же так весело и интересно. :)
А когда мы пишем трейнер, мы ведь указываем не адрес значения, а адрес кода?
ОтветитьУдалитьТ.е. указатель на адрес не нужен?
Попробую объяснить:
ОтветитьУдалитьОткрывая процесс через WinAPI OpenProcess, мы получаем полный доступ (на чтение и на запись) к его адресному пространству - это значит, что мы можем менять как данные в оперативной памяти (адреса, которые мы обычно через СЕ ищем), так и код. Адреса в памяти и адреса в коде очень похожи, главный принцип тут в том, что адреса кода своего положения относительно начала файла (базового адреса) никогда не меняют. Будет отдельный случай, когда это может происходить, скоро будет по этому случаю урок.
А вот когда игра грузится и винда выдаёт ей кусок оперативной памяти для хранения всех её данных - этот кусок как раз может загрузиться как по статическим адресам (зелёным, они своего положения тоже не меняют), так и динамическим (чёрным, к ним надо искать указатели).
В моём примере трейнера мы меняли код (писали сначала команду "отключить получение урона", а затем "вернуть оригинальный код обратно"), а можем и менять какие-то значения в памяти игры.
Спасибо за дельный комментарий, нужно мне будет подробно на этом остановиться, заодно покажу как из трейнера с указателями работать. :)
А вот, если мне необходимо изменить именно адрес, но он динамический, т.е. у меня есть указатель на адрес, как мне это реализовать средствами FASM?
ОтветитьУдалитьСкоро будет урок про это.
ОтветитьУдалить