2009-08-25 5 views
9

Я разработал часть программного обеспечения (с C и Python), которую я хочу защитить с помощью ключа, так что копирование и обратное проектирование становятся достаточно сложными. Мой ключ устройство поставляется с API, который обеспечивает этот:Какой код для написания прикрепленной системы для обеспечения лучшей безопасности?

  • Проверить наличие ключа
  • Проверьте правильность ключ
  • Записи в ячейку памяти в ключе
  • чтение из ячейки памяти в ключе и т.д. (I думаю, что остатки не так уж хороши ..)

Что я могу сделать в исходном коде, чтобы стало труднее взломать. Поставщик Dongle предположил, что я должен проверить правильное существование ключа в цикле или после события, или я должен использовать память ключа в эффективном способах. Но как? Я понятия не имею, как взломали трещины. Прошу пролить свет. Заранее спасибо.

P.S: Пожалуйста, не предлагайте обфускацию. Я уже это сделал.

+0

«P.S: Пожалуйста, не предлагайте обфускацию. Я уже это сделал». лол. –

ответ

10

Прежде всего, поймите, что ключ только обеспечит немного препятствия. Кто-то, кто знает, что они делают, просто удалит вызов на ключ и добавит «истину» для любого результата, который был вызван. Все расскажут вам об этом. Но есть блокпосты, которые вы можете добавить!

Я бы нашел ключевую часть вашего кода, что трудно или трудно узнать, что требует знания домена. Затем положите это знание на ключ. Одним из примеров этого может быть подпрограмма шейдеров. Шейдерные подпрограммы - это текстовые файлы, которые отправляются на графическую карту для достижения определенных эффектов; очень простой фильтр яркости/контрастности будет занимать менее 500 символов, и вы можете сохранить это в пользовательском пространстве на большинстве ключей. Затем вы помещаете эту информацию на ключ и используете только информацию из ключа, чтобы показывать изображения. Таким образом, если кто-то попытается просто удалить ваш ключ, все изображения в вашей программе будут затемнены. Это потребует, чтобы кто-то либо имел копию вашей программы, захватывая текстовый файл из ключа, а затем изменяя вашу программу, чтобы включить этот текстовый файл, а затем зная, что этот конкретный файл будет «правильным» способом отображения изображений. Особенности реализации зависят от платформы развертывания. Например, если вы запускаете программу в WPF, вы можете сохранить подпрограмму directx на свой ключ, а затем загрузить эту процедуру из ключа и применить эффект ко всем изображениям в вашем приложении. Затем взломщик должен иметь возможность перехватить эту процедуру directx и применить ее должным образом.

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

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

Какая часть контрольно-пропускного пункта принесет вам эти ухищрения? Реально, это зависит от популярности вашей программы. Чем популярнее ваша программа, тем более вероятно, что кто-то захочет ее взломать, и посвятит свое время тому, чтобы это сделать. В этом случае у вас может быть несколько дней, если вы особенно хорошо разбираетесь в кодировании ключа. Если ваша программа не так популярна (всего несколько сотен клиентов, скажем), то просто наличие ключа может быть достаточно сдерживающим, не делая ничего умного.

-1

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

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

5

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

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

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

Однако в системе, как описано, все равно просто эмулировать ключ, поэтому рано или поздно кто-то это сделает.

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

0

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

Я не знаю, используете ли вы HASP, но, к сожалению, dongles can be emulated.

3

Как увеличить защиту с помощью простого ключа?

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

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

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

Используйте несколько библиотек DLL/библиотек (если применимо) для вызова функций ключа. В случае взлома одной DLL, есть еще другие части программного обеспечения, которое использует функции из другой dll. Например, скопировав файл sdx.dll на print.dll, open.dll и другие имена, затем определите вызовы функций из каждой dll с разными именами.

Если вы используете файл dll для вызова функций ключа, свяжите его вместе с исполняемым файлом. Есть достаточно программ, способных это сделать; например, PEBundle.3

У меня есть эта статья о PRLOG и нашел ее весьма полезной для максимальной защиты с помощью простого ключа. Может быть, эта ссылка может помочь вам

Maximizing Protection with a Simple Dongle for your Software

0

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

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

http://www.microcosm.co.uk/dongles.php

0

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

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

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

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

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

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

0

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

Смежные вопросы