У меня есть приложение (exe), которое использует некоторые строго названные DLL. Если я правильно понимаю, никто не сможет заменить dll своими, подготовленными версиями, потому что они не будут подписаны. Никто не может заменить exe тоже, потому что он защищен подписанием манифеста.
Но что, если кто-то подготовит свой собственный exe-файл и изменит подпись в файле манифеста?
Если кто-то может переписать файл манифеста, заменить исполняемый файл одним из них по своему выбору и заменить любые dll, которые он хочет, на свои собственные, тогда все ставки сняты.
Имейте в виду, что единственным человеком, способным подписать манифест от вашего имени, должны быть вы. Если кто-то еще имеет доступ к вашему закрытому ключу, он может легко это сделать. Ваши пользователи должны знать, что они должны читать любую информацию, отображаемую на экране, в которой говорится Какое приложение они запускают и Кто подписал его. Безопасность зависит от самого слабого звена в цепочке, к сожалению, обычно это пользователь.
Думали ли вы о ClickOnce, когда приложение загружается из источника при каждом запуске, а не кэшируется на ПК пользователя. Это хотя бы частичное смягчение?