Показаны сообщения с ярлыком Поиск адресов. Показать все сообщения
Показаны сообщения с ярлыком Поиск адресов. Показать все сообщения

20110924

Первая часть седьмого видеоурока, или знакомимся со структурами.

Итак!

Тянуть время дальше стало катастрофически лень, так что я быстренько сел и записал вводное видео. Простите, что так поздно, дела-дела. :)

В этом видео я постарался объяснить значение такой офигенно полезной штуки, как структура.
Это, если не обращаться к википедии и заумным книжкам, просто способ организовать какую-то информацию. Относительно игр нам надо просто понимать, что своя структура есть у каждого игрового объекта, для однотипных объектов она чаще всего одинаковая (структура "монстр" - у каждого монстра, "игрок" - у каждого игрока, "пуля" - у каждой пули и так далее), а при взломе помним самое главное - в памяти все значения конкретной структуры чаще всего хранятся рядышком, бывает что просто подряд. :D

Нам это может сильно помочь при поиске каких-то величин, которые на экране не отображаются и которые найти обычными способами довольно проблематично. Например, ломаем мы гоночки. В какой-то момент нам ВНЕЗАПНО очень захотелось найти массу нашей машины. Да-да, раз в игре есть хоть какая-то физика (а в современных играх для этого дела целые физические движки созданы) - то есть и масса и все основные законы. Все ведь помнят второй закон Ньютона из школьного курса физики? Если нет, то поясню: чем меньше будет масса нашей машины, тем быстрее она будет ускоряться. Так что на старте с машиной весом в 5 грамм мы всех уделаем. ^^

Проблема в том, что массу машины нигде на экране не написали (идиоты!), и вот тут-то мы и вспоминаем про то, что у каждой машины наверняка есть структура, а в этой структуре наверняка хранится и масса тоже. :)

Такие вот пироги. Смотрим, вникаем, запоминаем: [ссылка].


20110915

Небольшой трюк при поиске адресов.

Бывает так, что нужный адрес ну вот никак не находится, хотя ищешь всё правильно. Что можно сделать в этом случае. Смотрим на картинку (кликаем, чтобы увеличить):

Видим несколько галочек, подчёркнутых красным. Поясню их значение:

Первые три ("Writable", "Executable" и "CopyOnWrite") влияют на диапазон адресов, в котором мы будем искать, каждая может находиться в трёх положениях (галочка поставлена, снята, "серая"). Нас интересует галочка "Writable" - то есть перезаписываемая память. Если галочка стоит, то в диапазон поиска попадут адреса, в значения которых можно изменить. Если нет - то те, что доступны только для чтения. Если же галочка "серая" - то без разницы, сканировать будем и то и другое. Это может помочь при поиске указателей (они чаще всего только для чтения).

Галочка пониже - "Fast scan" - "Быстрый поиск". С одной стороны, звучит круто - мол, искать программа будет быстрее. Но есть небольшое "но" - искать программа будет те адреса, что кратны циферке 32. Как, зачем и почему - нас не интересует, просто если галочку снять - поиск будет идти чуть медленнее (на современных компьютерах разница будет мизерная), но адресов сканироваться при этом будет больше.

Последняя, нижняя - "Pause the game while scanning" - как вы уже догадались, решает, останавливать ли процесс игры на время сканирования или нет. Полезно при отсутствии в игре "Паузы" - если ищем какую-нибудь полоску здоровья и хотим гарантированно приостановить игровой процесс, дабы никто в игре не помешал.


20110912

Третий видеоурок и короткий рассказ про указатели и динамическое распределение памяти.



Ребята, перед просмотром урока\практикой - это важно! - сделайте следующее:

1. Откройте Cheat Engine, нажмите на кнопочку "Settings" ("Настройки") - Рис. 1.
2. Убедитесь, что галочка "Pointer adding: Append pointerline instead of insert" нажата - Рис. 2.


3. Всё, можно нажимать "ОК" и смело приступать к изучению. :)

Добавлю немного необходимой теории. Можно, конечно, на неё и забить, но если вы хотите в дальнейшем отлично понимать, что происходит - очень рекомендую ознакомиться. [Ссылка на статью], читаем параграфы 1.1-1.4 ("Система счисления", "Регистры", "Память", "Программа"). Поначалу прочитанное будет укладываться в голове крайне смутно и неохотно, но со временем эти знания окажутся крайне полезными.

И, чуть подробнее, про DMA ("Dynamic Memory Allocation", "Динамическое аспределение памяти") - [ссылка]. Если будет с ходу понятно и интересно - можете поискать и на английском, там подробностей побольше. :)

Ах да, [ссылка на урок], чуть не забыл! :D