2016-05-28 6 views
-1

Я написал программу на C++ и хочу ее защитить. Мне нужно, чтобы программа могла работать только на авторизованном компьютере, и я бы остановил программу, когда захочу. Я думал, что 2 решения, но я не знаю, хороши они или легко сломаны.Запуск программы C++ только на авторизованном компьютере

Первое решение:

local_mac_address = get_mac_address(); 
if(local_mac_address == "\* authorized addr */") 
    return true; 
else 
    return false; 

Второе решение: я загрузить HTML-страницу с помощью секретного кода на моем сайте.

page = download_page(url); 
if(page == "my_secret_code") 
    return true; 
else 
    return false; 

Если я изменю код источника HTML программа не запустится.

Что вы думаете об этих двух решениях? Являются ли они безопасными?

Edit: Исполняемые работает на компьютерах в офисе, так что я хочу, чтобы избежать этого, кто-то может скопировать его и использовать на компьютере theyr

+2

На самом деле это не вопрос на C++.Адреса Mac можно легко подделать, и веб-страницы могут быть перехвачены. Как вы объясните, почему вы хотите защитить программу? Например, каковы последствия, если они запускаются на компьютере, отличном от «разрешенного»? Сколько денег вы готовы заплатить, чтобы защитить свою программу? – Peter

+2

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

+0

Если вам стоит заплатить за вашу программу, люди сделают это, независимо от того, тратите ли вы усилия на защиту от копирования или нет. – user463035818

ответ

2

Я бы сказал, что оба из них легко обойти.

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

Второе может быть легко побеждено путем перехвата сетевого трафика и возврата ожидаемого ответа.

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

2

Они не являются безопасными вообще.

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

С помощью дизассемблера ваш маленький код можно легко удалить, и программа будет запущена при удалении кода.

Что вы можете, что вы можете шифруют исполняемый и имеете Decrypter на сайте start.Your даст Decrypter пароль, дает ему еще один пароль для encrpyt ехеса, когда это делается работает для дополнительной безопасности.

Если вы положили decrypter в начале или загрузили программу как данные (а не exec), у decrypter не будет проблем с запуском. Он вызывается всегда онлайн DRM.

2

Не тратьте много часов, пытаясь заставить вашу программу «защищаться». Это невозможно.

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