2013-07-23 5 views
0

Я пишу приложение с другом, который знает C#. Я хочу закодировать это в самом жестком для декомпиляции коде. Каковы различия в безопасности между C# и C++? (С точки зрения просмотра кода в скомпилированный исполняемый файл)C# vs C++ security

+0

«С точки зрения просмотра кода в скомпилированном исполняемом файле, C# .NET не поможет вам скрыть его. –

+1

Я не понимаю этого странного обаяния с запутывающими двоичными файлами. Для чего? Есть тонна проектов с открытым исходным кодом с комментариями, и все их авторы отказались от , и никто не хочет их забирать. Не то, чтобы они были плохими проектами, например, Gnome Do хорош, только никто не заинтересован. Поверьте, когда кто-то заинтересован в декомпиляции двоичного кода - ничто не остановит их. Но, по всей вероятности, никто даже не попытается. И если вы делаете это для безопасности через безвестность, есть намного лучшие способы. –

+2

Во-первых: этот вопрос касается не фактического кода и слишком расплывчато для StackOverflow; он должен быть закрыт. Во-вторых: если вы не хотите, чтобы пользователи могли декомпилировать ваш сверхсекретный удивительный код, который никто другой не мог придумать, ** не давайте двоичные файлы вашим клиентам в первую очередь **. Храните код на своем сервере и предоставляйте услугу. Тогда все, что вам нужно для защиты от серверных атак. Декомпиляция любого языка проста, и ** много людей могут читать машинный код **. Не секрет, как работает машинный код. –

ответ

4

Довольно короткие и просто объяснить, если предположить, релиз сборки без отладочной информации:

C/C++: Вы получите код на ассемблере и это все. Основываясь на знаниях об одной декомпиляции, это может быть довольно легко понять или просто невозможно. Здесь нет общего ответа, так как это также зависит от сложности самого кода (т. Е. «Что он на самом деле делает?»).

C#: Как и для всех .NET-языков, декомпиляция намного проще, потому что полученный двоичный код, по существу, содержит только код языка, который вы можете декомпилировать в читаемый код. Это не обязательно приведет к тому же самому коду, который у вас был на первом месте (имена переменных могут быть потеряны, комментариев нет, а оптимизация может затмить какой-то код), но в конце его гораздо легче понять и изменить.

Есть коды, которые можно использовать для обфускаторов, что делает чтение декомпилированным .NET-кодом более сложным, но в целом вы всегда должны предполагать, что всегда есть кто-то, кто сможет понять и перепроектировать ваш код, даже если ваш код просто черный коробка.

+1

есть также профессиональный набор безопасности, такой как SafeNet, например, для бинарного скрипта Scramble/crypt и DLL. – alexbuisson

+1

Не рекомендовал бы это: некоторые антивирусные программы могли бы указывать свой код/​​активность как подозрительные (пытаясь скрыть код), особенно если вы не можете быстро создать огромную репутацию (например, большая/популярная игра или что-то в этом роде для пользователей, принимающих вашу программу). Если вы беспокоитесь о пиратстве, попробуйте сделать справедливую цену, предложив что-то, за что люди любят платить. Если мы говорим о каком-то сервере/клиенте, дважды проверьте все серверные части и не просто доверяйте клиенту. – Mario

+0

И если я скомпилирую его в моно? – CappyT