Задать вопрос
@Inkvidim

Как написать «Hello World» на машинном коде?

Недавно наткнулся на видео, где некий сумасшедший написал программу, которая выводит в консоль слова "Hello World" на бинарном/машинном коде (если честно я не уверен что это именно).

Ссылка на видео.

Расскажите пожалуйста, как можно повторить результат (не советуйте скопировать код из видео, хочу именно понимать как такое сделать)? Может какая-то литература по этому поводу?
  • Вопрос задан
  • 36168 просмотров
Подписаться 2 Средний Комментировать
Решения вопроса 1
@asd111
Вам достаточно изучить ассемблер и всё станет понятно.
Каждая команда ассемблера транслируется "дословно" в машинный код.
Т.е. например команда pushl %edx превратится в один байт 82

Например программа на ассемблере:
push %ebp
mov %esp,%ebp
call 0x8048298 
cmp $0x41,%eax
jne 0x80483ce 
push $0x80484b0
call 0x80482c8 
add $0x4,%esp
mov $0x0,%eax
mov %ebp,%esp
pop %ebp
ret


превратится в машинный код:
0x55 0x89 0xe5 0xe8 0xfc 0xff 0xff 0xff
0x83 0xf8 0x41 0x75 0x0d 0x68 0x00 0x00
0x00 0x00 0xe8 0xfc 0xff 0xff 0xff 0x83
0xc4 0x04 0xb8 0x00 0x00 0x00 0x00 0x89
0xec 0x5d 0xc3


Почитать можно здесь и здесь . В целом подойдет любая книга по ассемблеру.
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
agent10
@agent10
Software Engineer
"Остановите Землю - я сойду.."
Вы знаете хоть какой-нибудь язык программирования?
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Ничего там нет особенного. Берёте любую программу, открываете её в hex-редакторе, распечатываете hex- или bin- представление, открываете в hex-редакторе новый документ, вручную набираете дамп, сохраняете, запускаете.
Ответ написан
Spetros
@Spetros
IT-шник
На википедии есть подходящая статья Машинный код
Ответ написан
Комментировать
Mrrl
@Mrrl
Заводчик кардиганов
На SO есть пример, как это сделать на ассемблере с использованием kernel32.lib:
stackoverflow.com/questions/1023593/how-to-write-h...
Можно попробовать начать оттуда, потом научиться переводить это в машинный код (например, посмотрев в листинг ассемблера).
Ответ написан
Комментировать
@Petr_Frolov
Я тоже в машинных кодах писал программы уровня "hello world".
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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