Предотвращение взлома библиотек ресурсов - PullRequest
3 голосов
/ 05 июня 2009

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

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

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

Ответы [ 8 ]

4 голосов
/ 05 июня 2009

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

Появился быстрый гугл:

Пошаговое руководство по цифровой подписи кода (хотя, похоже, для Office XP)

Предотвращение взлома DLL в приложениях Windows

UPDATE:

Также стоит подписать EXE.

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

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

1 голос
/ 05 июня 2009

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

0 голосов
/ 05 июня 2009

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

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

0 голосов
/ 05 июня 2009

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

0 голосов
/ 05 июня 2009

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

0 голосов
/ 05 июня 2009

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

0 голосов
/ 05 июня 2009

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

0 голосов
/ 05 июня 2009

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

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

Существует ряд бесплатных библиотек zip , которые могут охватывать распаковку и защиту паролем abovw

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...