Как убедиться, что C# обеспечивает целостность?(DLL не изменена)
У меня есть одно приложение C#. когда он выпускается до pakage, я использую IntelliLock, зашифровав его. и использовать цифровую подпись StartSL его (на самом деле я не знаю, как его использовать, можно ли использовать это проверить DLL?)
но я все еще волнуюсь по этому поводу: есть 1 или 2 dll use check use identity, и очень мало. Я волнуюсь, что это изменить и заменить тем же именем. тогда приложение не будет проверять личность.
Так что моя проблема в том, есть ли способ проверить, что dll не будет изменен после цифрового опробованного шага IntelliLock и startsl?
большое спасибо вам.
1 ответ
Я полагаю, что лучше всего было бы попытаться загрузить байты из DLL и вычислить контрольную сумму. Контрольная сумма представляет собой совокупное вычисление байтов в файле на основе таблицы предварительно вычисленных значений. Контрольная сумма может быть рассчитана с использованием библиотеки или вашей собственной реализации. Я прочитал бы содержимое файла и вычислил бы контрольную сумму.
Вам нужно будет проверить значение либо через Интернет, либо путем ссылки на значение, хранящееся локально. Один из способов обойти это и изменить ваш файл - запустить приложение, декомпилировать и выяснить, как вычисляется контрольная сумма, изменить библиотеку DLL, а затем изменить контрольную сумму, сохраненную локально для соответствия. Использование webAPI на сервере для проверки контрольной суммы может быть наиболее безопасным методом.
Некоторые используют MD5 в качестве контрольной суммы, как показано здесь: Рассчитать контрольную сумму MD5
И достаточно информации, чтобы вы могли начать здесь: Генерация контрольной суммы для файла