C++ \\ DLL - Как предотвратить подделку DLL?

У меня есть DLL-файл, который я купил (без исходного кода), и я связываю его с моим приложением, просто используя "LoadLibrary("file.dll")", затем он импортирует функцию, которая получает уникальный идентификатор компьютер. Теперь предположим, что наш хакер обнаружил имя этой функции, и теперь он создает новый dll-файл с тем же именем и тем же именем функции. Его новый DLL-файл будет заменен (просто взяв его dll в каталог и заменив на мой), функция уникального идентификатора будет доступна, но ничего не возвращает. Так что теперь мое приложение получает пустой уникальный идентификатор, и хакер вышел из моих рук.

Есть идеи как это предотвратить? Мой проект запрограммирован на C++.

Заранее спасибо.

2 ответа

Вы можете попросить компанию, от которой вы получаете DLL, предоставить LIB этой DLL. Тогда вы можете статически ссылаться на эту LIB. При этом код библиотеки будет частью вашего кода и, следовательно, прозрачен для перехвата!

Другая возможность (в случае внешней DLL действительно необходима): вы можете попытаться убедить своего поставщика DLL экспортировать функцию НЕ по ИМЯ, а по Ординалу. Это ведет к безопасности по неизвестности. Это не помешает подключению или замене, но, по крайней мере, это не сделает экспортированную функцию очевидной для понимания. Как 73 (экспортируемая функция по номеру) вместо CreateMyFile (экспортируемая функция по имени).

Другие вопросы по тегам