Pull to refresh

Comments 9

Идея - оч хорошая. статья/карма/закладки +++. Но над изложением нужно капитально работать: продраться сквозь полотно текста, выловить идеи и структурировать читаемое - невозможно.

PS

https://habr.com/ru/companies/habr/articles/736940/

https://habr.com/ru/articles/843366/ и там в начале ссылка на 10 статей на Хабре "как писать статьи" :)

Спасибо, это мой первый опыт. Получилось путано и честно говоря, у меня не хватает опыта чтобы понять, как ее можно улучшить.. Изначально это был proof of concept довольно простой идеи, которую проще всего выразить кодом, с небольшими комментариями..

до godbolt

Минутка нудноты: инструмент называется Compiler explorer, а Godbolt это просто фамилия автора (Мэтт Годболт).

Если подобная машина защищена правильно, то это не сработает.

Или у вас ещё есть ключ для подписи вашего кода, это нужно учесть.

Серьёзные серверы эту защиту будут иметь и ключ для подписи будет не на сервере.

Архитектура таргета предполагается amd64, а если это не так?

Серверы на arm64 вполне себе вещь, а в эмбеде будет полный зоопарк архитектур.

Как упражнение это отличный пример, но не будет ли проще кросс компилировать C для целевой архитектуры и прокинуть результат через уже имеющийся доступ к консоли?

Оставим за скобками syscallls которые нам будут нужны чтобы сделать чтото значимое и их разницу между версиями ядра.

Как прикладной материал для хакинга выглядит отлично.

Как практическая вещь для реального применения - врядли.

Без обид.

С частью возраженгий согласен, отвечу на те, где есть возможность что-то сделать:

Архитектура таргета может быть любой, суть идеи от этого не меняется, просто ассемблировать придется в другие команды, и немного по другим правилам. Врядли потребуется делать что-то кросплатформенное таким способом.

Но даже если да - есть возможность сделать таргет-специфичные "функциональные блоки", которые выполняют базовые операции и комбинировать уже их. А регистры обозначить псевдонимами и разрешать псевдонимы в зависимости от архитектуры. Но это утяжеляет концепт, хотя я могу представить упоротого программиста, который может сделать что-то подобное просто чтобы не использовать компилятор, если он боиться supply chain attack. С syscallls можно поступить так же, define есть.

Такие же мысли возникли, как у комментатора выше.
Проще всё скомпилить (кросс-компилить) на устройстве с утилитами, а результат передать хоть hex-дампом, хоть base64.
В ситуации, когда вы один-на-один с терминалом, и другого устройства нет, вы не сможете почитать мануалы по формату ELF-файла, опкодам архитектуры, сисколлам и т.п. То есть, проект разваливается.

Можно просто это знать, если увлекаться этой темой - такого человека опасно оставлять один на один с любой машиной: его возможности ораничены только временем печатания

Напомнило, году в ~1994 вводил с факса шестнадцатеричный дамп используя DOS debug ... Передали поездом пачку дискет с инсталлятором, один файл на дискете не прочитался

Эта задача уже решена, см. stage0-posix и mescc-tools. Та же идея поднятия чего-то из ничего, правда совсем другая мотивация.

Sign up to leave a comment.

Articles