Для удобного чтения (и быстрого редактирования) исходного кода на всяких разных языках (в том числе и на ассемблере) рекомендую пользоваться [вот этим] текстовым редактором. Весит мало, бесплатен, удобен. :)
Показаны сообщения с ярлыком Хинт. Показать все сообщения
Показаны сообщения с ярлыком Хинт. Показать все сообщения
20111223
20111215
Дырявая моя голова!11
Забыла выложить [ссылку] на Flat Assembler. (:
PS: Нам нужна версия для Windows, можете мне поверить.
PS: Нам нужна версия для Windows, можете мне поверить.
20110929
20110925
Ещё немного чтива
Нашёл ещё один неплохой вводный курс по ассемблеру - [ссылка]. В нём используется flat assembler, он же fasm - один из синтаксисов этого языка. Надо сказать, что ассемблера существует достаточно дофига диалектов - есть fasm, masm, nasm, tasm, в общем - много вариантов. Между собой они различаются разными поддерживаемыми фичами и набором команд. Самый популярный - masm, или Macro Assembler производства Microsoft. Если будем писать что-то на ассемблере, то выберу я именно этот - под него пишется большинство статей и он обладает наиболее богатой документацией. :)
Не пугайтесь, что диалектов такая куча - мы не полезем в дебри, где они покажутся существенными, нам достаточно просто понимать код, который отладчик показывает, а это не так трудно.
Не пугайтесь, что диалектов такая куча - мы не полезем в дебри, где они покажутся существенными, нам достаточно просто понимать код, который отладчик показывает, а это не так трудно.
20110924
Первая часть седьмого видеоурока, или знакомимся со структурами.
Итак!
Тянуть время дальше стало катастрофически лень, так что я быстренько сел и записал вводное видео. Простите, что так поздно, дела-дела. :)
В этом видео я постарался объяснить значение такой офигенно полезной штуки, как структура.
Это, если не обращаться к википедии и заумным книжкам, просто способ организовать какую-то информацию. Относительно игр нам надо просто понимать, что своя структура есть у каждого игрового объекта, для однотипных объектов она чаще всего одинаковая (структура "монстр" - у каждого монстра, "игрок" - у каждого игрока, "пуля" - у каждой пули и так далее), а при взломе помним самое главное - в памяти все значения конкретной структуры чаще всего хранятся рядышком, бывает что просто подряд. :D
Нам это может сильно помочь при поиске каких-то величин, которые на экране не отображаются и которые найти обычными способами довольно проблематично. Например, ломаем мы гоночки. В какой-то момент нам ВНЕЗАПНО очень захотелось найти массу нашей машины. Да-да, раз в игре есть хоть какая-то физика (а в современных играх для этого дела целые физические движки созданы) - то есть и масса и все основные законы. Все ведь помнят второй закон Ньютона из школьного курса физики? Если нет, то поясню: чем меньше будет масса нашей машины, тем быстрее она будет ускоряться. Так что на старте с машиной весом в 5 грамм мы всех уделаем. ^^
Проблема в том, что массу машины нигде на экране не написали (идиоты!), и вот тут-то мы и вспоминаем про то, что у каждой машины наверняка есть структура, а в этой структуре наверняка хранится и масса тоже. :)
Такие вот пироги. Смотрим, вникаем, запоминаем: [ссылка].
Тянуть время дальше стало катастрофически лень, так что я быстренько сел и записал вводное видео. Простите, что так поздно, дела-дела. :)
В этом видео я постарался объяснить значение такой офигенно полезной штуки, как структура.
Это, если не обращаться к википедии и заумным книжкам, просто способ организовать какую-то информацию. Относительно игр нам надо просто понимать, что своя структура есть у каждого игрового объекта, для однотипных объектов она чаще всего одинаковая (структура "монстр" - у каждого монстра, "игрок" - у каждого игрока, "пуля" - у каждой пули и так далее), а при взломе помним самое главное - в памяти все значения конкретной структуры чаще всего хранятся рядышком, бывает что просто подряд. :D
Нам это может сильно помочь при поиске каких-то величин, которые на экране не отображаются и которые найти обычными способами довольно проблематично. Например, ломаем мы гоночки. В какой-то момент нам ВНЕЗАПНО очень захотелось найти массу нашей машины. Да-да, раз в игре есть хоть какая-то физика (а в современных играх для этого дела целые физические движки созданы) - то есть и масса и все основные законы. Все ведь помнят второй закон Ньютона из школьного курса физики? Если нет, то поясню: чем меньше будет масса нашей машины, тем быстрее она будет ускоряться. Так что на старте с машиной весом в 5 грамм мы всех уделаем. ^^
Проблема в том, что массу машины нигде на экране не написали (идиоты!), и вот тут-то мы и вспоминаем про то, что у каждой машины наверняка есть структура, а в этой структуре наверняка хранится и масса тоже. :)
Такие вот пироги. Смотрим, вникаем, запоминаем: [ссылка].
20110923
Следующие видеоуроки
Помните, что я указал в последнем видеоуроке? "Будем учиться быстро бегать и высоко прыгать". Это значит, что мы будем искать координаты игрока и работать с ними.
Проблема заключается в том, что просто так эти самые координаты не найдёшь, поэтому я разобью эту тему на несколько видео, в которых сначала пролью свет на несколько очень важных (и полезных!) штуковин, вместе научимся искать координаты и поломаем при этом пару-тройку игр. :)
Частей планируется 2-3, первая - про необходимые понятия и теорию, вторая - про "быстро бегать", ну а третья, очевидно, - про "высоко прыгать". Как пройдём это всё и материал более-менее усвоится - покажу, как делается "Rapid fire hack" - это когда мы из какого-то медленно стреляющего оружия будем стрелять аки из шестиствольного пулемёта - в общем, быстро, очень быстро!
На этом основной курс "как научиться ломать игры" будет в общем-то окончен, так что дальше буду выкладывать какие-то конкретные фичи (как найти то или иное труднодоступное для обычного поиска значение, более простой метод поиска указателей и т.п.), может быть коснусь темы снятия игровых защит - да, бывает и так, в современных играх - почти повсеместно.
Параллельно приступим к написанию трейнеров. Эта тема довольно объёмная и абстрактная - зависит она в основном от умения программировать. Всё ещё думаю, как к ней грамотно подойти, но какой-никакой план уже есть. :)
Проблема заключается в том, что просто так эти самые координаты не найдёшь, поэтому я разобью эту тему на несколько видео, в которых сначала пролью свет на несколько очень важных (и полезных!) штуковин, вместе научимся искать координаты и поломаем при этом пару-тройку игр. :)
Частей планируется 2-3, первая - про необходимые понятия и теорию, вторая - про "быстро бегать", ну а третья, очевидно, - про "высоко прыгать". Как пройдём это всё и материал более-менее усвоится - покажу, как делается "Rapid fire hack" - это когда мы из какого-то медленно стреляющего оружия будем стрелять аки из шестиствольного пулемёта - в общем, быстро, очень быстро!
На этом основной курс "как научиться ломать игры" будет в общем-то окончен, так что дальше буду выкладывать какие-то конкретные фичи (как найти то или иное труднодоступное для обычного поиска значение, более простой метод поиска указателей и т.п.), может быть коснусь темы снятия игровых защит - да, бывает и так, в современных играх - почти повсеместно.
Параллельно приступим к написанию трейнеров. Эта тема довольно объёмная и абстрактная - зависит она в основном от умения программировать. Всё ещё думаю, как к ней грамотно подойти, но какой-никакой план уже есть. :)
20110921
Видеоуроки по С++
Делюсь очень хорошим курсом из 60 видеоуроков (с комментариями на английском языке) по С++. Достойная штука для тех, кто хочет начать изучать плюсы, рекомендую! (:
[ссылка]
[ссылка]
20110915
Небольшой трюк при поиске адресов.
Бывает так, что нужный адрес ну вот никак не находится, хотя ищешь всё правильно. Что можно сделать в этом случае. Смотрим на картинку (кликаем, чтобы увеличить):
Видим несколько галочек, подчёркнутых красным. Поясню их значение:
Первые три ("Writable", "Executable" и "CopyOnWrite") влияют на диапазон адресов, в котором мы будем искать, каждая может находиться в трёх положениях (галочка поставлена, снята, "серая"). Нас интересует галочка "Writable" - то есть перезаписываемая память. Если галочка стоит, то в диапазон поиска попадут адреса, в значения которых можно изменить. Если нет - то те, что доступны только для чтения. Если же галочка "серая" - то без разницы, сканировать будем и то и другое. Это может помочь при поиске указателей (они чаще всего только для чтения).
Видим несколько галочек, подчёркнутых красным. Поясню их значение:
Первые три ("Writable", "Executable" и "CopyOnWrite") влияют на диапазон адресов, в котором мы будем искать, каждая может находиться в трёх положениях (галочка поставлена, снята, "серая"). Нас интересует галочка "Writable" - то есть перезаписываемая память. Если галочка стоит, то в диапазон поиска попадут адреса, в значения которых можно изменить. Если нет - то те, что доступны только для чтения. Если же галочка "серая" - то без разницы, сканировать будем и то и другое. Это может помочь при поиске указателей (они чаще всего только для чтения).
Галочка пониже - "Fast scan" - "Быстрый поиск". С одной стороны, звучит круто - мол, искать программа будет быстрее. Но есть небольшое "но" - искать программа будет те адреса, что кратны циферке 32. Как, зачем и почему - нас не интересует, просто если галочку снять - поиск будет идти чуть медленнее (на современных компьютерах разница будет мизерная), но адресов сканироваться при этом будет больше.
Последняя, нижняя - "Pause the game while scanning" - как вы уже догадались, решает, останавливать ли процесс игры на время сканирования или нет. Полезно при отсутствии в игре "Паузы" - если ищем какую-нибудь полоску здоровья и хотим гарантированно приостановить игровой процесс, дабы никто в игре не помешал.
Подписаться на:
Сообщения (Atom)
