@warriorkg
Убил своего сына

Зачем нужно знать машинный код?

Смотрел недавно фильм " Кто Я". Там главный герой умеет читать "Машинный Код". Вопрос такой : Зачем нужно уметь читать машинный код и писать на нем для хакера ? Какое это преимущество дает ?
  • Вопрос задан
  • 19602 просмотра
Пригласить эксперта
Ответы на вопрос 8
saboteur_kiev
@saboteur_kiev Куратор тега Программирование
software engineer
Конкретно сейчас машинный код знать наизусть не обязательно - полно дизассемблеров, которые переведут код для тебя.
Иметь представление о машинном коде чтобы понимать, как программа хранится и выполняется - обязательно для любого уважающего себя программиста, работающего с языками близкими к С.
Особенно полезно иметь представление для работающих с embedded и другими железками
Ответ написан
Комментировать
Denormalization
@Denormalization
Раньше, во времена *.com файлов, было модно прийти на тусовку, и прям в debug.exe написать програмку в машинных кодах, и все такие "АХ!!1"

Но вообще да, это всё выдумки режисеров и сценаристов. Никто не пишет в машинном коде. Да, для reverse engineering можно запомнить несколько опкодов, но по большей части это никому не надо. (0.0001% кому это нужно - погрешность).
Ответ написан
Mrrl
@Mrrl
Заводчик кардиганов
В последний раз мне машинный код понадобился совсем недавно, когда я захотел посмотреть, во что компилируется функция из C#. Дебагером пользоваться нельзя - он даёт неоптимизированный код. Поэтому фрагмент кода пришлось вытаскивать прямо в программе (два прыжка по стеку - и я в окрестности точки вызова). Напечатать фрагмент в 16-ричном виде легко, а как его оттуда перетащить в какой-нибудь дизассемблер - неясно. Пришлось поднимать таблицы кодов и разбирать самому.
Ответ написан
BuriK666
@BuriK666
Компьютерный псих
Куча примеров habrahabr.ru/hub/reverse-engineering
Ну конечно не совсем машинный код. Но уже близко...
Ответ написан
Комментировать
@vilgeforce
Раздолбай и программист
Например чтобы знать, что команда INT3 - 0xCC. И когда вдруг в отладчике в студии будет в переменной 0xCCCCCCCC - понять что беда с доступом к памяти, а не непонятно откуда появились значения.
Ответ написан
Комментировать
В общем случае не шибко-то и надо. Даже разбирая чужой бинарник, вы все равно будете работать с мнемониками, без машинного кода в чистом виде. То есть уже ассемблер.

В фильме могли машинным кодом назвать что угодно.

А в жизни он используется разработчиками железа, для которого этот машинный код потом нужен. Ибо процессор-то понимает только его. А чтобы он понимал, в него это понимание надо заложить. Ну и как вариант, программирование всего этого ранее разработанного железа совсем уж напрямую, как описано здесь.
Ответ написан
Комментировать
globuzer
@globuzer
gezgrouvingus progreszive ombusgrander greyderzux
Машинный код, мнемоники, адреса - все это вам пригодиться, если по роду своей деятельности вы будете работать в области системного программирования, программирования устройств, криптографии изредка, защиты информации. Если же вы в большинстве случаев штатный сисадмин, прикладной программист, офисный работник или студент - то вам этого особо удовольствия не доставит, да и пользы никакой не будет. Ну если только для собственного поднятия настроения и удовлетворения своих знаний. Если вы настоящий хакер из секретной группировки, вскрывающий пентагоны за чемоданы денег, то без нулей и единиц там никуда... Хотя в этом случае вы бы не задавали такой вопрос, да и вообще не сидели бы на таком сайте :)
Ответ написан
Комментировать
@nikitos_ruli
Хакеру просто необходимо знать машинный код. Именно благодаря ему, они и ломают большинство софта, тоесть вносят свои изменения в машинный код.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы