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

Как сделать следующий шаг в обучении?


maxpostal

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

Приветствую! В голове у меня полная каша, поэтому и текст вопроса будет соответствующий, заранее извиняюсь.

Хочу попробовать себя в программировании на masm64 + реверсинженерия. Как и с чего начать? Пробовал различные гайды... ок, теперь я знаю что такое RAX; EAX; AX; AH; AL; mov; mul; dev; jmp; jne; je; cmp; test; inc; dec; push; pop представляю что такое адрес; адрес адреса(указатель); указатель на указатель на указатель на указатель...; стек; имею крайне общие представления как работает операционная система...

Как продолжить свой путь?

При первой попытке отлаживания кода случайного приложения (Don't Starve вроде) столкнулся с тем что существуют регистры R8-R15, XMM0-7, а найти адрес нужного указателя со смещениями в сотни раз сложнее чем в примере из обучалки CheatEngine. Базовый пример "Hello World!" (С/С++) в visual studio превращается в 11kb кода, в дизасемблере GHidra ничего не понятно, но восстанавливается исходный C-код на ура, средствами GHidra. В книге Ден Юрича по дизасемблированию всё казалось простым и лёгким (полностью не изучал - хотел попробовать начальные примеры в живвую).

Решил заглянуть в документацию по masm на официальном сайте microsoft и понял что ничего не понимаю(

И теперь я просто в прострации не знаю за что взяться, поэтому обращаюсь с вопросом к Вам.


 

Спойлер

Под спойлером мой разбор тем форума низкоуровнего программирования посвящённых новичкам:

p.s. извиняюсь если кого-то обижу

"Я хочу научиться программировать, не знаю с чего начать"

- Small Basik — В общем довольно скудный функционал. Есть математические функции, работа со строками и текстом, работа с массивами, списками, файлами и т.п.

я уже это всё умею (ну или почти всё что было перечислено в теме, в среде Pascal.net (довольно много лет назад), сталкивался и с переносом на С/C++ посредством гугления и использования готового кода) куда и как двигаться дальше - понимания нет

Ассемблер - для начинающих.

4 видеоурока по самым основным темам. Какой шаг нужно  сделать следующим?

 

если подытожить - и тут и там описаны либо первые шаги, либо высоты до которых я не дотягиваю, где мне найти тот мостик чтоб перейти с одного берега на другой?

Спасибо.

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

4 часа назад, maxpostal сказал:

где мне найти тот мостик чтоб перейти с одного берега на другой?

этот мостик - практика?Бери и делай что-нибудь, реверси понемногу и т.п..

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

Это как пальцем в небо, можно что-нибудь конкретное?

12 минут назад, youneuoy сказал:

этот мостик - практика?Бери и делай что-нибудь, реверси понемногу и т.п..

 

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

Конкретизирую:

1. Берешь игру (любую сингловую)

2. Ставишь перед собой цель (сделать в игре бессмертие, бесконечный прыжок, бесконечные патроны, бесконечные характеристики, что угодно)

3. Реверсишь.

4. Реализуешь цель. 

5. PROFIT!!!

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

17 часов назад, maxpostal сказал:

И теперь я просто в прострации не знаю за что взяться

Как я учился

1. На готовых примерах: таблицах CE.

2. Изучая функционал и документацию инструмента, которым пользуешься. Cheat Engine, Ghidra, IDA.

3. Вывести для себя общие направления. Например, одно из них не возиться с указателями. а менять бинарный код. Примеров множество.

4. Много-много практики. Туториалы CE, множество игр. Были игры. в которых что-то не получалось. Например, спавн сущностей, но это дело времени и усидчивости.

5. Изучить исходники игры

6. Изучить популярный игровой движок и API.

Поймешь древовидную структуру сущностей чаще похожей на паттерн "Стратегия". На каждой сущности список компонентов, на компоненте поле (адрес). Указатель рассчитывать можно разными способами через вызов API поиска сущности, через поиск компонента или иными способами. Много зависит от движка. Как я писал, указатели не обязательно выводить. Проще изменить код или сделать условие записи "свой-чужой". Примеров множество

17 часов назад, maxpostal сказал:

Хочу попробовать себя в программировании на masm64 + реверсинженерия

 Ну, попробуй. Документация + примеры

 

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

×
×
  • Создать...

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

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