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