
Комментарии 7
Идея - оч хорошая. статья/карма/закладки +++. Но над изложением нужно капитально работать: продраться сквозь полотно текста, выловить идеи и структурировать читаемое - невозможно.
PS
https://habr.com/ru/companies/habr/articles/736940/
https://habr.com/ru/articles/843366/ и там в начале ссылка на 10 статей на Хабре "как писать статьи" :)
до godbolt
Минутка нудноты: инструмент называется Compiler explorer, а Godbolt это просто фамилия автора (Мэтт Годболт).
Если подобная машина защищена правильно, то это не сработает.
Или у вас ещё есть ключ для подписи вашего кода, это нужно учесть.
Серьёзные серверы эту защиту будут иметь и ключ для подписи будет не на сервере.
Архитектура таргета предполагается amd64, а если это не так?
Серверы на arm64 вполне себе вещь, а в эмбеде будет полный зоопарк архитектур.
Как упражнение это отличный пример, но не будет ли проще кросс компилировать C для целевой архитектуры и прокинуть результат через уже имеющийся доступ к консоли?
Оставим за скобками syscallls которые нам будут нужны чтобы сделать чтото значимое и их разницу между версиями ядра.
Как прикладной материал для хакинга выглядит отлично.
Как практическая вещь для реального применения - врядли.
Без обид.
С частью возраженгий согласен, отвечу на те, где есть возможность что-то сделать:
Архитектура таргета может быть любой, суть идеи от этого не меняется, просто ассемблировать придется в другие команды, и немного по другим правилам. Врядли потребуется делать что-то кросплатформенное таким способом.
Но даже если да - есть возможность сделать таргет-специфичные "функциональные блоки", которые выполняют базовые операции и комбинировать уже их. А регистры обозначить псевдонимами и разрешать псевдонимы в зависимости от архитектуры. Но это утяжеляет концепт, хотя я могу представить упоротого программиста, который может сделать что-то подобное просто чтобы не использовать компилятор, если он боиться supply chain attack. С syscallls можно поступить так же, define есть.
Напомнило, году в ~1994 вводил с факса шестнадцатеричный дамп используя DOS debug ... Передали поездом пачку дискет с инсталлятором, один файл на дискете не прочитался
Эта задача уже решена, см. stage0-posix и mescc-tools. Та же идея поднятия чего-то из ничего, правда совсем другая мотивация.
Обойдемся без ассемблера