Как защитить .NET EXE от декомпиляции / растрескивания

StackOverflow https://stackoverflow.com//questions/11711446

  •  13-12-2019
  •  | 
  •  

Вопрос

Мне очень грустно, потому что несколько дней назад мы запустили наше программное обеспечение, разработанное в .NET 4.0 (настольное приложение). Через 3 дня его трещина была доступна в Интернете. Мы попытались защитить программное обеспечение от этого, но каким-то образом люди ушли, растрескивая его.

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

Теперь хакер заменил связь сервера с помощью «возврата TRUE;» заявление (я проверил, что с Telrik ConstsDeCompile). И он загрузил треснутое программное обеспечение в Интернете.

Теперь, следующие мои вопросы:

1- Как убедиться, что приложение .NET не будет треснуться?
2- Хакер теперь знает мой код, так как он сделал модификацию. Какие шаги я должен взять?
3- Я читаю в интернете о - комфорт. Но хакер знает мой код, что мне делать?
4- Любые другие советы, которые я могу использовать, чтобы избежать взломанного программного обеспечения?
5- Я не уверен, но может ли эти отражатели программы также декомпилировать app.config с чувствительными данными?

Это было полезно?

Решение

1- Как убедиться, что приложение .NET не будет треснуться?

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

2- Хакер теперь знает мой код, так как он сделал модификацию. Какие шаги я должен взять?

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

3- Я читаю в Интернете о - обфускатели. Но хакер знает мой код, что мне делать?

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

4- Любые другие советы Pro, которые я могу использовать, чтобы избежать взломанного программного обеспечения?

Единственная защита от копирования, которую я видел, чтобы удаленно задержать в течение любого периода времени, это то, что Ubisoft сделал с вероисполнением Ассасина: Братство. Они зашифрованы уровни с помощью игрового диска, и ему пришлось загрузить ключ дешифрования из Интернета, поскольку его необходимо (это сохранение бинарных данных из их подхода для рук). Но это не работало навсегда, в конечном итоге хакеры получили эти уровни дешифрованными, и он был полностью взломан. Этот подход - это то, что я видел, займет самое длинное время, чтобы обойти без законного участия (см. Точку 2 внизу)

5- Я не уверен, но может ли эти отражательские программы также декомпилировать app.config с чувствительными данными?

Все программное обеспечение Reflicle нужно сделать, это поискать раздел, который загружает app.config и прочитать то, что есть по умолчанию. Есть NO безопасное место для хранения информации на компьютере, который у вас нет полного контроля. Если он на компьютере, это можно прочитать. Если это можно будет прочитать, это может быть обратный спроектирован.


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

  1. Человек никогда не получает ваше приложение, он передается с сервера под вашим контролем, и они никогда не увидят двоичные. Единственное, что вы отправляете им, это информация, которую им нужно для вождения пользовательского интерфейса. Это подход, на котором работает все MMO. Люди могут обратить вспять инженер, что вы отправляете на пользовательский интерфейс, и имитируйте логику, которая продолжается на своих серверах, но они никогда не смогут сразу увидеть, что это делает, и если ваше программное обеспечение достаточно сложно, оно не может быть достаточным для нападающего воссоздать бокомый код сервера. Недостатком к такому подходу вам нужно будет принимать серверы для ваших пользователей, чтобы подключиться к подключению, это будет ценообразование повторений, вам понадобится способ повторного переворота. Часто этот метод называется «богатым клиентом» или «тонким клиентом» в зависимости от того, сколько обработки выполняется на стороне клиента и сколько обработки выполняется стороной сервера. Смотрите Глава 22 из " Руководство по архитектуре приложения Microsoft, 2-е издание ". В частности, я описываю то, что показано в Рисунок 4 и 5

  2. Вариант Seccond - это тот, кто вы продаете свое программное обеспечение, у них также подписать юридический контракт, чтобы не распространять программное обеспечение (а не EULA, фактический договор, который должен быть физически подписан клиентом). В этом контракте будут применяться крупные штрафы для человека, который протекает программное обеспечение, затем загадла свою программу с отпечатками пальцев, которые уникальны для человека, который покупает программное обеспечение, так что, когда программа утечка, вы можете увидеть, кто это сделал. (Это метод Hex-Rays поставщиков для их разряда IDA . Быстрый поиск Google не может появиться никаких треснутых версий, более 6.1, они находятся на 6.3 ). Этот метод не будет остановить пиратство, но он может отговорить копию, чтобы просочиться в первую очередь. Это также позволяет восстановить некоторые потерянные расходы, связанные с программой, протекающей в первую очередь. Одним из проблем является то, что вам нужно будет поставить много отпечатков пальцев, и им нужно будет быть тонким, если злоумышленник может получить два копии программы и может сравнить файлы Betw

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


Обновление : После пересмотра этого ответа ссылается на это на другой вопрос, я подумал о простом способе реализации решения № 2.

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

Другие советы

1: Вы не можете.Вы можете запутать, но единственный способ предотвращающий это: не дайте никому exe.Посмотрите, сколько игровых компаний тратят на это;Они тоже не решили.

2: запутывание поможет немного , хотя это гонка вооружений между обфускателями и де-пусканаторами

3: слишком поздно вернуться и отменить это, но запутанность немного замедлит их в будущем

5: app.config обычно очень читается;Вы не сильно вы можете сделать здесь;Шифрование будет замедлять только немного вниз, если ключи в вашем приложении и, следовательно, можно получить

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

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

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

ТОЛЬКО Как вы выиграете, что война - использовать коммерческие пакеты защиты программного обеспечения.

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

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

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

ура,

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top