LINUX.ORG.RU

Как «прибить гвоздями» программу к конкретному дистрибутиву линукс?

 ,


0

3

Допустим, решил я написать программу для МСВС или Astra Linux, да так, чтобы она не запускалась ни в других дистрибутивах линукс, ни, тем более, в WSL.

Осуществимо ли сие?

Перемещено hobbit из general

★★★★★

Последнее исправление: Mischutka (всего исправлений: 1)

Захотелось как в винде: «регистрации-активации». Но если хотя-бы чуть был в винде, то должен знать - все это «обходится на раз». В том числе и предложенный: «Чекать /etc/os-release».

Она и так не будет запускаться. Найдется какая-нибудь «lib*», которой там нет и привет.

andytux ★★★★★
()
Последнее исправление: andytux (всего исправлений: 1)

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

alex1101
()

если прога будет скомпилирована для мсвс (естественно динамическая линковка) - то, скорее всего, она нигде более и не запустится, из-за древности библиотек, хотя вот в 5.0 вкрячили glibc 2.5

Silerus ★★★★
()
Ответ на: комментарий от alex1101

Для начала отфильтровываю только те файлы, которые не смогли открыться, потом смотрю, какие по уникальным путям, а какие просто проверка наличия одного и того же файла в разных местах. Останется искомый.

shell-script ★★★★★
()

чтобы она не запускалась ни в других дистрибутивах линукс

Вы всерьёз надеетесь, что бинарник будет запускаться где-либо кроме системы на которой её разработали без кропотливой работы по кроссплатформенному портированию, компиляции и упаковке? 😃

raspopov
()

конкретному дистрибутиву линукс?

Уточни, что такое конкретный дистрибутив линукс. Вот убунту-сервер и кубунту это один дистрибутив или два?

ya-betmen ★★★★★
()
Ответ на: комментарий от raspopov

дитрибутивы линукса достаточно сильно растут из одного корня ядра, библиотек и утилит.
я из rpm в убунту вкорячивал проги - работали.
максимум надо было доустановить требуемые пакеты, да и то названия были похожие.

pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 1)
Ответ на: комментарий от Zhbert

Тогда надо проччитать os-release и выдать ошибку «не тот дистрибутив» если там неправильная строчка. Отчитаться о проделанной работе, убедить менеджера что всё строго согласно принятым стандартам.

kirill_rrr ★★★★★
()
Ответ на: комментарий от alex1101

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

А потом это поделие будет рандомно падать у пользователей. В лучших традициях вендософта. И ТС поест говен по полной. И заслуженно.

utanho ★★★★★
()

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

DumLemming ★★★
()

Лучше бордель открыть, по-моему, это гораздо больше способствует укреплению нравственности в обществе.

Но с другой стороны, мне кажется, что ТС решил просто набросить. Максимально незатейливо, но чтобы камни гарантированно полетели.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от Aceler

А это идея! Только не проверять наличие Fly, а привязать программу к какой-нибудь библиотеке, используемой лишь настольным окружением Astra Linux. Должна же быть чисто fly-специфичная библиотека.

Mischutka ★★★★★
() автор топика

Допустим, решил я написать программу для МСВС или Astra Linux, да так, чтобы она не запускалась ни в других дистрибутивах линукс, ни, тем более, в WSL.

Да, достаточно сделать программу, которая не будет запускаться вообще нигде. Тогда она точно не запустится ни в других дистрибутивах линукс, ни в WSL. Запускаться в МСВС и Astra она тоже не будет, но этого в требованиях и не было.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Запускаться в МСВС и Astra она тоже не будет, но этого в требованиях и не было.

Правда, а это тогда что?

... решил я написать программу для МСВС или Astra Linux...

Mischutka ★★★★★
() автор топика

Стандартный ответ на такие вопросы, разумеется: проверяй фичи, а не версии.

Если у тебя заказчик ставит задачу «запускаться только на МСВС» - это же тоже с чем-то связано, с какой-то конкретной фичей МСВС…

Это может быть связано, например, с сертификацией МСВС - но сертификация идёт прямо по бинарикам, значит берёшь хэши от версий библиотек, например (в смысле не версии, а именно хэш-сумма бинарика сертифицированной версии - так и должно проверяться если по уму).

Единственный минус - долго проверять. Как вариант делать какие-то промежуточные контрольные точки или хэшировать не всю поставку а некоторое количество «ключевых» вещей - но тут уж только экспериментировать по вопросу производительность/надёжность.

Scondo
()
Ответ на: комментарий от i-rinat

Работоспособность — это параметр, заданный по умолчанию.

Ради интереса: у Вас были случаи, когда Вам ставилась задача написать неработающую программу?

Mischutka ★★★★★
() автор топика
Ответ на: комментарий от Mischutka

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

По сабжу: нет, невыполнимо. Ограничения всегда можно обойти. Вопрос лишь, сколько усилий придётся приложить.

Я думаю, тут AB-проблема. Для чего заказчику нужно, чтобы программа работала только в дистрибутиве N? Это нужно для какой-то цели. Если связано с какой-то безопасностью, то надо проверять не правильность дистрибутива, а наличие соответствующих фич/ограничений безопасноти. Если с конкретной версией и флагами сборки ядра — проверять версию и флаги ядра. Если целью ставится реклама дистрибутива, то это решается банально прямой рекламой.

CrX ★★★★★
()

А можно вопрос? Зачем впринципе прибивать к дистрибутиву? Это явная задача от заказчика, или таким методотом ты хочешь достичь чего-то другого? Если второе, то мне кажется, что задачу можно решить как-то по-другому

Aswed ★★★★★
()