2009-06-05 6 views
3

Я разрабатываю в C++/MFC и размещаю все ресурсы в отдельной DLL.Предотвращение взлома библиотек ресурсов

Я видел случаи, когда модифицируется DLL ресурс и продукт продается незаконно с другим именем, графика и т.д.

Как предотвратить DLL ресурсов из модифицируется/взломан?

+3

Если кто-то действительно желает взломать/изменить свой ресурс, вы не сможете его избежать. Я бы посоветовал просто принять тот факт, что если ваш продукт будет достаточно хорош, кто-то его взломает. Подумайте, как это, например, комплимент: если вы найдете какой-то ваш ресурс в другом месте, чем в ваших DLL, это будет означать, что ваша программа считается очень хорошей! Короче говоря, с моей точки зрения: время, которое вы потратите на защиту своей программы от воров, - это чистая потеря времени. –

+1

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

+0

@ Оливье, каждый общий замок двери можно выбрать за считанные минуты, даже секунды. Тем не менее, большинство людей используют их. – peterchen

ответ

-1

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

BOOL CMyApp::InitInstance() 
{ 
    CString TempName = TempFileName(); 
    Unzip("MyZippedResources.Zip",TempName,Password); 
    HINSTANCE hInst = LoadLibrary(TempName); 
} 

Есть целый ряд free zip libraries, которые могут покрыть распаковки и защиту паролем abovw

+0

Если кто-то серьезно относится к нарушению лицензии, я не думаю, что пароль, встроенный в dll, остановит их. Это ошибка DRM. –

+0

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

+0

Как указано в моем комментарии к сообщению Мэтью - чем сложнее ваша защита, тем веселее хакеры будут взломать ее. Да, вы можете помешать нескольким хаукам-хаукам преуспеть, но те нообы, скорее всего, справятся с более опытными (там много хакерских форумов). И опытные хакеры могут подумать, что это FUN, чтобы взломать ваш код. Так что да, вы мешаете некоторым людям взломать его, но вы увеличиваете вероятность того, что его в конечном итоге взломают (потому что это весело!) – Paulius

1

Если вы доверяете ваше приложение, которое вы могли бы просто вычислить хэш на библиотеки DLL ресурсов перед отправкой и отклонять DLL: s с другими хешами.

+0

Это ничего не решает.Кто-то может просто взломать код, проверяющий ресурсы. –

+0

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

+0

Если кто-то хочет незаконно скопировать вашу DLL, почему бы им не незаконно скопировать (и изменить) исполняемый файл? –

4

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

Быстрый Google оказался:

Digital Code Signing Step-by-Step Guide (Altho, похоже, это для Office XP)

Prevent DLL Tampering on Windows Apps

UPDATE:

Он также платит подписать EXE, а также.

Как указано в комментарии, вы не можете остановить кого-либо с достаточным навыком от вмешательства в ваше приложение. Все дело в управлении рисками. Сколько вам нужно «рисковать» кем-то, кто подделывает ваше приложение. Стоит ли время и силы поднимать планку так, чтобы вам требовался более высококвалифицированный человек, чтобы нравиться с вашим приложением? Это зависит от вас.

Я бы по крайней мере подписал все ваши файлы кода, которые вы выпускаете в любом случае. Он проверяет, что эти файлы поступают от вас и не были подделаны.

+0

За исключением того, что кто-то может просто взломать код подтверждения sig ... –

+1

Да, это правда. Все дело в управлении рисками, вы просто поднимаете планку (так сказать). Все, что вы делаете в программном обеспечении, может быть так или иначе нарушено. Если вы подпишете EXE, а затем вы поднимаете планку еще немного. Если у вас достаточно большая цель, независимо от того, что вы делаете, люди будут/могут взломать. –

0

Вы не можете. Такие вопросы нужно решать с помощью закона, а не кода. Также обратите внимание, что любое такое «решение», скорее всего, нарушит права пользователя на справедливое использование. Я часто играл с изменением ресурсов программы для развлечения (например, добавление Tux на страницу входа Windows). Я не собирался обманывать кого-либо и даже не раздавал результат.

+0

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

+1

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

+1

Да, да. Кроме того, если вы слишком сложны с вашей защитой - антивирусы и брандмауэры могут помешать вашему приложению полностью функционировать (они могут распознать код _protection_ как возможную угрозу). Кроме того, если вы продаете только несколько дорогостоящих лицензий, как получится приложение «hacker_»? Или вы думаете, что ваши клиенты, те, кто уже приобрел лицензии, будут продолжать и взломать его? – Paulius

0

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

0

Как все говорят, что вы можете только поднять планку, чтобы затруднить ее взломать, я больше не трачу на нее больше, чем предлагаю хеш. Альтернативный способ думать об этом (если вы его используете) позволяет сделать ваше программное обеспечение привлекательным в долгосрочной перспективе с обновлениями и т. Д. Таким образом, люди захотят получить учетную запись с вами, а не с взломанной версией.

0

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

0

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

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

+0

Shareware? Это вызывает вопрос, почему shareware существует бесплатно, но не раскрывает его исходный код? Кроме того, чем более известна коммерческая программа шифрования, которую вы используете, тем более вероятно, что кто-то взломал это программное обеспечение. Затем им нужно только воспроизвести шаги вашей программы, а не использовать технику с обратным преобразованием. Таким образом, возможно, что более безопасное решение выглядит менее безопасным. Особенно если этот хак распределяется. Коммерческие могут быть хорошими иногда, но избегать популярности. – TamusJRoyce