OSDev

для всех
Текущее время: 19 окт 2017, 15:46

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 11 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: ELF vs PE (аспект импорта)
СообщениеДобавлено: 02 ноя 2014, 19:20 

Зарегистрирован: 04 ноя 2007, 14:48
Сообщения: 113
Всем привет!

Поверхностное гугление про ELF формат привело меня к одному небольшому вопросу.
Хотелось бы узнать мнение у тех, кто знаком с ELF форматом.

Предистория такова: в DLL (PE) есть таблица импорта. Она представляет из себя двухуровневое дерево, на первом уровне которого перечисляется список имён DLL-ек, из которых импортируются символы, а на втором - собственно имена импортируемых символов.

Вопрос заключается в следующем: в ELF также, или там просто список имён импортируемых символов безотносительно имён модулей, откуда они импортируются? (у меня возникло подозрение что в ELF тупо список (линейный), а не дерево, т.е. PE как бы более высокоуровневый формат получается, а ELF - ближе к объектным файлам типа COFF).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ELF vs PE (аспект импорта)
СообщениеДобавлено: 02 ноя 2014, 20:02 

Зарегистрирован: 04 ноя 2007, 14:48
Сообщения: 113
Так, отвечу пока сам себе.

На ЛОРе вычитал, что список модулей, от которых зависит ELF содержитс в элементах DT_NEEDED секции .dynamic.
Т.е. картина примерно такова: загрузчик грузит все модули в том порядке в котором они есть в секции .dynamic, а потом выполняет динамическое связывание списка требуемых символов со списком загруженных символов.
Т.е. древовидной структуры не получается, но порядок модулей (в некоторой степени) может повлиять на то, из какого конкретно модуля будет взята функция при коллизии имён.

Я правильно понял этот механизм?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ELF vs PE (аспект импорта)
СообщениеДобавлено: 02 ноя 2014, 22:33 

Зарегистрирован: 26 мар 2012, 17:32
Сообщения: 208
dragon писал(а):
Т.е. древовидной структуры не получается, но порядок модулей (в некоторой степени) может повлиять на то, из какого конкретно модуля будет взята функция при коллизии имён.
Да, есть такое дело. Это позволяет, например, подгружать библиотеки, которые переопределяют часть функций других библиотек (часто используется через LD_PRELOAD). Ещё позволяет произвольно разбивать функциональность между либами (и потом менять это разбиение без пересборки исполняемых файлов).

Про полную правильность понимания не могу сказать - сам знаю лишь частично.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ELF vs PE (аспект импорта)
СообщениеДобавлено: 15 ноя 2014, 15:54 

Зарегистрирован: 04 ноя 2007, 14:48
Сообщения: 113
Nable, спасибо!

Что, больше никто не хочет подискутировать на эту тему?
Может быть я слишком узко вопрос задал (зря уточнение в заголовке написал)?
Чтож, тогда расширим вопрос.

Какой из форматов: ELF или PE лучше подойдёт для использования в качестве формата модулей ядра (динамически подгружаемых)?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ELF vs PE (аспект импорта)
СообщениеДобавлено: 15 ноя 2014, 16:44 

Зарегистрирован: 31 окт 2011, 18:20
Сообщения: 230
Цитата:
Какой из форматов: ELF или PE лучше подойдёт для использования в качестве формата модулей ядра (динамически подгружаемых)?

ELF - открытый. Его можно использовать и не париться. Но отсутствие древовидности, на мой взгляд, скорее минус, т.к. создает потенциальную неоднозначность.
PE - там, насколько я знаю, очень много нюансов в лицензии, и использовать его надо с оглядкой.

Я же пошел третьим путём - изобрел свой велосипед. Формат, в который необфусцированные PE-файлы нормально конвертируются. В итоге можно компилировать код ЯВУ чем угодно, потом пропускать через конвертер и получать файл, не зависящий ни от каких лицензий. Суть формата похожа на PE, только в общем случае (если написать прямой компилятор в мой формат) секции перемещаемы друг относительно друга, а также сам формат несколько проще. Импорты тоже сделаны двухуровревым деревом, + в импорт можно добавить данные для проверки подписи загружаемой библиотеки (что-то типа проверок, появившихся с приходом .NET, направленных на то, чтобы нельзя было подменить загружаемую библиотеку).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ELF vs PE (аспект импорта)
СообщениеДобавлено: 23 ноя 2014, 20:00 

Зарегистрирован: 04 ноя 2007, 14:48
Сообщения: 113
Спасибо за мнение! Насчёт лицензии PE - много где слышал, но ни разу не видел, и почему то не загуглилось ничего путного. Есть какие нибудь ссылки на документы?
А свой велосипед всегда сделать успеется, это мы умеем :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ELF vs PE (аспект импорта)
СообщениеДобавлено: 23 ноя 2014, 20:15 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1056
http://msdn.microsoft.com/en-us/windows ... 63119.aspx
Вот там лицензия. И далее когда соглашаешься получаешь спецификацию формата файла.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ELF vs PE (аспект импорта)
СообщениеДобавлено: 23 ноя 2014, 21:45 

Зарегистрирован: 04 ноя 2007, 14:48
Сообщения: 113
Это лицензия на спеку. А именно, на текст спецификации. Там только общие слова типа то что описано МОЖЕТ быть защищено патентами или законами об интеллектуальной собственности.
Вопрос собственно заключается в том, защищён ли действительно какими либо законами формат PE или это домыслы? Ведь во первых он преемник COFF, которому уже очень много лет - были бы патенты, уже бы истекли.
А во вторых, сама целесообразность защиты такого формата вызывает сомнения.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ELF vs PE (аспект импорта)
СообщениеДобавлено: 23 ноя 2014, 22:14 

Зарегистрирован: 31 окт 2011, 18:20
Сообщения: 230
Цитата:
Есть какие нибудь ссылки на документы?

Нету. Я тоже в свое время ничего вразумительного не нашел. Но слова о "можеть быть защищено" в лицензии на спеку напрягают. И слухи ходят всякие.
Цитата:
А во вторых, сама целесообразность защиты такого формата вызывает сомнения.

Ну а как же патентный троллинг? Весьма неплохой способ заработать. Целесообразность подписей от М$ в EFI тоже вызывает сомнения, но ничего, сделали. Наряду с мизерным повышением защищенности добавилась возможность стричь деньги со всех операционок. Да и потом, не защитишь ты - "защитит" кто-нибудь другой, и потом ходи по судам и доказывай, что это твой формат. Вся эта система патентов и лицензий вообще в корне абсурдна, и логичности там зачастую нет.

Поэтому я не горю желанием использовать PE. К тому же, он несколько переусложнён и костылен. Ну а поскольку в мой формат можно конвертировать PE файлы (кроме малварь и пакеров, завязанных на структуру файла), то проблем с его велосипедностью не будет. Я сейчас некоторые модули компилирую из VisualStudio и спокойно использую в своей оси.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ELF vs PE (аспект импорта)
СообщениеДобавлено: 23 ноя 2014, 22:35 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1056
Патент в США хотя и дается на 20 лет. Но его можно подливать. Платишь деньги и продлевай до бесконечности.

Там раньше страшнее лицензия была.
Цитата:
Это лицензия на спеку. А именно, на текст спецификации. Там только общие слова типа то что описано МОЖЕТ быть защищено патентами или законами об интеллектуальной собственности.
Вопрос собственно заключается в том, защищён ли действительно какими либо законами формат PE или это домыслы?

Как и у нас в США предметом собственности является произведение, в данном случае текстовое.
Что такое формат файла? Это текстовый документ описывающий его структуру. А это и есть документ описывающий структуру PE. А это есть лицензия на спецификацию. Заключаем логическую цепочку это и есть лицензия на формат файла PE.
Законом авторского права защищает. Собственно данный документ и говорит что права автора принадлежат МС. Но не более того.
Лицензия - это права пользования. Но хозяином остается автор.
Согласно этой лицензии при соглашении вы приобретаете право. Которое считается оплачены.
МС выдает права на пользование этой спецификацией и как мы установили форматом файла. Но при условиях описанных в лицензии. А в лицензии есть условие выходной платформой вашей утилитой должна быть Microsoft Windows.

Грубо говоря ни о чём. И явных запретов нет. Но с другой стороны МС сохраняет право если, что подать на вас в суд.
Патентов нет, иначе их бы указали.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB