Являются ли приложения C ++ / CLI более безопасными, чем приложения C #? - PullRequest
1 голос
/ 14 октября 2011

Правда ли, что приложения, написанные на C ++ / CLI с переключателем /clr, более сложны для взломщиков, чем приложения C #? Генерирует ли C ++ / CLI приложения, которые в целом более сложны для разборки и взлома? Я знаю, что это зависит от того, как вы поступаете с кодом, но я спрашиваю об общем случае трудностей, с которыми сталкиваются взломщики.

Ответы [ 3 ]

4 голосов
/ 14 октября 2011

Если вы смешиваете нативный и управляемый код, да, это сложнее, потому что для чтения вашего кода им потребуется знать сборку x86.Все еще выполнимо, но сложнее, чем чистый управляемый код.

Если вы компилируете только управляемый код (что вы можете сделать в C ++ / CLI), он все скомпилирован в MSIL и может быть легко разобран с помощью .NetОтражатель.Управляемый код - все то же самое, когда его скомпилировали, довольно легко восстановить код C # (или F # и т. Д.) Из управляемого кода C ++ / CLI, который был скомпилирован до его формы MSIL.

Вы лучшене запутывайте ваш код, если вы хотите, чтобы его было сложнее взломать.

Dotfuscator Community Edition входит в комплект VS2010.Это изменит определенные имена классов, методов, полей и свойств на случайные символы.Более надежные функции включены в платные выпуски этих видов программного обеспечения, где это фактически изменило бы структуру программы, чтобы сделать ее еще более трудной для чтения.Существуют и другие методы предотвращения разборки, но их слишком много, чтобы перечислять их здесь.

Примечание

Это не обязательно делает ваш код безопасным.Например, вы пытаетесь наложить ограничения на использование приложения, которое вы написали.Возможно, вы используете файл в неясном месте и / или ключ реестра, чтобы отслеживать, сколько раз использовалась программа.Вы хотите предотвратить использование программы более 30 раз, прежде чем они ее купят.Я мог бы открыть Process Monitor, загрузить вашу программу, найти файл и раздел реестра, в котором вы отслеживаете эту информацию, и сбрасывать его каждый раз, когда я хочу обойти ваши ограничения.Это не требовало взлома.

Ваша безопасность настолько хороша, насколько вы ее делаете, декомпиляция - это еще не все.

4 голосов
/ 14 октября 2011

Это вполне возможно, но я хотел бы подчеркнуть, что «трудно разобрать» не означает «безопасный».

Никакой код, который вы передаете третьей стороне в любой форме, не должен считаться «безопасным». Все это можно взломать, и вы ничего не можете с этим поделать, поэтому вам лучше принять бизнес-модель, которая на нее не полагается.

2 голосов
/ 14 октября 2011

На самом деле C # должен быть немного безопаснее от переполнения буфера, которое можно использовать для ввода кода ассемблера в стек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...