Добрый день. Где можно почитать про перевод команд ассемблера в машинный код, кроме "заклинания кода" ?
мануалы Интела вестиимо. Хотя в заклинаниях вроде достаточно написано и большая часть материала присутствует.
Насчёт "заклинания кода" согласен, но мне надо как то всё это запомнить, чтоб налету переводить команды в машинный код и вот я не знаю как, поэтому и спрашиваю ещё маны на эту тему
Что значит переводить ? 1) написать программу, т.е. ассемблер ? 2) Или знать какой опкод какой команде соответсвует ? если п.2 то берешь и учишься писать детектилки полиморфных протов, после них многие команды будешь даже в бинаре видеть! Не переводя дизасмом в мнемоники ) если п.1 изучай строение команд по интел мануалу,посмотри дизасм движки и потом придет понимание как сделать обратное, т.е. ассемблирование Задай четче вопрос
EvilsInterrupt написать опкоды команд: add al,[rax+5] mov [rax+rcx+1],rax add [r10],r10 вроде чётко и хочу научится писать опкоды налету, без подсматривания в "заклинание кода" или учебник Юрова
Loginanton На память надейся, а про RTFM не забывай Да и зачем это вообще надо, когда это описано. Дешевле будет запомнить где посмотреть. И ошибок из-за этого будет гораздо меньше.
Конечно знать все опкоды абсолютно не нужно, но принципы кодирования не помешает. Зачем именно, трудно сказать, но зато появляется какое-то особое чувство уверенности. К примеру я всегда могу определить размер команды в байтах, что часто полезно для выравнивания кода. Порой это просто интересно, например, я радовался как ребенок, когда понял, что nop и xchg (e)ax,(e)ax - это одно и тоже, а двухбайтовый nop - это тоже xchg, но уже с использованием регистра, отличного от (e)ax. Опкоды полезно знать, чтобы открывать для себя такие инструкции как int 1, int 3, salc, aam 10h, понимать вариативность кодирования одних и тех же инструкций, выбирать наиболее подходящий в конкретной ситуации вариант. В общем об этом говорить можно еще очень долго.
это CD 01 CD 03, а вот int1 (icebp) и int3 это F1 и CC А вообще полезно взять того же Юрова или маны интела и самому составить все таблицы к примеру таблица опкодов и их бинарных представлений по алфавиту или та же таблица но по порядку бинарных чисел, так же и с modregrm и sib. пару раз составишь и почти все запомнишь.
Я как раз имел в виду однобайтовые int. Да-да, это полезно знать: Mod-Reg/OpCode-R/M, SIB, флаги s, d, w инструкции, различные префиксы и т.п. Например, зная это, сразу видно, что инструкции, в которых идет адресация через базу esp, занимают на один байт больше, через базу ebp даже без указания дополнительного смещения будут содержать байт +0, а при индексации без регистровой базы и дополнительного смещения будут содержать (д)слово +0.
Согласен про Юрова - у него неплохо это расписанно и таблички очень полезные. Кстати у кого то в книжке было про ассемблирование\дизассемблирования в уме. Кажись у К. Касперского в Технике отладки без исходников, но я точно не помню.
Микропроцессоры Intel в своё время по этой книге учил... в ней всё есть. www.ozon.ru/context/detail/id/2479533/