LINUX.ORG.RU

А как написать сильно завязанную на *nix программу, которую невозможно будет запустить под офтопом?


0

3

Собственно интересно. Реально ли завязать программы под никсы на столько, чтобы ни под каким эмулятором она не шла под офтопиком и чтобы код переписать было бы очень геморойно. При чем лицензия проги - GPL.

Как например миранда - заточена под офтоп, а под линем не соберется и переписать сложно, но за-то GPL.

★★★★★

Хм.. Прибить гвоздями к системным вызовам ядра, к X-серверу и glibc?

Chaser_Andrey ★★★★★
()

Напиши прогу на ассемблере. Гарантированно не соберется.

slackwarrior ★★★★★
()

> которую невозможно будет запустить под офтопом?

Возможно всё, вопрос времени и усилий.

Chaser_Andrey ★★★★★
()

<offtop>
Мне, почему-то, сразу представилась следующая картина:
Сидят программисты мелкософ и думают, как бы написать крутую программу, чтоб она под wine не работала
</offtop>

А по теме: используй специфичные функции, завяжи свою программу на драйвер, который реализуй только под линукс. Ну и ассемблер тебе уже посоветовали =)

trex6 ★★★★★
()

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

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от trex6

>свою программу на драйвер, который реализуй только под линукс

Дык это-то хорошо, если прога проприетарная. А вот если ее под ГПЛ выпустить? Всю эту завязку возьмут да и выпилят в два счета.

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

Всю эту завязку возьмут да и выпилят в два счета.

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

gizzka ★★
()

poll()/epoll(), socketpair(), fork(), <unistd.h> …

было бы желание…

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

учитывая, что cygwin и mingw работают вполне сносно, много индусокода - единственный реальный вариант. особенно учитывая доступность кода - любой адекватный код довольно быстро можно переписать так, что он соберется для винды

vostrik ★★★☆
()

А нахрена? После этого и говорят, что всё опенсорсное комьюнити состоит из школостудентов ;(

tensai_cirno ★★★★★
()

Любая интенсивно работающая c вводом-выводом программа не пойдем на винде без специальной заточки.

dmitry_vk ★★★
()

По моему скромному мнению лучше написать программу, которая бы под *nix работала гладко и ровно и органично вписывалась. И с ней было удобно работать, используя программы из той же области. Если программа нужна для профессиональной деятельности, то человеку бывает проще сменить операционку, чем постоянно запускать под эмуляторами и виртуальными машинами.

Я так понял, цель - вынудить людей использовать *nix ?

Всё же кажется, что переписать миранду можно. Вопрос стоит с плагинами и их форматом. Хотя и их побороть тоже можно, не смотря на всякие ieview.

m4n71k0r
()

Интересно, старый трюк с модификацией кода, уже загруженного в конвейер процессора сегодня работает? Сбросит ли процессор конвейер, если промодифицировать код в памяти, идущий перед выполняемой сейчас инструкцией?

На 8086 распространённая была защита от отладчиков. Ещё и способ отличия 8088 от 8086. У первого конвейер был на 4 байта, у второго - на 6.

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

>Зачем?

Ты ещё скажи что слово «монополизм» забыл внезапно.

darkshvein ☆☆
()

Использоуй принцип Неуловимого Джо. Все луноходы им пользуются.

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

>Интересно, старый трюк с модификацией кода, уже загруженного в конвейер процессора сегодня работает?

man NX-bit

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

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

По-моему, нынче в нормальной ОС изменить свой код на прикладном уровне и не получится - страницы памяти с кодом будут в r/o

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

>man NX-bit

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

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

>А как JIT работает?

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

KRoN73 ★★★★★
()

Особо изощряться и не нужно - интенсивно использовать posix-API. В оффтопе с этим неважно.

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

Есть там позикс апи. Правда в семерке оставили только в энтерпрайзной версии, которую просто купить нельзя. Никак (-:

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

Я прекрасно знаю, и про цыгвин, и про колинупс. Я говорил про интерикс.

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

>А что, сегодня, получается, больше невозможно писать самомодифицирующиеся программы?

Можно. Просто перед модифицируемый код должен лежать в страницах, разрешенных на запись и исполнение.

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

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

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

>Можно. Просто перед модифицируемый код должен лежать в страницах, разрешенных на запись и исполнение.

А, ну всё, тогда никаких проблем с проверкой на загрузку в конвейер. Так интересно, работает этот метод с 8086 или нет? :) Тем более, что конвейеры сегодня совсем длиннющие.

KRoN73 ★★★★★
()

Она, скорее всего, через год и на линуксе перестанет собираться.

proud_anon ★★★★★
()

Будто миранду нельзя собрать супротив libwine или как там его. Так и это поделие можно будет скомпилить с цигвином. Если начать завязывать только на linux, то под generic unix оно уже не запустится.

PolarFox ★★★★★
()

Лучше сделать по-другому. Как известно, вендузятники редко компилируют программы из исходников. Так что можно просто дать им бинарик, собранный из модифицированных исходников, так, чтобы под вендой работало хуже (например, тормознутее или глючнее).

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

>А, ну всё, тогда никаких проблем с проверкой на загрузку в конвейер.

В однозадачной ОС? Может и работает.

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

>Никому твоя программа не нужна будет под виндой

Слишком оптимистично

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

>Я так понял, цель - вынудить людей использовать *nix ?

Именно, просто навеяно тем, что много что офтопного жестко завязано, а если и идет - то с жуткими протезами и потерей функциональности, а никсового такого нет.

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

>Внеси ограничение на портирование на неугодные тебе OCы в LICENSE

Ну это да, хороша идея. Такой подход отсекает использование в конторах, но домашнии пользователи все равно смогут попробовать это дело затырить.
Да и лицензия будет уже не GPL

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

>Реквкстирую программу-генератор индусокода!

google обфускатор

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

>В однозадачной ОС? Может и работает.

В многозадачной тоже с высокой вероятностью будет работать :) Сколько команд сейчас процессор за один таймслайс выполняет? Миллион? :)

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