The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Дрю ДеВолт представил язык системного программирования Hare"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Присылайте удачные настройки в раздел примеров файлов конфигурации на WIKI.opennet.ru.
. "Дрю ДеВолт представил язык системного программирования Hare" +1 +/
Сообщение от Аноним (182), 26-Апр-22, 01:40 
>> MBR - классический пример.
> Очень нишевой и не очень актуальный, Настолько, что в более современных платформах
> даже начальные загрузчики такого плана пишут на сях.

...
>  Так что пример хороший но 20 лет назад смотрелся убедительнее. X86 real mode вообще откровенное легаси.

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


>> Но да, asm() - хорошая замена асму, ага
> Типа того. На нем пишут "интринсики", небольшие куски типа стартапа, и проч
> а основная тушка на си. Чтобы не иметь удовольствие кодить на асме.

Это вообще-то была ирония. Asm "встроенный" (или вызываемый), как бы, не перестает быть асмом.

>> Т.е. нет (fPIC точно так же вызывает "соседнюю" функцию через got), но
>> опять "не считается"?
> Там есть опции типа танцев относительно регистра, как я понял он берется
> за базу и относительная адресация пляшет вокруг. Но если надо на
> x86, не дай боже 32-битном, на нем PIC в принципе нормально
> не получится. И проблема в том что у проца архитектура уродская:

Надеюсь, ты понимаешь, что агрументация получается в стиле "Здесь играем, здесь не играем, здесь рыбу заворачивали"?

>> Какая-то липовая замена (не говоря уж о том, что может потребоваться напрямую
>> к регистрам или считать память по смещению) ...
> В общем случае в именно регистры, именно проца, именно неадресуемые как память
> соваться - ну такое себе очень отдельное и специфичное развлечение. Нужное лишь иногда.

Ключевое слово - code injection/shellcode. Никто не обещал "супер-широкий спектр применений" (и не выставлял как "единственную замену сям", в отличие от).

> А так на тебе фокус:
> volatile uint32_t * hw_reg = (volatile uint32_t *) 0x100500;
> * hw_reg = 10;

...
> В сях даже функции можно из таблицы кода на лету импортировать. Читаем таблицу, берем адрес, назначаем его указателю на функцию

Фокус не очень - представь на секунду, что твой код не контроллирует все "от и до" (потому что в чужом процессе) и поэтому таблица не имеет фиксированного адреса времени компиляции, зато "стабильно" доступна по [REG+0x1005000].


Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Дрю ДеВолт представил язык системного программирования Hare, opennews, 25-Апр-22, 16:11  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру