1- Как убедиться, что приложение .Net не будет взломано?
Если компьютер может запустить ваш код + Хакер может запустить свой собственный код с более высоким уровнем привилегий, чем вы, ничто не может на 100% защитить ваше приложение от взлома. Даже если у них есть доступ только к исполняемому файлу, но не к целевой платформе, они все равно могут пройти и имитировать то, что будет делать целевая платформа, и выяснить, как осуществляется защита.
2- Хакер теперь знает мой код, так как он сделал модификацию. Какие шаги я должен предпринять?
Полностью перепишите часть аутентификации, чтобы им пришлось начинать с нуля, но они получат ее снова, вопрос только в том, сколько времени.
3- Читал в интернете про обфускаторы. Но хакер знает мой код, что мне делать?
Теперь, когда у них есть незапутанный код, джинн вырвался из бутылки. Вы мало что можете сделать, если только радикально не перепишете программное обеспечение, чтобы им пришлось начинать с нуля. Обфускатор не помешает решительному злоумышленнику, единственное, что может помешать, — это не допустить попадания бинарного файла в его руки.
4- Любые другие советы Pro, которые я могу использовать, чтобы избежать взлома программного обеспечения?
Единственная защита от копирования, которую я видел, которая удаленно задерживает на какой-либо период времени, — это то, что Ubisoft сделала с Assassin's Creed: Brotherhood. Они зашифровали свои уровни игровым диском, и по мере необходимости приходилось загружать ключ дешифрования из Интернета (это подход, позволяющий не допустить попадания двоичного файла в их руки). Но это не работало вечно, в конце концов хакерам удалось расшифровать эти уровни, и он был полностью взломан. Я видел, что этот подход требует больше всего времени, чтобы обойти его без юридического вмешательства (см. пункт 2 внизу).
5- Я не уверен, но могут ли эти программы-рефлекторы также декомпилировать App.Config с конфиденциальными данными?
Все, что нужно сделать программному обеспечению рефлектора, — это найти раздел, загружающий App.config, и прочитать значения по умолчанию. На компьютере, которым вы не обладаете полным контролем, нет безопасного места для хранения информации. Если он есть на компьютере, его можно прочитать. Если его можно прочитать, его можно реконструировать.
Единственное реальное решение, которое я вижу для предотвращения пиратства, — это один из двух вариантов.
Человек никогда не получит ваше приложение, оно передается с сервера, находящегося под вашим контролем, и он никогда не увидит двоичный файл. Единственное, что вы отправляете им, — это информация, необходимая для управления пользовательским интерфейсом. Это подход, над которым работают все ММО. Люди могут перепроектировать то, что вы отправляете в пользовательский интерфейс, и имитировать логику, которая происходит на ваших серверах, но они никогда не смогут напрямую увидеть, что это делает, и если ваше программное обеспечение достаточно сложное, злоумышленник может не получить плату. для воссоздания кода на стороне сервера. Недостатком этого подхода является то, что вам нужно будет размещать серверы для подключения ваших пользователей, это будут повторяющиеся расходы, вам понадобится способ повторного переворота. Часто этот метод называют «насыщенным клиентом» или «тонким клиентом» в зависимости от того, сколько обработки выполняется на стороне клиента и сколько обработки выполняется на стороне сервера. См. главу 22. из "Руководства по архитектуре приложений Microsoft, 2-е издание". В частности, я описываю то, что показано в рис. 4 и 5
Второй вариант заключается в том, чтобы тот, кому вы продаете свое программное обеспечение, также подписал юридический договор о нераспространении программного обеспечения (не лицензионное соглашение, фактический договор, который должен быть физически подписан клиентом). В этом контракте большие штрафы должны применяться к человеку, который сливает программное обеспечение, а затем пронизан вашей программой отпечатками пальцев, которые уникальны для человека, который покупает программное обеспечение, чтобы в случае утечки программы вы могли видеть, кто это сделал. (Этот метод поставщик Hex-Rays использует для своего дизассемблера IDA. Быстрый поиск в Google не смог найти взломанные версии новее 6.1, они находятся на 6.3). Этот метод не остановит пиратство, но в первую очередь может воспрепятствовать утечке копии. Это также позволяет вам возместить некоторые потери, связанные с утечкой программы. Одна из проблем заключается в том, что вам нужно будет поставить много отпечатков пальцев, и они должны быть тонкими, если злоумышленник может получить две копии программы и сравнить файлы между ними, он сможет сказать, что является идентифицирующей информацией. и просто кладут все, что хотят, чтобы они не могли сказать, от кого они это взяли. Единственный способ сделать это - добавить много отвлекающих факторов, которые нельзя просто удалить или рандомизировать, а также сделать идентификационный код некритичным для запуска программного обеспечения, если им не нужно работать, чтобы взломать его. они, скорее всего, оставят его.
Обновление: пересмотрев этот ответ, чтобы сослаться на него по другому вопросу, я подумал о простом способе реализации решения № 2.
Все, что вам нужно сделать, это запустить свой код через обфускатор и позволить ему переименовать ваши классы для каждого человека, которому вы продаете свое программное обеспечение (я все равно заставлю их подписать лицензионное соглашение, а не просто щелкнуть лицензионное соглашение, чтобы вы могли применить следующую часть) . Затем вы создаете базу данных сопоставления обфускации, когда вы видите утечку копии в Интернете, вам просто нужно найти один класс в любом месте проекта, найти его в своей базе данных, и вы будете знать, кто это просочил, и знаете, кто вам нужен обратиться за возмещением юридических убытков.
person
Scott Chamberlain
schedule
29.07.2012