Сегодня задался таким вопросом: есть различные Crackmes, на решение которых порой могут уйти не одни сутки, какую пользу в конечном итоге приносят подобные забавы? И стоит ли вообще на них зацикливаться, как на упражнениях(практике) для поднятия своего скилла в понимании ассма? Ваше мнение, уважаемые форумчане?
Здравствуйте, все же эта область - реверса. Чтобы поднять свой скилл учите чистый асм, без привязок к пакетам масм, компиляторам фасм, etc. Но в начале стоит базовые вещи понять что такое стэк, регистры(данных, указатели, сегментные), флаги, дамп. Почитайте введение в машинные коды, в старом архиве васма есть в ссылкоподборке Майкла. Высокоуровневый яп также не будет лишним знать, поможет быстрее понимать многие вещи, именно понимать, а не запоминать, что даст вам преимущество над другими, когда вы сможете объяснять вещи своими словами, но при этом полностью поддерживая концепцию.
Создание динамических/статических библиотек, умение работать с .rc? Асм вставки, etc и надеюсь всё руками без ИДЕ где нужно только кликнуть?
Ronin_, Библиотеки - да. .rc - нет. Ассм - тоже нет, ибо писать на нем не умею пока, только читаю. Vim наше все
Я его почитываю, но не делаю на нем сильного акцента. Крэкми, который он разбирает в самом начале, я решил сразу после 6 или 7 урока про jmp'ы ,еще до того, как он вообще рассказал что нужно с ним делать)) Основной упор идет на уроки тут(Там еще есть intermediate секция.) и на книгу по fasm Аблязова. Трабла в самой практике написания прог на асме - ее почти нет. Под wind'у можно взять Iczelion'a (есть даже под фасм), но там все на api. Под *nix'ы почти нет нормальных туториалов, я так посмотрел ,там почти от DOS'а не отличается принцип: тоже прерывания и сисколы в хексе. Очень стремно выглядит)
psh3nka, Видео уроки все же хуже обрабатываются мозгом, шаблонство, имхо. Так как работает только зрение и концентрации по минимуму, книга иначе, заставляет мозг формировать объекты, трассировать их, etc. Unix way уважаю, но ассемблерить там не доводилось, в основном Си, С++, python, js. Виндовс больше к этому расположена. К исследованию. По фасму берите документацию идущую с компилятором, там все есть что нужно, en если слабоват , есть гугл переводчик.
Ronin_, я с VS на виртуалке сижу и дизассемблирую примеры тичера вместе со всем "классом" - чем не исследование? В конечном итоге я довольно много вынес из его рассказов, понимая в разы прибавилось. @Mikl__, что Вы можете посоветовать для правктики в fasm?
Psh3nka, Есть трабла в отсутствии практики написания - напиши что-то СВОЕ, пусть разумеется уже написанное другими. Как Рококо - пишет штуку для нарезки MTS, заодно изучает как все это делать. Т.е. фишка вот в чем: сначала ставишь задачу, смутно представляя как ее решать и только потом изучаешь вещи, необходимые для нее. /по пути задача может быть брошена как слишком сложная, это нормально./ не наоборот. прозапас (на всякий случай) бесполезно и даже вредно что-то учить по теме ничего не скажу. упражнений и на реверс, и на написание своего можно много придумать. можно учиться, запуская малварь на виртуалке и ковыряя ее. вот как-то так. лишь бы рука набивалась. .. палю фишку. создаешь папку WORK, в ней, как задумаешь что-то делать (кодить, разбирать), делаешь подпапку с текущей датой, напр. 290117. и там же держишь рабочие файлы и обязательно какой-нибудь текстовик (пусть log.txt), в который пишешь мыслю по текущей работе. в след. раз как захочешь к этому вернуться-продолжить, копируешь папку 290117 в, скажем, 230217, и работаешь уже в новой папке. резервируешь папку WORK целиком, время от времени.
Far, hiew, ollydbg, peid, или можно из пакета mingw взять - (strings, size, objdump, nm(анализ объектного файла), ar, gdb), но ни в коем случае не ИДЕ!
Там суть именно в генерируемом коде. У vs можно поотключать всякие оптимизации, которые усложняют его для понимания новичком + автор именно в нем разбирает код. Просто ,чтобы не было сильной разницы. В IDE сам я не пишу и сижу не под виндой
Руками из консоли вот где истинное удовольствие, вот про это выше и писал, вы следуете шаблону, потом когда перед вами встанет задача которой автор сих роликов не рассказывает, вы вспомните мои слова про книги.
Всегда обходился локальными папками. Может из-за масштабов "проектов", или из-за того что пишу в одиночку. Но как-то Гит не впечатляет.
Да не важно, какая VCS используется. Важно то, что всегда в ней можно найти то, что было год-два-три назад и не потерять при должном бэкапе.
Да я почти как Нео - выдираю хоть видеопоток хоть аудио хоть соединяю... Смысл работы с файлами - это для начала вообще не нужно ни один язык программирования.... Нужно понять какой байт файла, что означает... нужно добиться такого знания - когда только в одном хейве ты можешь делать работу, так как знаешь что и куда.... И вот только тогда понадобиться язык программирования - чисто чтобы автоматизировать процесс.... "Пусть трактор работает! - Он же железный!!!" Ну как только я (уже скоро!!!) разберу на биты атом avcC в mp4.... Я стану просто волшебником - и буду делать с такими файлами - что захочу!!!!