[Перевод] Пишем на C самоизменяющуюся программу x86_64

«Зачем вообще писать программу, меняющую код в процессе выполнения? Это же ужасная идея!» Да, всё так и есть. Но это и хороший опыт. Такое делают только тогда, когда хотят что-то исследовать, или из любопытства. Самоизменяемые/самомодифицируемые программы не обладают особой полезностью. Они усложняют отладку, программа становится зависимой от оборудования, а изучение кода превращается в очень утомительный и запутанный процесс, если только вы не опытный разработчик на ассемблере. Единственный разумный сценарий применения самоизменяемых программа в реальном мире — это механизм маскировки зловредного ПО от антивирусов. Моя цель исключительно научна, поэтому ничем подобным я заниматься не буду. Предупреждение: в этом посте активно используется язык ассемблера x86_64, в котором я ни в коем случае не являюсь специалистом. Для написания статьи мне пришлось изучать приличный объём материалов, и, возможно (почти наверняка), в ней есть ошибки.

https://habr.com/ru/companies/ruvds/articles/913546/

#самомодифицирующийся_код #шеллкодинг #опкоды #x86_64 #набор_команд #ruvds_перевод

Пишем на C самоизменяющуюся программу x86_64

«Зачем вообще писать программу, меняющую код в процессе выполнения? Это же ужасная идея!» Да, всё так и есть. Но это и хороший опыт. Такое делают только тогда, когда хотят что-то исследовать, или из...

Хабр

[Перевод] Пишем на C самоизменяющуюся программу x86_64

«Зачем вообще писать программу, меняющую код в процессе выполнения? Это же ужасная идея!» Да, всё так и есть. Но это и хороший опыт. Такое делают только тогда, когда хотят что-то исследовать, или из любопытства. Самоизменяемые/самомодифицируемые программы не обладают особой полезностью. Они усложняют отладку, программа становится зависимой от оборудования, а изучение кода превращается в очень утомительный и запутанный процесс, если только вы не опытный разработчик на ассемблере. Единственный разумный сценарий применения самоизменяемых программа в реальном мире — это механизм маскировки зловредного ПО от антивирусов. Моя цель исключительно научна, поэтому ничем подобным я заниматься не буду. Предупреждение: в этом посте активно используется язык ассемблера x86_64, в котором я ни в коем случае не являюсь специалистом. Для написания статьи мне пришлось изучать приличный объём материалов, и, возможно (почти наверняка), в ней есть ошибки.

https://habr.com/ru/companies/ruvds/articles/913546/

#самомодифицирующийся_код #шеллкодинг #опкоды #x86_64 #набор_команд #ruvds_перевод

Пишем на C самоизменяющуюся программу x86_64

«Зачем вообще писать программу, меняющую код в процессе выполнения? Это же ужасная идея!» Да, всё так и есть. Но это и хороший опыт. Такое делают только тогда, когда хотят что-то исследовать, или из...

Хабр

Маленькие программки на С — победители конкурса IOCCC

Международный конкурс запутанного кода на С (IOCCC) — известное соревнование по программированию, которое проводилось до 2020 года. В отличие от традиционных чемпионатов по спортивному программированию, здесь не нужно решать задачи на скорость. У участников сколько угодно времени, но размер программы ограничен 1536 байтами (не считая пробелы, табы и прочие служебные символы), в сумме обычно получается не более 2 кб. Но программки делают реально сложные вещи: например, победитель 2004 года — это операционная система , исходный код 166 строк . Посмотрим на шедевры разных лет и откуда вообще взялся этот конкурс.

https://habr.com/ru/companies/ruvds/articles/910418/

#ruvds_статьи #IOCCC #Джон_Кармак #наношахматы #оптимизация_ПО #National_Semiconductor #встроенное_ПО #Курт_Нолл #хэшфункция #FNV #простые_числа #числа_Мерсенна #Курт_Болл #самомодифицирующийся_код

Маленькие программки на С — победители конкурса IOCCC

Международный конкурс запутанного кода на С (IOCCC) — известное соревнование по программированию, которое проводилось до 2020 года. В отличие от традиционных чемпионатов по спортивному...

Хабр