Как защитить функционал DLL или получить, куда он был импортирован?

Я хотел бы ограничить, кто / что может использовать мою C ++ DLL. у меня есть .mq4 сценарий (или это может быть что-нибудь еще, я думаю), и я использую DLL#importфункции в нем.

Как я хочу сделать ограничение: в DLL есть статический путь к файлу, и в начале каждой функции я просто вычисляю новую контрольную сумму ( sha1 ) файла (на который указывает filepath) и сравните его с исходной контрольной суммой (также статической). Это хорошо, потому что если кто-то изменить .mq4, функция не будет работать.

Моя проблема: Если я просто оставлю оригинал .mq4 там, и я создаю новую, импортируя туда DLL, я могу использовать DLL без проблем, потому что в DLL я проверяю оригинал .mq4, (где указывает статический путь к файлу) не там, где я его использовал.

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

1

Решение

Основное решение: (без связи с дилеммой «Лицензия или нет Лицензия?»)

с целью узнать, кто импортировал / кто вызвал DLL-функцию, обычная #import Механики слишком легкие и в основном с открытым исходным кодом для потенциального злоумышленника.

Самая сильная, умная и едва ли параллельная защита, когда-либо виденная, occam язык параллельного выполнения (используется для транспортов), когда вызывающий и вызываемый абоненты имеют соглашение о протоколе связи или нет. Поэтому никто не может похитить и использовать удаленный сервис, просто отправив «незапрошенный» вызов.

Вторые ближайшие ( occam— подписчики законности) языки с поддержкой схемы на основе CSP — будь то Python, Go или другой CSP-совместимый механизм.


(пожизненные жертвы их собственных методов, выставленных публике)

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

MQL4 имеет возможность общаться с CSP- «безопасными» средами, поэтому, если у вас действительно есть такая необходимость, сделайте MQL4-подключен к удаленной стороне и обеспечивает безопасность CSP во избежание несанкционированного использования услуги.


Прокси-посредник

Если вы не хотите заходить так далеко, попробуйте связать свою C ++ DLL с прокси, что:

  • обеспечивает самопрезентацию для каждого звонка
  • обеспечивает идентификацию вызывающего абонента при подсчете / проверке ссылок на вызовы
  • предотвращает хищение фальшивым абонентом узла-посредника для получения целевого доступа к DLL
  • сохраняет посредника<-> целевые детали подтверждения связи скрыты со стороны MQL4
0

Другие решения

Других решений пока нет …

А ты уже прошел курс программирования? Супер скидка!
Прокачать скилл $$$
×