Если вы смешиваете нативный и управляемый код, да, это сложнее, потому что для чтения вашего кода им потребуется знать сборку x86.Все еще выполнимо, но сложнее, чем чистый управляемый код.
Если вы компилируете только управляемый код (что вы можете сделать в C ++ / CLI), он все скомпилирован в MSIL и может быть легко разобран с помощью .NetОтражатель.Управляемый код - все то же самое, когда его скомпилировали, довольно легко восстановить код C # (или F # и т. Д.) Из управляемого кода C ++ / CLI, который был скомпилирован до его формы MSIL.
Вы лучшене запутывайте ваш код, если вы хотите, чтобы его было сложнее взломать.
Dotfuscator Community Edition входит в комплект VS2010.Это изменит определенные имена классов, методов, полей и свойств на случайные символы.Более надежные функции включены в платные выпуски этих видов программного обеспечения, где это фактически изменило бы структуру программы, чтобы сделать ее еще более трудной для чтения.Существуют и другие методы предотвращения разборки, но их слишком много, чтобы перечислять их здесь.
Примечание
Это не обязательно делает ваш код безопасным.Например, вы пытаетесь наложить ограничения на использование приложения, которое вы написали.Возможно, вы используете файл в неясном месте и / или ключ реестра, чтобы отслеживать, сколько раз использовалась программа.Вы хотите предотвратить использование программы более 30 раз, прежде чем они ее купят.Я мог бы открыть Process Monitor, загрузить вашу программу, найти файл и раздел реестра, в котором вы отслеживаете эту информацию, и сбрасывать его каждый раз, когда я хочу обойти ваши ограничения.Это не требовало взлома.
Ваша безопасность настолько хороша, насколько вы ее делаете, декомпиляция - это еще не все.