Здравствуйте, обучаюсь реверсингу. Практикуюсь на crackme. Знаю как asm, так и некоторые высокоуровневые ЯПы. Пытаюсь распознать одно в другом). Где-то слышал мнение, что для обучения лучше анализировать код статически, пытаться понять алгоритм генерации и не запускать отладчик. Гуру реверса, подскажите, насколько это мнение имеет право на жизнь и как будет больше толку?
Разумеется, статику изучать полезно. Прежде, чем какой-то код запускать, нужно знать, что он начнет при этом делать.
В любом случае надо сначала изучить что код делает. Запускать все подряд не стоит. Я бы начинал даже не с дизассемблера, а с hex редактора. Там видно будет сигнатуры упаковщиков, которые можно применить отдельно, чтобы вручную не искать конец этих подпрограмм.
Большое спасибо всем за ваши ответы. Но хотелось бы уточнить один момент. Есть ли смысл именно трудиться и принципиально даже не запускать дебаггер(совсем), даже если с ним всё значительно проще станет, и пытаться исключительно статикой решать?
Нет. Если в отладчике логика работы более понятна (а чаще всего это так), ваша принципиальность приведёт разве что к дополнительным тратам времени и усилий. При наличии выбора разумно выбирать оптимальный вариант.
Трещген всегда рубил за динамику и за написание и отладку СВОИХ ПРОГРАММ и прочих кракме как на ассемблере, так и не только. Это самый имхо простой и понятный путь к изучению реверса.
Учись на реальных задачках. Найди программулину, которую тебе очень хотелось бы, и считай, что это твой крекмис. А статика/динамика, в процессе догадаешься что лучше.
Demon13, самая твоя серьезная ошибка - психологическая. мысль, что тебе хватит одного прохода для реверса программы. Это много проходовый процесс. Ты будешь переделывать свои догадки несколько раз, в отношении некоторых кусков кода.
Это я понимаю, дело в том, что большинство crackme(для моего относительно начального уровня) не являются программами крайне навороченными. И мне стало интересно, как извлечь из их решения максимальную пользу.
Demon13, одежда для того что бы носить, еда для того что бы есть. Крэкмисы они для чего? Суть подводящих упражнений - подвести к полезной работе хоть как-то. Быстро и хорошо придет с практикой. Начиная с определенного уровня лучшая учеба и лучшие подводящие - это сама деятельность.
и Forth (Форт)? P.S. OpenAI предложила грант в $1 млн для разработки решений в сфере кибербезопасности на основе ИИ думаю это имеет какой то вероятно смысл для реалий будущего.