C #, вероятно, не лучший выбор для приложения безопасности? - PullRequest
2 голосов
/ 10 января 2009

Я наткнулся на эту фразу в сети:

C #, вероятно, не лучший выбор для приложений системного уровня, таких как этот. Я считаю, что простой C ++ здесь намного лучше, так как вам нужно будет сделать множество низкоуровневых вызовов API.

Я искал программы безопасности, созданные на C #, такие как брандмауэр, родительский контроль, антивирус, антишпионское ПО и т. Д.

Итак, правда ли, что C #, вероятно, не лучший выбор для приложения безопасности?

[править]
Я исследовал программы безопасности c # и нашел 2 программы:
1) Keepass (http://keepass.info/compare.html) впечатляющий менеджер паролей, который мигрирует с c ++ на c # !!!
2) Home Again (http://www.codeplex.com/totty530) - анализатор пакетов, созданный с использованием c #
[/ Править]

Ответы [ 7 ]

9 голосов
/ 10 января 2009

Такие вещи, как брандмауэры, часто нуждаются в подключениях к средствам уровня ядра, которые (тривиально) не предоставляются управляемыми средами выполнения, такими как .NET. Вы можете перепрыгивать через обручи, чтобы использовать язык C # для подобных вещей, но тогда, ну, вы будете прыгать через обручи.

5 голосов
/ 10 января 2009

Ну, если вы работаете в безопасности, вы, вероятно, хотите пистолет. C ++ лучше, чем C #, но будьте осторожны - с C ++ гораздо проще выстрелить себе в ногу.

4 голосов
/ 10 января 2009

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

То же самое может быть верно для любых дополнительных платформ, которые вы используете с C ++, но также возможно написать код C ++ без каких-либо дополнительных платформ.

Ни один из способов не защищает вас от добавления небезопасного кода.

4 голосов
/ 10 января 2009

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

2 голосов
/ 12 января 2009

Согласен. Многие из функций, которые вы хотели бы вызвать, были бы функциями, которые вам нужно было бы P / Invoke из C #. Обратные вызовы из ОС в вашу программу на C # тоже не очень приятные, с такими вещами, как System.Runtime.InteropServices.CallingConvention.

Теперь, для таких вещей, как вышеупомянутые Менеджеры паролей, это может не иметь большого значения. Это действительно просто модная база данных с интеллектуальными функциями импорта / экспорта / хранения / преобразования. Тем не менее, было бы полезно, если бы они могли взаимодействовать с другими программами. Вы просто не можете внедрить C # DLL в случайные процессы.

1 голос
/ 26 ноября 2012

.Net приложений, из коробки, полностью обратимы к читаемому коду. (Попробуйте: http://www.reflector.net/) Только комментарии в коде потеряны! капот вашего приложения. С C / C ++ вам будет безопаснее, так как его немного сложнее перепроектировать. Но обфускаторы или упаковщики .Net для вашего приложения C / C ++ могут значительно усложнить процесс реверсирования ваших приложений. Следовательно, это никогда не невозможно. Но будьте осторожны. Некоторые обфускаторы .Net плохо обрабатывают сервисы SOAP WSDL в вашем коде и вызывают ошибки, просто запутывая ваш код!

1 голос
/ 10 января 2009

Может быть, вам стоит взглянуть на C ++ / CLI . Он будет предлагать удобства .NET, но предоставит низкоуровневый доступ, который вам может понадобиться в C ++.

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