All streams
Search
Write a publication
Pull to refresh
16
68.1
Егор Сидоров @TizZy

Я Си разработчик, и я горжусь этим!

Send message

Здорово, спасибо!

Спасибо за прочтение!:)

Мне просто кажется, что это чуть больше будет похоже на черный ящик. Хотелось чуть больше "ручками" повзаимодействовать и меньше использовать готовые утилиты, или, по крайней мере, не сильно погружаясь в их особенности и функционал.

Но я согласен абсолютно — писать байты в консоль это жесть как муторно, зато наглядно! :D

Спасибо! Это действительно важное замечание, и я его обязательно учту в дальнейшем)

Согласен с вами, бесспорно использовать mprotect в данном контексте было бы неплохо (хоть и пришлось бы углубиться в управление оперативной памятью), но тут важно будет сказать, что с помощью mmap мы добиваемся отделения исполняемой области, что, на мой взгляд, более правильно.

Ну и если добавить контекст, то далее в статье идёт речь про отображение файла с помощью mmap, поэтому мне принципиально было задействовать этот системный вызов ранее, чтобы не добавлять новой информации и, тем самым, упростить статью:)

Если я не ошибаюсь, то mprotect не подойдет для нашего сценария, так как массив попадет в .data секцию и будет лишь её частью. А mprotect работает именно с целыми страницами, поэтому, как вы и сказали, потребуется выравнивание и учет размера страницы. Это приведет к изменению прав для гораздо большего диапазона адресов нежели нам нужно, что, я считаю, слишком излишним и более вредным, хоть это и требует меньше ресурсов.

Спасибо большое!)

Туда и двигаемся, можно сказать)

Конечно интересно, жду)

Вообще, этот SEF формат — быстрая импровизация на тему исполняемых файлов, в которой нет ничего особенно полезного. Цель была (и будет) в плавном введении в эту тематику, чтобы ребята, которые достаточно далеки от этого, смогли по-тихоньку собирать контекст из тучи непонятных слов:D

А сам формат мы постепенно будем развивать как минимум до введения экспортов, импортов и релокаций. Ещё и научимся PE переводить в SEF. Напишем более правильный и сложный загрузчик. Без исполнения массива никуда не денемся и будем использовать похожий сценарий для формирования функций-заглушек при отсутствующем импорте.

Короче, ещё много работы предстоит, поэтому я с удовольствием вбираю новые мысли и идеи!

Понимаю, но, в рамках этой статьи, мне хотелось сделать все максимально просто и доступно. А усложнять и углубляться можно долго:)
Спасибо за комментарий!

Согласен, очень хорошая идея, в следующих статьях обязательно сделаю. Спасибо!

Information

Rating
101-st
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

System Software Engineer, Разработчик C
Senior
GNU Compiler Collection
C
Linux
Bash
Git