LINUX.ORG.RU

Создание коммерческих программ для Linux(+)


0

0

Здравствуйте.

Скомпилировав обычную программу на одном PC под управлением Linux, какова вероятность что эта программа будет работать на другом, отличном по пораметрам PC под управлением Linux например: а) Pentium 2 600 Mhz, RedHat Linux 8.0 b) Athlon XP 1400 Mhz, Fedora Core 3.

Как вообще для Linux коммерческие программы пишут?

С Уважением, Андрей.

Компилировать под i386 и все будет работать.

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

alexru ★★★★
()

>какова вероятность что эта программа будет работать на другом, отличном по пораметрам PC под управлением Linux

Если при сборки не использовать ничего выше -march=i586 и -mcpu=686, а линковку делать статическую, то довольно высока.

>Как вообще для Linux коммерческие программы пишут?

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

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

Если ты про то, почему нельзя хорошую защиту от взлома... Скажи мне, в какой ещё системе есть встроенные средства для создания дампов памяти (я имею в виду файловую систему proc)? В какой ещё операционке благодаря наличию исходных кодов можно перекомпилировать компоненты системы так, чтобы при попытке проверки серийного номера командой strcmp данный серийник записывался в отдельный файл? :) Или, допустим, поддержка перехвата системных вызовов, а значит - run-time patching?

Нет, писать защиту от взлома под Линух, Фрю и другие опенсоурсные системы - это гиблое дело:)

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

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

Это один из самых эффективных и самых плохих способов защиты. Так-как пользователь может для проверки поставить ломаную версию и обнаружив таие ошибки уже никогда не перейти на лицензию :)

alexru ★★★★
()

И не стоит забывать о Java

h8 ★★★
()

Нужно тестировать как можно больше.

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

>Нет, писать защиту от взлома под Линух, Фрю и другие опенсоурсные системы - это гиблое дело:)

А под соляркой разве другая песня???

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

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

ЗЫ

на вашем месте я бы не делал впредь голословных утверждений.

anonymous
()
Ответ на: комментарий от anonymous

>если ты не знаешь, то в windwos перехват вызовов системных функций тоже очень легко делается,

и в какой это вендузе??? в длинороге???

>поэтому защит основанных на strcmp давно не делают

зато делают if(CheckLicense()=false){MessageBoxA();Exit;}

>на вашем месте я бы не делал впредь голословных утверждений.

похоже вы никогда не пользовались монтировкой.

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

>и в какой это вендузе??? в длинороге???

начиная с 95,
если не знаешь то лучше промолчать.

>зато делают if(CheckLicense()=false){MessageBoxA();Exit;}

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

>похоже вы никогда не пользовались монтировкой.

а при чем здесь этот бред?

anonymous
()
Ответ на: комментарий от V_L_A_D

>Только очень трудно сделать хорошую защиту от нелегального копирования, которая не ломалась бы в течение одного дня ;).

А зачем её вообще делать? В любом эта прога не будеть для хоум-юзверей(>95% оффтопик), а скорее всего для какой-нить компании, им взламывать не за чем.

anonymous
()
Ответ на: комментарий от anonymous

>>и в какой это вендузе??? в длинороге???

>начиная с 95,если не знаешь то лучше промолчать.

как эт там делается я то знаю. по сравнению с юниксами совсем нетривиально.

>>зато делают if(CheckLicense()=false){MessageBoxA();Exit;}

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

ну и кто так делает???

corel так не делает, Globbe Trotter тоже

>>похоже вы никогда не пользовались монтировкой.

>а при чем здесь этот бред?

обьясняю популярно: сколько программ вы сломали и на какую сумму???

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

>Нет, писать защиту от взлома под Линух, Фрю и другие опенсоурсные системы - это гиблое дело:)

Почему же? Вот я все ищи сериал..или крякнутую OSS так и не нашел... Правда нашел доку по реверс-инжинерингу в Линаксе... Там в качестве примера приводится кряк OSS, правда древней версии...

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

>как эт там делается я то знаю. по сравнению с юниксами совсем нетривиально.

и почему нетривиально, в любой грамотной книжке по программированию под windows описан этот процесс, тривиальней некуда.

>corel так не делает, Globbe Trotter тоже

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

anonymous
()
Ответ на: комментарий от anonymous

>не значит, что этого никто не делает,

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

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

>типа как вы примели, одна из пятидесяти.

значит у них просто нет защиты, и она им не нужна

anonymous
()
Ответ на: комментарий от V_L_A_D

> Скажи мне, в какой ещё системе есть встроенные средства для создания дампов памяти (я имею в виду файловую систему proc)?

В чём преимущество именно встроенных средств?

> В какой ещё операционке благодаря наличию исходных кодов можно перекомпилировать компоненты системы так, чтобы при попытке проверки серийного номера командой strcmp данный серийник записывался в отдельный файл?

В любой.

Даже в той, к которой нет исходников.

Расскажи лучше, как ты будешь перехватывать inline strcmp.

> Или, допустим, поддержка перехвата системных вызовов, а значит - run-time patching?

Это можно сделать практически в любой ОС.

execve
()

Чтобы везде работало, поступают просто: ВСЕ библиотеки-зависимости поставляют вместе с программой (даже glibc). Тогда работоспособность определяется ABI ядра linux - это вещь уже достаточно стабильная, а для графики ещё и протоколом X Windows (стабильнее просто некуда). И вес получится у дистрибутива программы достойный - десятки метров, под стать другим..

erDiZz
()
Ответ на: комментарий от erDiZz

> это вещь уже достаточно стабильная
это вещь не достаточно стабильная, а абсолютно стабильная

anonymous
()
Ответ на: комментарий от execve

Проблемы создания защиты от нелегального использования программы у нас не стоит.

Стоимость одного пакета программы планируется более 60$, по этой причине значительную часть значимого алгоритма планируется реализовать в аппаратном устройстве имеющем USB интерфейс в качестве соединительного канала связи с PC.

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

Больший интерес представляет вопрос совместимости. Нет необходимости в высокой скорости и оптимальности программного кода, но есть необходимость в сохранении целосности исходных кодов программы.

Т.к ОС Linux распространяется по GPL большинство стараний разработчиков проходило в расчёте на то что программы написанные под Linux для определённого круга пользователей будут распространятся в виде исходных кодов, и распространятся по GPL. Так?

Исходя из вышесказанного появляются сомнения по поводу работоспособности программы скомпилированной на одном PC при её запуске на другом.

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

Уважаемый alexru писал: --Компилировать под i386 и все будет работать. --Кроме того для коммерческих программ обычно четко оговаривается на каком дистрибутиве она должна работать.

Если требуется совместимость с ядрами начиная с 2.4 и выше, насколько трудоёмко создание версии программы работающей на большинстве дистрибутивов ОС Linux?

С Уважением, Андрей.

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

>Если требуется совместимость с ядрами начиная с 2.4 и выше, насколько трудоёмко >создание версии программы работающей на большинстве дистрибутивов ОС Linux?

так тебе же говорили ABI не меняется с времен 1.х(возможно с 0.х),
компилируешь все статически(или подгружаешь собственные библиотеки) и программа у тебя будет работать на любой Linux с любой версией ядра.

anonymous
()
Ответ на: комментарий от masik

Если шифровать все PGP и активировать по SSL, то хрен кто сломает :)

anonymous
()
Ответ на: комментарий от lightport

> Проблемы создания защиты от нелегального использования программы у нас не стоит.

Выше уже всё написали.

Компилируй для i386 (и не выше) и линкуйся со всеми библиотеками статически. Тогда большинство проблем с зависимостями исчезнет. Но размер приложения будет очень большим + не всё, что доступно в динамических библиотеках, есть в статике.

Или же компилируй и собирай пакеты под каждый дистрибутив, как это делает большинство производителей ПО. Усилий на это требуется чуть больше.

execve
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.