Перейти к содержанию
    

"Еще вариант - поставлять вашу библиотеку в виде .h + объектник (так кстати сама атмел делает для своей библиотеки работы с сенсорными клавиатурами)." - очень интересный вариант. Как его осуществить на практике. Можно подробнее пожалуйста.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Или все устроство заливать эпоксидкой?

А эпоксидка разве проблема?

Фен, скальпель, шило и несколько часов нудной работы...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А эпоксидка разве проблема?

Фен, скальпель, шило и несколько часов нудной работы...

Зря докапываетесь. Теперь мне придется объяснять, что это было сказано к слову, типа первое, что пришло на ум.

 

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

 

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

 

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

 

Так что установка защиты -- это "сам себе злой Бурратино". Если уж на то пошло, то с конкурентами надо садиться за стол переговоров и обсуждать роли и сферы влияния, а не рогатиться друг против друга. Вы -- сильный, конкурент -- тоже сильный. Ну вот и найдите способ сложить ваши усилия. Обе стороны только выиграют от этого симбиоза. Определите каждый свои сильные стороны и найдите кто чем будет заниматься. У одного может быть мощное производство, у другого прокаченные мозги -- ребята! Да вы катастрофически нужны друг другу! Вы вместе просто порвете мир! А вы как два брата -- тяните одеяло на себя. Воюете друг с другом. Зачем? Поднимитесь над своими "электронными" проблемами и посмотрите на мир другими глазами! Попробуйте распределить роли. Уверяю вас -- вы очень сильно удивитесь как расчиститься горизонт, а мир измениться в лучшую сторону.

 

Все же знают, что лучшая защита -- это нападение. Только нападать нужно не на конкурента, а на проблему. Научитесь отличать конкурентов и проблемы. И на самом деле это две разные сущности. Конкурент -- он не враг. Но у вас (с вашим конкурентом) есть проблема. Вот и объединяйтесь с конкурентом для ее решения. Я знаю, это трудно. Языком чесать куда легче, чем заниматься реальными переговорами. Но, во первых, это надо обязательно делать, если хотите движения вперед. А, во вторых, этому искусству тоже можно научиться, как и электронике.

 

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

 

Блин, похоже, говорю в пустоту. Не поймут меня...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"Еще вариант - поставлять вашу библиотеку в виде .h + объектник (так кстати сама атмел делает для своей библиотеки работы с сенсорными клавиатурами)." - очень интересный вариант. Как его осуществить на практике. Можно подробнее пожалуйста.

 

компилятор превращает .c файл в объектник (.obj). Затем линкер "склеивает" объектники вместе, превращая их в исполняемый файл.

Объектник содержит фактически ассемблерный код + заглушки, которые в последствии будут заменены линкером на реальные инструкции. Из объектника несложно вытащить этот код, однако ваш революционный код на Си восстановить не получится (ну точнее получится, но придется руками долго и нудно конвертить ассемблер в С). А если там например много макросов или С++ с шаблонами, инлайн-функциями, + высокие уровни оптимизации, то такое восстановление будет весьма нетривиальным.

 

Если вы сделали объектник и отдали его клиенту, то у него нет исходного кода. Он компилирует свои файлы, и отдает линкеру свои объектники и ваш.

 

Для того, чтобы клиент мог вызывать ваши функции, ему нужен .h файл с их объявлениями.

 

Несколько объектников можно склеить в статическую библиотеку - т.е. если ваша библиотека состоит из десятка .c файлов, вы можете на выходе все равно получить один файл.

 

У такого подхода есть и минусы - объектник должен иметь тот же ABI, что и программа клиента. Т.е. по простому быть скомпилированным с теми же директивами компилятора (точнее одинаковы должны быть те директивы, которые влияют на ABI) и для того же целевого процессора. Соответственно у того же атмела по несколько вариантов библиотеки для каждого целевого процессора.

 

Все это подробно описано в доке на линкер, рекомендую :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пихать исходный код в .h - это плохо. Да, это допускается. Но это плохо, очень плохо. Особенно, когда туды начинают совать огромный код.

ИМХО. Немало граблей на этом пути ...

 

.h файл по опрелению - ЗАГОЛОВОК. Константы, определения и всё. Никакого кода там вообще быть не должно.

Разбейте свой код на 2 части - закрытую (откомпилированная библиотека) + открытые .h и .c. Это гораздо более естественнее, понятнее и проще в реализации, нежели какие-то шифровки исходника. А кто его будет расшифровывать? И как? И когда?

Я видел такое только в обычном компе, где есть масса способов вживить в конечную программу некие интерперетаторы и родственные тому вещи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно ссылку, пожалуйста, на доку "линкер"?
да у вас, батенька, все так запущено...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно ссылку, пожалуйста, на доку "линкер"?

Вообще описаний не очень много, но есть. Предлагаю начать с классики -- с UNIX-way. В Unux/Linux всё открыто и очень даже дружелюбно. Даже если Вы работаете в Виндовсе, то всё равно принципы линковки объектных модулей остаются одними и теми же. Классика -- она и есть классика.

 

1. Редактор связей gnu ld (описание на русском)

http://linuxland.itam.nsc.ru/gnu/ld/dnuld.html

 

2. Книжка "Using ld", авторы Стив Чемберлен и Иан Лэнс Тэйлор

http://www.arl.wustl.edu/~fredk/Courses/Docs/ld.pdf

 

3. Еще одна мощная книга "Linkers & Loaders" Джона Ливайна

http://www.amazon.com/Linkers-Kaufmann-Sof...g/dp/1558604960

 

И не забывайте про Гугл!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ТС создал ноухау, но не знает, что такое .h, объектник и линкер :05: 'Не верю!' ( (с) Станиславский )

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно ссылку, пожалуйста, на доку "линкер"?

Например

 

А вообще, google knows

 

ТС создал ноухау, но не знает, что такое .h, объектник и линкер :05: 'Не верю!' ( (с) Станиславский )

Почему нет?

Не уверен, что все win-программеры хоть раз видели функцию WinMain()

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...Может в DLL как-то можно преобразовать?

 

и я немного вякну :) Попробую немного добавить свои 5 копеек...

Прислушайтесь к zhevak - он в правильном русле говорит. всё верно. Про защиту = возможно он не теми словами идею выразил, либо умолчал немного(мысль не туда ушла) :

 

В области защиты есть постулаты. Один из них:

 

Вскрыть можно всё. Вопрос только цены (время = так же имеет цену и минимальную константу).

 

Так вот. Немного перефразируя и дополняя zhevak скажу следующее:

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

еще один вариант -

в llvm была даже такая специальная фича для эмбедеров - С-бэкенд, которая предполагалась для архитектур в которых есть С компилер, а С++ компилера нету,

то есть если есть желание, то можно найти старый llvm или доставить к нему С-бэкенд.

в llvm есть и С++ бэкенд, но его назначение для меня мутно и возьмет ли сгенеренный исходник avr компилер - нет уверенности, но попробовать это проще

 

скомпилить программу llvm в С или С++ (с высокой степенью оптимизации) - в этом исходнике понять что-либо будет приблизительно также трудно как и в объектнике.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"ТС создал ноухау, но не знает, что такое .h, объектник и линкер 05.gif 'Не верю!' ( (с) Станиславский )" - народ ну Вы че издеваетесь надо мной???

 

Вы че когда пишете программы будете еще и В МАШИННЫЙ КОД ЗАЛАЗИТЬ??? Я знаю С#/C++, Object PASCAL, Basic (Bascom AVR), ASSEMBLER опыт работы с ARM, AVR от Atmel и PIC16... или PIC18... от MICROCHIP и даже INTEL8086(писал на ASSEMBLER). Мне важно, чтобы программа была правильно оптимизирована и правильно работала, как на компьютере, так и в МК. И когда я пишу программы я не заморачиваюсь там всякими линкерами, компиляторы за меня замарачиваются B) . Я знаю об этом только абстрактно, а не глубоко!!! Вот и спросил поэтому!!!

 

Zhevak спасибо за ссылки.

 

Но загворздка. Ссылка по линухе не работает(пишет, что книга не найдена)

 

У меня с тех. помощью атмела хорошие отношения. Составил запрос, обещали помочь и скинуть пошаговую инструкцию с описанием, но только не раньше след. недели. Как полочу обнародую специально для ВАС!!! ;) B) ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"ТС создал ноухау, но не знает, что такое .h, объектник и линкер 05.gif 'Не верю!' ( (с) Станиславский )" - народ ну Вы че издеваетесь надо мной???

 

Вы че когда пишете программы будете еще и В МАШИННЫЙ КОД ЗАЛАЗИТЬ??? Я знаю С#/C++, Object PASCAL, Basic (Bascom AVR), ASSEMBLER опыт работы с ARM, AVR от Atmel и PIC16... или PIC18... от MICROCHIP и даже INTEL8086(писал на ASSEMBLER). Мне важно, чтобы программа была правильно оптимизирована и правильно работала, как на компьютере, так и в МК. И когда я пишу программы я не заморачиваюсь там всякими линкерами, компиляторы за меня замарачиваются B) . Я знаю об этом только абстрактно, а не глубоко!!! Вот и спросил поэтому!!!

 

Zhevak спасибо за ссылки.

 

Но загворздка. Ссылка по линухе не работает(пишет, что книга не найдена)

 

У меня с тех. помощью атмела хорошие отношения. Составил запрос, обещали помочь и скинуть пошаговую инструкцию с описанием, но только не раньше след. недели. Как полочу обнародую специально для ВАС!!! ;) B) ;)

Спасибо, что таких как вы программистов все больше . Благодаря вам нет оснований беспокоиться о конкуренции и хорошем доходе. Теме имхо пора в кунсткамеру, если она есть на этом форуме. Ваш ответ просто шедевр, буду им если что работодателей пугать.

 

[

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но загворздка. Ссылка по линухе не работает(пишет, что книга не найдена)

Мои извинения!. Перед публикацией ссылок я не удостоверился в их валидности. (Тупо переписал со своих бумажных распечаток.)

 

Ну, я не знаю, наберите что ли в строке поиска "Редактор связей gnu ld" и выберите из полученного списка то, что Вам нравится. Там полно всего.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...