Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: шифрование .h
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
max_mart
Всем привет.

Народ подскажите, пожалуйста, как зашифровать библиотеку .h. Локбиты программы не подойдут, поскольку есть еще С код, который будит доступен для редактирования. Но вот секреты библиотеки h открывать не хочется. Среда разработки AVR studio 4.
Может в DLL как-то можно преобразовать?
zhevak
Цитата(max_mart @ Jun 3 2013, 17:35) *
Всем привет.

Народ подскажите, пожалуйста, как зашифровать библиотеку .h. Локбиты программы не подойдут, поскольку есть еще С код, который будит доступен для редактирования. Но вот секреты библиотеки h открывать не хочется. Среда разработки AVR studio 4.
Может в DLL как-то можно преобразовать?


[/grouch]
Уж который раз вижу, некоторые люди хэдерные (*.h) файлы называют библиотеками.
Вы где этому нахватались? Кто вас учит?
[grouch]

Я не знаю, прочтите еще раз что ли Кернигана и Ритчи...

Маленький ликбез -- файлы, имеющие расширение .dll -- это только файлы только Виндосовских динамических библиотек! В мире бывают еще и статические. На платформе Виндовз файлы статических библиотек имеют расширение .lib. В мире Линукса тоже есть и динамические, и статические библиотеки. Соответственно их файлы имеют суффиксы (а не расширения имен!) -- .so и .a. В мире микроконтроллеров тоже есть библиотеки. Преимущественно, статические. Многие микроконтроллеры не имеют физической возможности подгружать из вне динамические библиотеки. AVR -- точно не может! Поэтому библиотеки линкуются статически с основным кодом программы. Поэтому даже в контексте Шindows понятие "библиотека DLL" для микроконтроллера не применимо.

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

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

Эх, молодежь!
max_mart
"Эх, молодежь!" - согласен всего 25 лет пока. biggrin.gif

Почему обмолвися про DLL , то codeVision AVR и атмел студио 6 их юзает (в DLL хранится основной код, в хедере только имена используемых функций из DLL, из хедера потом они исп. в С коде). Может есть какие-нибудь другие способы по шифрованию кода?
Очень нужно плиз. хелп. Сдача проекта идет. Передаю только код, который нужен для редактирования. Ост ноухау - не хочу отдавать просто так.

zhevak
Эх, молодежь!

Макс, при всем уважении к Вам как будущему специалисту, как к будущему коллеге -- не за ту сиську дёргаете!

Во первых, любая защита вскрывается, а любая шифровка расшифровывается. Как говориться, это дело времени. А при современных мощных компах не составляет особого труда. Не пробиваемых защит не бывает в принципе!

Во вторых, микроконтроллер AVR -- это очень слабенький контроллер. Поэтому, вскрыть его зашифрованный каким-нибудь хитрожопым алгоритмом код -- вообще плёвое дело. В тысячи (если не более!) раз его вскрыть легче, чем комповую прогу. Причем, заметьте, если Вам удасться заствать комп будет "попотеть" надо расшифровкой, то представьте как будет сама AVR-ка вязнуть! AVR-ке прежде чем выполнять код, ей ведь тоже нужно расшифровать код. Кто это будет делать? Даже если учесть, что AVR-ка изначально знает алгоритм расшифровки, то найти в ее незашифрованном коде этот кусок (кусок кода по расшифровке) -- ну это пару вечеров посидеть.

В третьих. Вы думаете, что основная проблема в мире -- это придумать какое-то новое устройство (гаджет, алгоритм), написать программу? Не-ет, уважаемый! Это всё иллюзии инженеров и программистов! Самая большая проблема вмире -- найти потребителя Вашего товара и впарить ему изделие, заполучить его деньги законным путем. Для этого должен существовать рунок. На рынке должны присутствовать и производители, уже выпускающие это (или хотя бы подобное ему) изделие, и обязательно потребители, готовые за это изделие выложить свои бабки.

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

Как пример, могу привести случаи из своей практики. Внесение существенных изменений в изделие всегда настраживает покупателя, покупатель не спешит хвататься за новизну. Покупатель не хочет рисковать за свой счет. Его всегда устраивает старое проверенное решение. А если на рынок выводится абсолютно новое изделие -- ну это вообще проблема! Раскрутить рынок -- для этого нужно иметь и время и деньги. Пусть хоть какое распрекрасное изделие будет, но резко оно не пойдёт! А когда "пойдёт", то конкуренты уже выйдут сос воими изделиями. И они необязательно будут скопированы с чьего-либо. А поэтому плавно переходим к пункту "в четвртых".

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

Таким образом, в пятых, новое изделие можно продать пяти, ну или десяти потребителям. А дальше нужны реальные капиталовложения в рынок. Стало быть, даже если какой-нибудь Вася Пупкин украдет Ваш замечательный код, и, предположим, удачно сумет сделать копию Вашего изделия, то максимум, что он отнимет у вас -- пять или десять потребителей. Вы же планируете раскрутить свой бизнес ну никак не менее, чем на 100 изделий в месяц. Ведь так? Таким образом, Вася уведет у Вас пять покупателей, но Вася для Вас сформирует рынок. Сарафанное радио никто не отменял. Себестоимость изготовления 10 и 1000 изделий может отличаться до 3-5 раз. Чьи изделия будут пользоваться на рынке большим спросом -- Ваши или Васи Пупкина?

В шестых. Васю Пупкина, как конкурента, совсем не надо "убивать". Он должен жить долго и несчастливо. Он должен всегда плестись в хвосте Ваших новшеств. Вперед он не выпрыгнет, поскольку если бы у него был ум, то Ваш уникальный код (алгоритм) ему нафиг был бы не нужен. До него он и сам дошел бы без Вашей помощи. Однако, Вася настолько туп, что кроме как закопипастить ничего не умеет. Поэтому "его" изделия на рынке всегда будут отставать от Ваших. Более того, для массового производства изделия обязательно нужны разные приспособы, стенды для разных проверок, прошивок и т.д. Если не знаешь работу изделия, то ничего из этого не создашь. Значит, производство будет не массовое, а штучное. Значит, конечная цена будет высокой.

Я могу долго еще чесать языком на эту тему, но я вернусь к началу -- Вы не того боитесь. Вы не знаете, где притаилось зло и чего действительно надо опасаться! Посетите мир Линукса. Посмотрите -- кто-нибудь пытается что-то скрыть. Бывает такое, но очень редко-редко. Почему? Да потому что скрывать что-то это означает нести дополнительные потери. А если рынка как такового изначально нет, то зачем еще нужно тратиться. Какой в этом смысл? Посмотрите на мир Шindows. Что защищает фирма Майкрософт? Разве свой дырявый код от огласки и насмехательства? Нет, конечно! Разве какие-то уникальные алгоритмы? Тоже нет! Майкрософт защищает свой рынок. Она защищает экосистему Виндовса. Майкрософт кормится с этого рынка. Секретов в изготовлении операционных систем нет. Ядро Линукса ничуть не хуже, чем ядро Виндовса. (А по мне дак -- даже лучше! Но это спорный вопрос. Не хочу здесь разжигать холивар.) И тем не менее, очень многие разработчики продолжают сидеть на платформе Виндовса. Почему? Да потому, что перескачить с Виндовса на Линукс не так-то просто! Смена парадигмы, смена вероиспведания, смена одного мира на другой. Привычка -- вот оно то самое, что держит пользователей.

А Вы заморачиваетесь закрытием своего кода. От кого! Зачем? Что Вы от этого выиграете?

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

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

Вот когда вы наклонились к лесному ручью и хотите умыть лицо и снять пыл жаркого дня, Вы же не заботитесь о том, что вода переливается через край ваших ладоней? Если Вы начнете переживать за каждую каплю, которая не попала на лицо, то Вы не сможете умыться. Так вот и рынок -- он такой же полный денег и всего-всего. Научитесь черпать воду горстями и не переживать за потреи! Мир намного богаче, чем Вы думаете. Замыкание на мелочах не сделает Вас богатым. Богатыми людей делает искреннее стремление помочь другим людям. Только решая проблемы других людей, Вы становитесь богаче. И совсем не важно, какие потреи Вы при этом несете. Самое главное -- не творите зла другим людям. В этом заключается какая-то непостижимая (высшая, вселенская, трансценденткная -- что ли?) справедливость. Всё зачитывается, все дела и все помыслы. Поэтому Вам совсем не надо так сильно переживать о своих открытиях и наработках. Предоставьте эту обязанность "высшим силам".

Мне уже много лет. Кто знает, сколько я еще буду здесь на форуме, или вообще в этом мире. Но вот этим маленьким истинам меня учили мои учителя. Многих уже нет... Видимо, это и есть мой черед -- учить "жизни" молодое поколение.

Имеющий уши, да услышит.
Умеющий думать, да поймет!
max_mart
Спасибо огромное. А в чем-то Вы и правы. Это можно и обратить на свою сторону
zombi
to zhevak
Цитата
Васю Пупкина, как конкурента, совсем не надо "убивать". Он должен жить долго и несчастливо.

А если у этого Васи рынок раз в сто шире Вышего? И дерёт он не только Выши но и многие другие изделия. Этим и живёт.
И пока вы продадите всего десяток другой изделий, Вася скопирует и продаст мульён, причем по цене ниже вашей и будет очень очень очень несчастлив. biggrin.gif
Как поступить в таком случае?

А зачем тогда существуют биты защиты от копирования??? для глупой молодёжи?

Цитата
Предоставьте эту обязанность "высшим силам"

На Бога надейся, а сам не плошай.
zhevak
Эх, не хотел устраивать холивар...

Однако.
Цитата(zombi @ Jun 4 2013, 05:11) *
to zhevak

А если у этого Васи рынок раз в сто шире Вышего? И дерёт он не только Выши но и многие другие изделия. Этим и живёт.
И пока вы продадите всего десяток другой изделий, Вася скопирует и продаст мульён, причем по цене ниже вашей и будет очень очень очень несчастлив. biggrin.gif
Как поступить в таком случае?

Да никак! Ситуация надуманна.
Тот, у кого деньги и огромное влияние на рынок никогда не будет опускаться до уровня воровства чьих-то конкретных реализаций. Он будет "воровать" (если это слово вообще здесь приемлемо) идеи. Идею даже патентовать запрещено!

Попробую кратенько объяснить, почему конкретная реализация какого-то куска программы сильному производителю мало интересна. Для производства, а тем более для массового производства -- мало иметь кусочек кода или кусочек схемы. Никто даже пальцем не пощшевелиться ради этого know-how (ноу-хау). Для массового производства нужен комплект документации, а не вырванная из тетрадки страничка со схемай, или скопированный из микросхемы непонятный код, который _вроде_бы_ делает как раз то, что надо. Массовое производство, от которого Вы ждете подвоха никогда не пойдет на сомнительные шаги. Риск очень большой. Улавливаете суть?

На больших предприятиях совершенно иные проблемы. И поверьте, проблема найти чье-то изделие, чтобы скопировать его и начать выпускать его клон -- это надуманная проблема. А чье-то мелко-серийное производство будет просто не способно Вам как-то серьезно помешать. Как я уже говорил в предыдущем сообщении, даже если Ваш конкурент с чем-то "вашим" выйдет на рынок, то долго он не продержится. Но своим выходом он неизбежно поможет Вам раскрутить рынок. Рынок принадлежит не тому, кто копирует, а тому, кто способен шевелить мозгами. Ну украл я вашу прогу, вышел с ней на рынок. Дальше что? Отъел я на рынке себе какой-то кусочек. И что? А дальше пауза и ничего. Вы выпускаете следующую -- улучшенную версию, с исправленными ошибками и новыми фичами. А мне что прикажете делать? Вы понимаете, я просто не смогу нормально удержать рынок. Рынок по любому принадлежиит Вам. А если я такой умный, что могу сам писать проги и сам править баги, то мне Ваша программа нафиг не нужна! Как говориься, спасибо за идею!

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

Катать шарики для снеговоика нужно долго и упорно. Бысро слепить большой шар на пустом месте не получиться. Не верьте тем, кто говорит, что за полгода поднял фирму с нуля до миллинных оборотов. Эти сказки не про нас! В них очень много интересных деталей опущено. А у нас из-за этого создается ощущения какого-то чуда. Чуда не бывает. Бывает утаивание фактов.

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

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

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

-- Вась, а Вась! Петровы диван купили. Давай мы тоже себе диван купим?
-- Вась! А Сидоровы поставили себе противоугонную систему. А у нас какой-то тумблер под сидением...
-- Вась, а Вась. Ленка с Вовкой каждый вечер на великах в парке катаются...
-- Вась! А Тенька второго завели...

Понимаете о чем я? Я о том, что люди не думают своей головой, а замечают только то, что делает их окружение. Стадный образ. Бараны, не умеющие жить вне стада. Не умеют жить по простой причне -- не научились жить _своей_жизнью_. Поэтому живут чьей-то чужой, постоянно примеряя и натягивая на себя чужие жизненные ценности. Живут в зависти, в погоне за чужими идеями. Разве это жизнь? (Ну, для кого-то это нормальная жизнь, так как другой он и незнает.)

Отвечайте только за себя. Мало ли что делает толпа!

-- Живи своим умом, Пчёла! (с) из к/ф "Бригада"

Кто-то защищает свои проги. Да, ну и наздоровье! Это его бизнес, его специфика. А у Вас-то, лично у Вас, -- что, разве те же самые проблемы? Разве у Вас уже есть те, кто готов скопировать Ваш код и начать делатьна нем деньги? Откиньте в сторону догмы и реально посмотрите на мир. Он другой! Защищаться надо от конкретного врага, а не от гипотетического. А когда ваг будет четко идентифицирован, определиться и тип защиты достаточно точно. Може Вам нужно не фьюзы прожигать, а юридически защищаться? От кого Вы, лично Вы, защищаетесь? За себя отвечайте, а не показывайте, что другие тоже "ружья кирпичем чистят".

Цитата
На Бога надейся, а сам не плошай.

Всё правильно!
Богу -- богово, кесарю -- кесарево. Каждый должен выполнять _свою_ функцию.
Непомнящий Евгений
Если сильно надо защитить именно исходник, почитайте про обфускацию sm.gif

Еще вариант - поставлять вашу библиотеку в виде .h + объектник (так кстати сама атмел делает для своей библиотеки работы с сенсорными клавиатурами).
vitan
ТС! Не слушайте. Точнее, слушайте, но думайте.

Цитата(zhevak @ Jun 4 2013, 08:28) *
Откиньте в сторону догмы и реально посмотрите на мир. Он другой! Защищаться надо от конкретного врага, а не от гипотетического.

Да, вот этого-то и не хватает (посмотреть реально). Мир жесток. И защищаться надо от гипотетического врага. Т.е. защищаться от всех врагов. Потому что, если защита будет выстроена на одном направлении, то враг не будет ломиться через укрепления, а ударит на незащищенном участке.

Цитата(zhevak @ Jun 4 2013, 08:28) *
Ну украл я вашу прогу, вышел с ней на рынок. Дальше что?

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

ТС, прочитайте внимательно вот это:
Цитата
Мне уже много лет. Кто знает, сколько я еще буду здесь на форуме, или вообще в этом мире. Но вот этим маленьким истинам меня учили мои учителя. Многих уже нет... Видимо, это и есть мой черед -- учить "жизни" молодое поколение.

Как Вы думаете, почему zhevak смог дожить до седин и состояться в профессии? Потому что раздавал направо и налево идеи и наработки? Вряд ли. Скорее, он знал как правильно построить вокруг себя "инфраструктуру".
Не слушайте советов про высшие силы, природное предназначение и т.п. В природе доброта однозначно воспринимается как слабость, а слабые погибают.

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

А Вам, zhevak, желтая карточка за преподавание программы старших классов в начальной школе. sm.gif

По теме надо еще не забыть про стеганографию...
zombi
Цитата(zhevak @ Jun 4 2013, 07:28) *
Эх, не хотел устраивать холивар...
Взаимно...

Однако.
Цитата(zhevak @ Jun 4 2013, 07:28) *
Тот, у кого деньги и огромное влияние на рынок никогда не будет опускаться до уровня воровства чьих-то конкретных реализаций.
Если это аксиома, то почему на Китай не распостроняется?

Цитата(zhevak @ Jun 4 2013, 07:28) *
На больших предприятиях совершенно иные проблемы. И поверьте, проблема найти чье-то изделие, чтобы скопировать его и начать выпускать его клон -- это надуманная проблема.

Уже четыре моих изделия и фиг знает сколько изделий других производителей скопировано и успешно продаются большим китайским предприятием(ями).
Качество конечно ужасное, но оно работает и дешевле.
Создаётся впечатление что там просто сидят у ждут когда же кто то сделает чего нового.
И посколько наличие битов защиты им совершенно по барабану приходится в софте изголяться.
Что бы хотябы туда не лезли и не портили репутацию.
scifi
Цитата(max_mart @ Jun 3 2013, 15:35) *
Народ подскажите, пожалуйста, как зашифровать библиотеку .h. Локбиты программы не подойдут, поскольку есть еще С код, который будит доступен для редактирования. Но вот секреты библиотеки h открывать не хочется.

Существую способы разбиения программы на открытую и закрытую части. Но "шифрование библиотеки .h" - это не один из этих способов.
Если реально хотите это сделать, то расскажите поподробнее о своём проекте. Тогда старшие товарищи смогут подсказать, как реализовать упомянутое выше разбиение.
gte
Цитата(zombi @ Jun 4 2013, 11:32) *
Уже четыре моих изделия и фиг знает сколько изделий других производителей скопировано и успешно продаются большим китайским предприятием(ями).

Давайте пример, что бы было наглядно. Так как не очевидно, что это копия а не аналог.
zhevak
Я сказал свое мнение по вопросу. И оно тоже не на пустом месте.

Например, пару месяцев назад прислали машинные коды, попросили разобраться. Я глянул на код, оценил примерный объем работы, накинул еще 50% на "вдруг да что-нибудь пойдет не так" назвал сроки и сумму. Заказчик согласился и готов был сделать предоплату. Я отказался, так как пока деньги не получены есть стимул работать. Начл работать. В процессе стали появляться интересные подробности, я начал задавать вопросы Заказчику. В конце концов оказалось, что нужно было "вскрыть" граббер. (Это такое устройство, которое прослушивает эфир и фиксирует коды открытия/закрытия автомобилей.) В общем я отказался. По этическим соображениям. Сказал, что сегодня на ваши деньги я куплю авто, а завтра с помощью этого же граббера уведут мой автомобиль. В чем прикол? А если еще органы и начнут обратно раскручивать... ну и зачем мне такие дорогие деньги?

А надо ли напоминать, что в Инете периодически проскакивают объявления о вскрытии защищенных микроконтроллеров и вычичтывании из них кодов? Причем, цена от 2000 до 5000 долларов.

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

Если хотите, еще пример. У меня была запатентована схема пожарного извещателя, работающего в ультра-фиолетовом диапазоне. Татары скоприровали одею получения высокого напряжения, но не на MSP340, как это было реализовано у меня, а на ATMEGA16. Юридически все чисто. Но тем не менее -- факт. Дак что теперь, на рынок вообще не выходить что ли? Или все устроство заливать эпоксидкой?

Так что с моей точки зрения фигню, Вы несете, уважаемый! Полную фигню. Врага надо знать в лицо. И знать свою реальную цену на рынке. А всяких баек про промышленный шпионаж можно напридумывать много. Потом ими пугать наивных граждан.

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

Вы реально начните продавать свое мега-защищенное устройство и почувствуйте реальные проблемы рынка. Конечно, если 10-20 устройств в год -- это масштабы Вашего бизнеса... ну тогда я не прав. Тогда нам не о чем говорить. Мои извинения!

И всё-таки случился холивар. (По моей винее. Да.)
ARV
по-моему, достаточно увидеть работу устройства на AVR, чтобы потом в течение недели разработать полный аналог, а может, и даже лучший вариант sm.gif
zombi
Цитата(zhevak @ Jun 4 2013, 12:50) *
Хорошая защита стоит дороже, чем само устройство. Но любая защита вскрывается за определенное количество времени. И если ко времени вывода на рынок клона вашего устройства, Вы успеваете сделать более лучший вариант, то Ваши конкуренты будут работать себе в убыток.
Согласен на 100%. Так и работаем. Не дают расслабиться гады.

Цитата(zhevak @ Jun 4 2013, 12:50) *
Вы реально начните продавать свое мега-защищенное устройство и почувствуйте реальные проблемы рынка. Конечно, если 10-20 устройств в год -- это масштабы Вашего бизнеса... ну тогда я не прав. Тогда нам не о чем говорить. Мои извинения!
Если бы было 10-20 изделий в год я был бы рад чтобы скопировали и прорекламировали бесплатно.
Кстати, с одним из изделий именно так и произошло. biggrin.gif

Цитата(ARV @ Jun 4 2013, 13:07) *
по-моему, достаточно увидеть работу устройства на AVR, чтобы потом в течение недели разработать полный аналог, а может, и даже лучший вариант sm.gif
Эх, мне бы Ваши способности... Я Вам завидую.
max_mart
"Еще вариант - поставлять вашу библиотеку в виде .h + объектник (так кстати сама атмел делает для своей библиотеки работы с сенсорными клавиатурами)." - очень интересный вариант. Как его осуществить на практике. Можно подробнее пожалуйста.
Harbinger
Цитата(zhevak @ Jun 4 2013, 12:50) *
Или все устроство заливать эпоксидкой?

А эпоксидка разве проблема?
Фен, скальпель, шило и несколько часов нудной работы...
zhevak
Цитата(Harbinger @ Jun 5 2013, 08:32) *
А эпоксидка разве проблема?
Фен, скальпель, шило и несколько часов нудной работы...

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

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

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

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

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

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

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

Блин, похоже, говорю в пустоту. Не поймут меня...
Непомнящий Евгений
Цитата(max_mart @ Jun 4 2013, 20:00) *
"Еще вариант - поставлять вашу библиотеку в виде .h + объектник (так кстати сама атмел делает для своей библиотеки работы с сенсорными клавиатурами)." - очень интересный вариант. Как его осуществить на практике. Можно подробнее пожалуйста.


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

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

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

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

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

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

.h файл по опрелению - ЗАГОЛОВОК. Константы, определения и всё. Никакого кода там вообще быть не должно.
Разбейте свой код на 2 части - закрытую (откомпилированная библиотека) + открытые .h и .c. Это гораздо более естественнее, понятнее и проще в реализации, нежели какие-то шифровки исходника. А кто его будет расшифровывать? И как? И когда?
Я видел такое только в обычном компе, где есть масса способов вживить в конечную программу некие интерперетаторы и родственные тому вещи.
max_mart
Можно ссылку, пожалуйста, на доку "линкер"?
ARV
Цитата(max_mart @ Jun 6 2013, 01:13) *
Можно ссылку, пожалуйста, на доку "линкер"?
да у вас, батенька, все так запущено...
zhevak
Цитата(max_mart @ Jun 6 2013, 03:13) *
Можно ссылку, пожалуйста, на доку "линкер"?

Вообще описаний не очень много, но есть. Предлагаю начать с классики -- с 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

И не забывайте про Гугл!
XVR
ТС создал ноухау, но не знает, что такое .h, объектник и линкер 05.gif 'Не верю!' ( (с) Станиславский )
MrYuran
Цитата(max_mart @ Jun 6 2013, 01:13) *
Можно ссылку, пожалуйста, на доку "линкер"?

Например

А вообще, google knows

Цитата(XVR @ Jun 6 2013, 10:58) *
ТС создал ноухау, но не знает, что такое .h, объектник и линкер 05.gif 'Не верю!' ( (с) Станиславский )

Почему нет?
Не уверен, что все win-программеры хоть раз видели функцию WinMain()
kolobok0
Цитата(max_mart @ Jun 3 2013, 15:35) *
...Может в DLL как-то можно преобразовать?


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

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

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

Так вот. Немного перефразируя и дополняя zhevak скажу следующее:
Цена технической защиты _должна_быть_ меньше (желательно в несколько порядков) чем цена взлома. Т.е. делайте защиту играючи, без упорства. Либо не делайте вообще - тогда упор на приоритет по направлению, в скорости создания конечного продукта.
yes
еще один вариант -
в llvm была даже такая специальная фича для эмбедеров - С-бэкенд, которая предполагалась для архитектур в которых есть С компилер, а С++ компилера нету,
то есть если есть желание, то можно найти старый llvm или доставить к нему С-бэкенд.
в llvm есть и С++ бэкенд, но его назначение для меня мутно и возьмет ли сгенеренный исходник avr компилер - нет уверенности, но попробовать это проще

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

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

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

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

У меня с тех. помощью атмела хорошие отношения. Составил запрос, обещали помочь и скинуть пошаговую инструкцию с описанием, но только не раньше след. недели. Как полочу обнародую специально для ВАС!!! wink.gif cool.gif wink.gif
DASM
Цитата(max_mart @ Jun 7 2013, 19:39) *
"ТС создал ноухау, но не знает, что такое .h, объектник и линкер 05.gif 'Не верю!' ( (с) Станиславский )" - народ ну Вы че издеваетесь надо мной???

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

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

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

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

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

[
zhevak
Цитата(max_mart @ Jun 7 2013, 21:39) *
Но загворздка. Ссылка по линухе не работает(пишет, что книга не найдена)

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

Ну, я не знаю, наберите что ли в строке поиска "Редактор связей gnu ld" и выберите из полученного списка то, что Вам нравится. Там полно всего.
max_mart
DASM, ну а таким как Вы, побольше опыту в бизнесе, программировании и т.д и т.п., да и еще общения с иностранными коллегами. Мы не в каменном веке и не программируем Z80 или INTEL 8086. Сейчас очень много для этого полезных программ: ATMEL&AVR studio или IAR. И делается это все(компиляторы, PINBOARD 2 или STK и т.д. и т.п.) для того, чтобы облегчить разработку будущего шедевра, а не сидеть в каменном веке и слюни жевать rolleyes.gif

Zhevak спасибо

Ладно, давайте не будим ругаться и ссориться. Если оскорбил Вас, то извините.

У каждого электронщика свой подход и не важно через какой путь он пройдет. Главное чтобы результат удовлетворял разработчика!!!

Я все делаю по Закону Мерфи:
Если задача кажется легкой, то выполнить ее будит практически не возможно. Если она кажется сложной, то эти сложности будут появляться всегда на протяжении всей жизни данной работы.
И лишь только надежность и среднее между ними - залог успеха!!!
ar__systems
Цитата(zhevak @ Jun 3 2013, 23:28) *
Откиньте в сторону догмы и реально посмотрите на мир. Он другой! Защищаться надо от конкретного врага, а не от гипотетического. А когда ваг будет четко идентифицирован, определиться и тип защиты достаточно точно. Може Вам нужно не фьюзы прожигать, а юридически защищаться? От кого Вы, лично Вы, защищаетесь? За себя отвечайте, а не показывайте, что другие тоже "ружья кирпичем чистят".


Пустые слова ни о чем. Вы машину закрываете, когда оставляете на парковке в городе?

"От кого Вы, лично Вы, защищаетесь?" (с)

Цитата(max_mart @ Jun 7 2013, 10:39) *
"ТС создал ноухау, но не знает, что такое .h, объектник и линкер 05.gif 'Не верю!' ( (с) Станиславский )" - народ ну Вы че издеваетесь надо мной???

Вы че когда пишете программы будете еще и В МАШИННЫЙ КОД ЗАЛАЗИТЬ??? Я знаю С#/C++

Ну а как не издеваться. Есть большая разница между машинным кодом и .h. Если бы вы написали хоть одну программу на С, вы бы не задавали вопросов про .h.
zhevak
Цитата(ar__systems @ Jun 8 2013, 18:02) *
Пустые слова ни о чем. Вы машину закрываете, когда оставляете на парковке в городе?

Пустые слова ни о чем. Вы путаете теплое с мягким.

Украсть что-то из машины (или угнать ее) и украсть программу -- это разные вещи. Разные по _сути_.

Да, оба действия противозаконны, оба квалифицируются как кражи -- то есть присвоение чужого. Но на этом их общие черты, в общем-то, заканчиваются. Поэтому говорить о них, как об одном и том же явлении -- это по меньшей мере демонстрировать свою необразованность в данном вопросе. Ну, не отличает человек одно от другого, ну и ладно!
ar__systems
Цитата(zhevak @ Jun 8 2013, 07:34) *
Пустые слова ни о чем. Вы путаете теплое с мягким.

Украсть что-то из машины (или угнать ее) и украсть программу -- это разные вещи. Разные по _сути_.


Нет разницы в данном контексте. Речь идет об элементарных мерах предосторожности. Их проще тупо соблюдать, чем ломать голову о "А когда враг будет четко идентифицирован".
zhevak
Цитата(ar__systems @ Jun 8 2013, 19:12) *
Нет разницы в данном контексте. Речь идет об элементарных мерах предосторожности. Их проще тупо соблюдать, чем ломать голову о "А когда враг будет четко идентифицирован".

Хорошо, попробую объяснить.

Если Вы производите серийную продукцию, то Ваш бизнес уже защищен как минимум двумя преградами:
1. Вы поставляете продукцию на рынок и рынок знает Вас как поставщика этой продукции. Поэтому сначала будут обращаться к Вам, а уж потом к no-name поставщикам. Почему так дорого стоят изделия Sony и Toyota, и почему так мало просят за изделия неизвестных фирм? Пробиться на рынок со своим именем (со своей маркой) очень сложно. Не зря ведь существует такое явление франчайзинг. Иначе говоря, что бы продать свое изделие укравшему Вашу программу придется на каждой продаже терять. Если Вы на рынке будете продавать по себестоимости, то ему придется работать вообще в убыток. Понятно, что долго он не протянет.

2. Чтобы резко переориентировать массовое производство, а тем более создать новое направление, нужно сделать очень много затрат. Для этого нужны (понятно!) -- деньги, и нужно время. Таким образом, укравший Вашу прогу выйдет на рынок с опозданием и ослабленный. Ему бы сейчас самое время начать продавать и отбить свои затраты, но не тут-то было -- продать он может только по себестоимости или еще ниже.

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

Вы защищаете свой код, а я защищаю свой рынок -- ну и кто из нас в конечном счете выиграет?

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

А если Вы производите штучный товар, то тут еще сложнее продать копию. Заказчиков (потребителей) можно перечесть по пальцам. Все друг друга знают в лицо и величают по имени-отчеству. И если заказчик работает с Вами, и между Вами установились честные (партнерские отношения), то какой ему смысл менять поставщика? Даже если тот предложит на 10% дешевле?

Хороший пример был лет пять назад, когда ATMEL перестраивала свой бизнес. Цены на AVR-ки выросли в разы. На рынке появились STM8. Какой процент разработчиков перекинулись в другой лагерь? Конечно, Ваше изделие и скопированное с Вашего наверняка будут больше похожи друг на друга, чем AVR и STM8. Но Вы постарайтесь уловить суть: менять партнеров -- затратно!

А что касается очень больших денег, большого капитала, то с ним бороться бесполезно. Большой капитал либо вообще не заметит Вашего присутствия, и Вы просто будете оттеснены в сторону, либо "дружественно поглотит" Ваш бизнес. А будете сопротивляться, то произойдет что-нибудь типа рейдерского захвата. В любом случае, по соседству с очень большим бизнесом Вам не выжить. Просто отдавайте себе отчет в этом. А с соизмерим бизнесом нужно просто уметь договариваться и делить сферы влияния. И все будет нормально.

Мир -- не коммунальная квартира. Мир, на самом деле, бесконечен, научитесь смотреть не только себе под ноги, а -- шире и дальше.
haker_fox
QUOTE (max_mart @ Jun 8 2013, 02:23) *
Мы не в каменном веке и не программируем Z80 или INTEL 8086. Сейчас очень много для этого полезных программ: ATMEL&AVR studio или IAR. И делается это все(компиляторы, PINBOARD 2 или STK и т.д. и т.п.) для того, чтобы облегчить разработку будущего шедевра, а не сидеть в каменном веке и слюни жевать rolleyes.gif

bb-offtopic.gif
a14.gif Мать моя женщина... Я старше Вас всего на два года, но, видимо сижу в каменном веке. Либо Вы ещё не сталкивались с реальным проблемами в разработке. Никакой компилятор, ни какие-либо пинбоарды, девкиты и прочие инструменты не помогут Вам в создании "шедевра", если Вы называете фундаментальную работу "жеванием слюней, и сидением в каменном веке"...

QUOTE (hd44780 @ Jun 5 2013, 17:47) *
Пихать исходный код в .h - это плохо.

Иногда без этого не возможно rolleyes.gif Шаблоны можно только в хидерах писать.
ar__systems
Cильно много букв, и к чему это? Strawman argument. Вы сами с собой спорите. О целесообразности воровства прошивок я ничего не говорил.

Цитата(zhevak @ Jun 8 2013, 09:29) *
А мелкая шпана, которая украдет Ваш код -- ну что они могут вам сделать! Ну изготовят пару десятков устройств, ну продадут пять штук. И сдохнут.

Раскажите об этом изготовителям J-Link )))
zhevak
Цитата(ar__systems @ Jun 8 2013, 23:12) *
Раскажите об этом изготовителям J-Link )))

Задирать цену == плодить конкурентов.

Не хочу говорить, что жадность наказуема, в конце концов на извлечении прибыли держится вся коммерция. Скорее всего, производитель ошибся в своих оценках потребительского рынка, за что и был наказан. Не правильно был определена потребность изделия (грубо -- вместо 100000 экземпляров заложили 1000). Это отразилось на конечной цене изделия. Возможно, решили извлечь сверхприбыль. Часть бабла ушла так же на создание защиты или еще какой-нибудь ненужной конечному потребителю хрени.

Иначе говоря, пример еще раз доказывает, что не зная законов бизнеса можно с размаха влететь в стену.
DASM
По поводу J-Link скажу лишь, что его надо было вообще бесплатным делать. Не поднялся бы ARM до тотального господства везде где только можно и так быстро, не будь таких средств отладки. Да, сейчас я уже понимаю, что JTAG - крайнее средство, вообщем-то и не нужен он, пользую крайне редко - если плата не подает признаков жизни. Но большинство разработчиков по прежнему начинают знакомство с семейством с поиска железного JTAG отладичика.
haker_fox
QUOTE (DASM @ Jun 9 2013, 04:32) *
вообщем-то и не нужен он

Интересно, но иногда JTAG не способен помочь в отладке. В соседней теме я повествовал о некой проблеме, которая под отладчиком отсутствовала. Но при выключении J-Link'а баг (фича, особенность) возобновлялась. Вот так вот...(
max_mart
haker_fox. Ну и назовите мне хоть один пример такой глобальной проблемы, которая могла бы насулить мне. Сейчас у меня под рукой осциллограф FLUKE PORTABLE 200 Мгц 2-х лучевой, анализатор спектра, частотомер до 3 Ггц, STK600 с целой кучей присоед. плат., и т.д.

Но это сейчас. Примерно 5 лет назад самодельный 20 МГц 1-лучевой осциллограф, частоту мерил при помощи собранного девайса "делителя частоты на ТТЛ и КМОП", начинал разработки сначала с ИК канала, потом 433 МГц (делал сверх генератор по схеме Виноградова, длина антенны 16 см толщина провода 1 мм, настраивал через звуковую(Sound Forge) и при помощи свтодиода), ну а потом уже микросхемы пошли типа CC2500, CC1101, RFM..., и т.д.

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

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

Да кстати забыл добавить - анализатор спектра до 2.5 ГГц cool.gif
max_mart
Ну а Вы ar_systems. Очень интересный молодой человек!!!

1) Если бы я не знал С, то не умел бы работать с IAR, AVR&ATMEL studio

2) писать на ассемблере и потом компилировать в HEX или BIN смертельно долго и трудоемко. Так было с Z80 и INTEL 8086 примерно 8 лет назад в институте и так я начинал свой путь в изучении микропроцессорной логике.

Поэтому я знаю что такое машинный код - HEX или BIN и т.д. и С
toweroff
Цитата(max_mart @ Jun 10 2013, 21:12) *
Поэтому я знаю что такое машинный код - HEX или BIN и т.д. и С

поясните...
с форматом файла BIN - соглашусь, машинный код (хотя, это тоже... как еще посмотреть)
max_mart
Это я сказал как общее. А так все системы исчисления(восьмеричная, двоичная, десятичная, шестнадцатеричная) это для нашего понимания и представления. А так он в основном один.
haker_fox
QUOTE (max_mart @ Jun 11 2013, 00:05) *
анализатор спектра до 2.5 ГГц cool.gif

Ну с таким девайсом Вам действительно ничего уже не нужно a14.gif
toweroff
Цитата(max_mart @ Jun 12 2013, 20:54) *
Это я сказал как общее. А так все системы исчисления(восьмеричная, двоичная, десятичная, шестнадцатеричная) это для нашего понимания и представления. А так он в основном один.

кто один?
какая система счисления? Вы вообще о чем?
я спросил про логический формат файла.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.