Я верю , что вы хотите, чтобы запретить пользователям декомпилировать вашу программу и полностью удалить форму лицензионного ключа ...
К сожалению, невозможно остановить это, поскольку программу можно запускать на обычном компьютере, ее можно декомпилировать, иначе процессор не сможет ее обработать.
Это означает, что было бы возможно удалить соответствующие инструкции для этого, а C # и VB легко декомпилировать - такие инструменты, как dotPeek get valid source code (выиграл не совпадает с оригиналом, но все же читается и работает как оригинал) одним щелчком мыши.
Имейте в виду, что даже в правильных коммерческих программах, разработанных целыми компаниями, есть эта проблема.
Итак, что вы могли бы "сделать"? Ну, у меня есть только два предложения ... но они не будут работать слишком хорошо.
Один только усложняет, а другому требуется постоянный доступ к Интернету.
запутывание
Запутывание существенно затрудняет чтение кода после декомпиляции, однако это не остановит людей от удаления формы, а лишь сделает ее немного сложнее.
Я опубликовал его как опцию, потому что он сделает код очень сбивающим с толку при перекомпиляции, и может быть полезно "защитить" его немного больше. Однако помните: «Это слабый слой защиты для слабого атакующего».
Обфускатор, который вы можете использовать: Eazfuscator.NET , эта отправленная мной веб-страница также содержит описание того, что она делает и как ее использовать - возможно, стоит взглянуть.
Онлайн серверы
Для этого требуется подключение к Интернету ... но это единственный другой вариант, который у вас есть - либо этот, либо ... ключ, способный избавиться от продукта .
По сути, в этой идее вы заставляете сервер выполнять всю работу, которую должно выполнить приложение, а затем возвращаете результат.
Представьте, что компьютер пользователя является сервером . Их «сервер» выполняет код, и поэтому код находится на их «сервере» (в противном случае ему нечего запускать), и все обрабатывается на их сервере. Теперь, если вы запустите его на на вашем сервере, весь код будет на вашем сервере, а ваш сервер вернет только результат , что означает они не могут получить доступ к процессу, который обеспечивает такой результат.
В конце концов, это будет означать, что приложение физически не сможет ничего сделать без лицензионного ключа , поскольку единственный способ обработки данных - через сервер и сервер. не будет обрабатывать данные без ключа продукта.
Единственным недостатком является то, что должен иметь подключение к Интернету , а если подключение к Интернету медленное - программа будет работать медленно.
Поскольку вы хотите знать, как это сделать в vb.net, взгляните на ASP.NET , может помочь, но он действительно предназначен для создания полноценного веб-сайта, а не просто для обработки нескольких задач. .
Я могу оставить на ваше усмотрение то, как вы хотели бы подойти к этой задаче, но вот один из способов сделать это:
Приведенный ниже код отправит «запрос» на определенный URL-адрес, а затем вернет результат. Таким образом, вы можете сделать так, чтобы при переходе по этому URL-адресу сервер обрабатывал данные (включая ключ продукта) и возвращает результат.
Dim request As System.Net.HttpWebRequest
Dim response As System.Net.HttpWebResponse
request = System.Net.HttpWebRequest.Create("https://URLHERE")
response = askforupdate.GetResponse
Dim result As System.IO.StreamReader = New System.IO.StreamReader(response.GetResponseStream)
result
теперь содержит String
- но имейте в виду, что вы можете использовать его практически для всего - даже для изображений! (Изображения просто New Bitmap(response.GetResponseStream)
)
Вы можете передавать данные на сервер с помощью Строка запроса , например:
my.website / processSomething? Лицензия = AAAAAAAA & sizeInput = 241 & somethingElse = asagsag
Но, на самом деле, это зависит от вас, как вы это делаете.
Извините, я не смог дать вам точное решение, но на самом деле его нет. Вы собираетесь в конечном итоге пожертвовать чем-либо.
Надеюсь, это было по крайней мере полезно и помогло вам понять, что на самом деле невозможно предотвратить взлом вашего программного обеспечения, не потеряв что-либо.