Защищенное приложение от копирования с одного компьютера на другой - PullRequest
0 голосов
/ 24 февраля 2019

Я создал приложение JavaFX.Теперь я хотел бы защитить его от копирования на другие компьютеры.Более подробно я продаю приложение одному клиенту, и после установки этого приложения мне нужно обезопасить его от копирования с одного компьютера на другой.

Как я могу предотвратить копирование приложения кем-либо?

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Вы ищете термин DRM (« Управление цифровыми правами »), и это, по большей части, безнадежное дело.Невозможно внедрить нерушимый DRM, потому что все, что один компьютер может сделать, другой компьютер также может сделать, поэтому нет никакого способа предотвратить фальшивку кого-то "о, это все тот же компьютер".Можно предпринять такие вещи, как проверка аппаратного сходства и серийных номеров и т. Д., Но все они могут быть подделаны (по крайней мере, теоретически) и на практике также нарушат законные варианты использования, такие как замена неисправного жесткого диска.

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

Все, что делают запутывание и DRM, этосделать так, чтобы кто-нибудь успешно перепроектировал / создал пиратскую программу.Вы можете теоретически поднять сложность настолько, что, учитывая доступные в настоящее время инструменты, на Земле не найдется никого, кто мог бы реконструировать программное обеспечение настолько, чтобы удалить DRM за меньшее время, чем просто клонирование поведения программы., но вы не можете сделать это невозможным, и вы не можете помешать людям писать лучшие инструменты для обратного инжиниринга.


РЕДАКТИРОВАТЬ: DRM настолько бессмысленен, что некоторые люди ломают его просто ради забавы,и пиратскую версию сломанной DRM вместо выпуска того же программного обеспечения без DRM.Забавная история о безнадежности DRM, из статьи в Википедии, на которую мы ссылались выше (выделение добавлено):

[генеральный директор CD Projekt Red, Марцин] Ивински заявил о DRM, «это просто чрезмерно усложняющие вещиМы выпускаем игру. Она взломана через два часа, для Witcher 2 не было времени. Что меня действительно удивило, так это то, что пираты не использовали версию GOG [DRM-free] , которая не была Они взяли розничную версию SecuROM [коммерческая DRM], взломали ее и сказали «мы взломали» , в то время как есть небезопасная версия с одновременным выпуском 1020 *.думаю, что версия GOG будет той, что плавает вокруг. "

0 голосов
/ 24 февраля 2019

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

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

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

Ограничения:

  • , если вы не выполните установку самостоятельно, очень трудно помешать пользователю скопировать программу перед установкой.Это означает, что вам потребуется оперативный шаг во время установки, чтобы предотвратить множественную установку из одного и того же источника
  • Если пользователю по какой-либо причине необходимо изменить часть оборудования, которое вы отслеживаете, проверка не будет выполнена, покаПользователь должен иметь возможность использовать вашу программу => быть готовым предоставить поддержку по этому поводу.И будьте уверены, что если вы не попросите об этом явно, обычный пользователь не будет думать, что его программа больше не работает только потому, что внутренний сетевой интерфейс вышел из строя.

TL / DR: вы пытаетесь использовать технический способ решить юридическую проблему.Воздержитесь, если сможете.Я помню старые программы, которые требовали специального оборудования для параллельного порта.И это вызвало так много кошмаров, потому что внезапно пошло не так, что организация, на которую я работал, решила никогда больше не покупать программное обеспечение, требующее аппаратного ключа, даже если оно лучше или дешевле.Опыт пользователя действительно является критерием выбора, и эти @ # &! средства безопасности инструменты обеспечивают очень плохое взаимодействие с пользователем.

...