ребята. Я разрабатываю клиентское программное обеспечение для интернет-сообщества, к которому я принадлежу. Чтобы позволить мне написать клиент для этого, владельцы и веб-мастера требуют, чтобы мой код был зашифрован (а не просто запутан). Большая часть моего проекта написана на VB.NET (F3.5), а некоторые используют SQLite и libcrypt через C ++ / CLI по соображениям производительности (поэтому я не могу использовать / clr: safe). Другими словами, было бы бессмысленно писать код на C ++ / CLI, если бы использовался / clr: safe (я бы просто написал весь код на VB, что гораздо проще).
Если бы это был только проект VB, я просто написал бы загрузчик C ++, расшифровал код из хранилища в память и затем использовал Assembly.Load (), чтобы запустить его с помощью какого-либо открытого метода (например, Main Form) , Однако какая-то необъяснимая политика мешает мне делать это с непроверенным кодом C ++ / CLI. Я в растерянности, потому что я могу использовать любую «небезопасную» DLL без ограничений, используя обычный механизм загрузки DLL, но по какой-то причине я не могу сделать это с Assembly.Load (). Я не понимаю, почему это должно быть более безопасно (учитывая, что доступен другой вариант). Caspol.exe не помогает, и даже если это так, я не могу попросить всех в моем сообществе отключить защиту доступа на своих машинах. Непосредственная загрузка EXE или DLL из памяти не представляется осуществимой ( UPX делает это с обычными DLL, но не с .NET DLL).
Поэтому я спрашиваю следующее:
Ребята, вы можете придумать какой-нибудь метод, который я мог бы использовать для шифрования MISL-части C ++ / CLI DLL? (Я думаю, что код смешан с обычным машинным кодом x86).
Есть ли способ загрузить непроверенную .NET DLL из байтов, как я пытался сделать с Assembly.Load?
В качестве альтернативы, поскольку CreateProcess () и LoadLibrary () принимают только пути, хотя я мог бы написать временный образ EXE и запустить его из хранилища. Но мне нужно, чтобы изображение было недоступно для пользователя, поэтому запись его на диск была бы просто глупой; это должно быть что-то нестабильное, например частный виртуальный диск или что-то в этом роде. Что-нибудь приходит на ум? (Windows 2000 и выше).
Большое спасибо,
Guille