Модераторы: ZeeLax, powerfox
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Глупый пингвин робко прячет либу жирную в каталог. сабж 
:(
    Опции темы
oleg1973
Дата 20.1.2005, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: нет
Всего: 34



Предисловие:
Цитата
Глупый пингвин робко прячет тело жирное в утесах... Только гордый Буревестник реет смело и свободно над седым от пены морем! (с) Макс Горький


Поехали smile
**********************
Задание:
"Понять что нам мешает запускать прекомиленные бинарники в линюхе"

И так по общепринятому мнению в сообшестве уважаемых "real линуксоидов" считается плохим тоном распостранение софта в виде откомпиленных бинарников.
Мотивируется это 2 основными предпосылками
1) "Нам нужна уверенность что в проге нет бэкдоров и всего такого!"
2) "Прекомпилед бинари файл незапустится если в системе либы не той версии!"

отбросим первый аргумент как параноидальный и не заслуживаюший внимания и займемся технической стороной дела аргумента намбер 2
и так есть 3 варианта загрузки бинарника необращая внимание на версию glibc
1) патченье бинарника (точнее секции импорта, по аналогии с PE/EXE)
2) патченье бинарника для подмены лоадера ld-linux.so
3) изменение непосредственно лоадера ld-linux.so


всем известно что прога написаная на С обращается за нужными ей функциями к shared library libc*.so сия хрень лежит обычно в /lib

и так как происходит загрузка
в теле elf файла есть многа всяких структур одна из них указвает на загрузчик ld-linux.so
после того как мы кликнули в файл первым делом система проверит данную структуру , а именно на что она указвает, и загрузит /lib/ld-linux.so
етот файлик имеет ответственное задание, подготовить нашу прогу к работе, в часности он проверяет какая версия glibc нужна проге а какая стоит в системе.
Версия glibc указана в нашей проге открытым текстом ,в МС можно посматреть,
там мы увидим нечто типа GLIBC.2.3.1
элегантной заменой этих циферок мы можем заставить грузится нашу прогу на нужной нам версии glibc
работоспособность гарантирована
данная фича справедлива и для других либ

теперь передем к варианту намбер 2
заменив /lib/ld-linux.so на нечто типа ./main-loader
получим шикарную возможность заменить системный загрузчик своим со всеми вытикаюшими последствиями smile smile

и на последок вариант 3 (для любителей компиления)
так как сорыцы ld-linux.so совсем не военная тайна том никто не мешает поменять там пару строк убрав проверку версий , но это не вариант ибо глупый юсер такого сделать не сумеет

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


а теперь краткое лирическое отступление о совместимости либ
(SUN для тебя)
так как libc является стандартной сишной либой (ANSI) то имеет стандартный набор процедур
printf он и в африке printf
синтаксис всегда тотже и параметры теже, может менятся его реализация внутри либы
так что для прикладного програмиста все останется прозрачным и незаметым
другое дело если скомпилить прогу с супер пупер оптимизацией fastcall и все такое
в данном случае да, на разных версиях может быть глюк так как никто не гарантирует сохранения значений регистров, но в общем случае при передаче параметров через стек все будет работать как положено.

p.s.
видимо комуто выгодно данное положение весчей с несовместимостью , сорцами и так далее, а теперь еше и в модулях версия кернела smile))) зачем все это?




--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
Sardar
Дата 21.1.2005, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 1
Всего: 317



Неужели дела так обстоят? Никогда "туда" глубоко не копал, времени не было... Но мне всегда казалось что любая либа должна работать с программой если она версией не ниже чем запрашиваемая программой. Если произвели коренные изменения, то нужно создават новую либу держа старую как мёртвый груз ради совместимости.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
oleg1973
Дата 21.1.2005, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: нет
Всего: 34



Цитата
Если произвели коренные изменения, то нужно создават новую либу держа старую как мёртвый груз ради совместимости

а зачем?

Код

printf ('hello!');

данному коду пошарабану как реализован printf внутри либы
при компиляции получим нечто типа
Код

push adr
call printf
...
adr:
   db 'hello!',0

будет работать на ВСЕХ версиях glibc без исключения


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
GrayCardinal
Дата 21.1.2005, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 7
Всего: 58



Цитата
считается плохим тоном распостранение софта в виде откомпиленных бинарников.

ДА НИЧЕМ ЭТО НЕ МОТИВИРУЕТСЯ ! Вера у нас (Линуксоидов) такая !

Цитата
элегантной заменой этих циферок мы можем заставить грузится нашу прогу на нужной нам версии glibc

НОРМАЛЬНО работать такая прога не будет.

Цитата
Понять что нам мешает запускать прекомиленные бинарники в линюхе

Да ничего не мешает. Запускали и будем запускать. НО. Только свои, родные, проверенные (это не паранойя !), от которых можно взять код и посмотреть... Взять тот же мандрэйк - на сайте лежит три образа дисков с прекомпиленными прогами. Это есть гуд, если мне вломы собирать всю линуху с нуля. НО. Могу с того же сайта скачать исходник и собрать все СВОИМИ РУЧКАМИ. СВОЙ ВАРИАНТ Линухи. Или допустим - возьмем примитивную софтяну - "echo". Ну не знаю я как "printf" пишется. Взял посмотрел, прибавил к версии, допустим
"© GrayCardinal 2005 For you, Svetlana !" Собрал и получаешь удовольствие. Хотя, в принципе, мне эта прога ("echo") ну вообще на @@@ не нужна и мой сервак будет пахать и без нее.

Не, видимо тебе это не понять.

CУВ.

ЗЫ:
И вообще, если бы Линуксоиды "зажимали" бы каждое "ноу-хау", то линухи бы не было. Да и сама Линуха это ТАКОЕ НОУ-ХАУ, только почему - то Линус ее в чулане не запер и на ключ не закрыл.



Это сообщение отредактировал(а) GrayCardinal - 21.1.2005, 15:43


--------------------
PM MAIL WWW   Вверх
oleg1973
Дата 21.1.2005, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: нет
Всего: 34



GrayCardinal
Цитата
НОРМАЛЬНО работать такая прога не будет.

нуууу как в детсаде....
где обоснования что она не будет работать НОРМАЛЬНО?
или ты это интуитивно чуеш? smile
Цитата
Не, видимо тебе это не понять

не будем на личности переходить
мы тут все серезные люди и рассуждаем о серезных весчах
Цитата
Да и сама Линуха это ТАКОЕ НОУ-ХАУ, только почему - то Линус ее в чулане не запер и на ключ не закрыл

интересно в чем там ноу-хау?





--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
Sardar
Дата 21.1.2005, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 1
Всего: 317



Цитата(oleg1973 @ 20.1.2005, 23:19)
данному коду пошарабану как реализован printf внутри либы

Ладно printf не меняется. А теперь представь что ты написал прогу юзая некоторую либу, в некоторой функции ты нашёл баг, но оказалось что можно доработать её результат и всё будет в порядке. Со следующей версией функцию фиксят и она выдает всё как надо, а твои преобразования выдают ошибку, в результате прога не пашет. Разработчику либы в таких случаях нужно просто извинится и всё smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
oleg1973
Дата 21.1.2005, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: нет
Всего: 34



Sardar
это часный случай
и если так тогда glibc самая глюкавая либа в мире smile
а все девелоперы ламеры полные, что за 10 лет (если не больше) не смогли баги профиксить.

ну а если копнуть в глубь
то консольная прога на 99% использует glibc (едакий нашлепок над кернелом)
и найти баг в ней видимо проблема ввиду ее вылизаности и стандартности

p.s.
давайте список либ которые вы используете, проверим


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
GrayCardinal
Дата 22.1.2005, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 7
Всего: 58



Цитата
где обоснования что она не будет работать НОРМАЛЬНО?

1. Нет обоснований что она будет нормально работать. Для этого прогу под Линуху обычно тестят кучей народу. Твою, ИМХО (приходится каждый раз писать, а то к словам придираются) никто тестить не будет.
2. Нормальная прога для линухи, ИМХО, прога _собранная_ для конкретного дистрибутива.


--------------------
PM MAIL WWW   Вверх
oleg1973
Дата 22.1.2005, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: нет
Всего: 34



GrayCardinal
Цитата
Нет обоснований что она будет нормально работать

ты посты выше читал?
Цитата
Для этого прогу под Линуху обычно тестят кучей народу Твою, ИМХО (приходится каждый раз писать, а то к словам придираются) никто тестить не будет.

ну это твое личное субьективное мнение
Цитата
Нормальная прога для линухи, ИМХО, прога _собранная_ для конкретного дистрибутива.

ну и где тут шоколад?
а если я ламер и компилировать не умею
а так хочется заиметь xchat последней версии, а для моего дистра его еще не выпустили, че делать?


GrayCardinal
давай вообщем не брызгать фанатично слюной а предоставлять факты, желательно с примерами (это я насчет совместимости)


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
GrayCardinal
Дата 22.1.2005, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 7
Всего: 58



oleg1973
Посты выше читал. А ты мои ? smile Да я вроде пока не фанатик smile Вопрос то был "что мешает" Ну я и сказал как есть. А в смысле софта - хрен его знает. Ну у меня. допустим. твоя прога работает smile У тебя работает. Насчет других не знаю. Не уверен. Вариантов линухи слишком много.

Извини. если что не так. Я последнее время нервный. Да и сам виноват - нефиг говорить про глупого пингвина на форуме линуксоидов smile



Это сообщение отредактировал(а) GrayCardinal - 22.1.2005, 15:20


--------------------
PM MAIL WWW   Вверх
GrayCardinal
Дата 22.1.2005, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 7
Всего: 58



Цитата
работоспособность гарантирована


Цитата
давай вообщем не брызгать фанатично слюной а предоставлять факты, желательно с примерами (это я насчет совместимости)

Ну давай smile


--------------------
PM MAIL WWW   Вверх
oleg1973
Дата 23.1.2005, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: нет
Всего: 34



GrayCardinal
ну дак я факты предоставил
с примерами практически
от тебя пока только слюни были
Цитата
А в смысле софта - хрен его знает.

1) если не знаеш или не компетентен то лучще промолчи
Цитата
Ну у меня. допустим. твоя прога работает  У тебя работает. Насчет других не знаю. Не уверен

2) и у других будет работать



--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
pythonwin

В этом форуме предпочтительны вопросы на следующие темы:

  • Конкретные вопросы о конкретном ПО. В таких вопросах желательно привести точные данные о программе: версия программы, версия ОС, версия ядра, и проблему в форме: сделал Х, хотел получить Y, а получил Z.
  • Неконкретные вопросы о выборе ПО
  • Обзоры - как дополнение в ветку Обзоры


  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программное обеспечение под *NIX системы | Следующая тема »


 




[ Время генерации скрипта: 0.0579 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.