2013-01-09 7 views
1

Я использую Microsoft Visual Studio 2012, и я хочу написать приложение на родном C++. Причина, почему я не хочу использовать Manged Code (.NET), потому что я не хочу, чтобы мое приложение было декомпилировано обратно в исходный код с такими инструментами, как .NET Reflector, но было бы неплохо, если бы я все еще мог использовать UI (CLR Windows Form) в моем приложении.Может ли этот проект на C++ декомпилироваться с такими инструментами, как .NET Reflector?

Но когда я добавляю UI (CLR формы Windows) к моему Win32 Project это сообщение выскакивает:

message

Означает ли это, что теперь все мой проект не будет скомпилирован как и будет возможность декомпилировать все мое приложение с такими инструментами, как .NET Reflector?

Или это будет «смешанный» проект (исходный код + управляемый код), и не будет возможности декомпилировать все приложение такими инструментами, как .NET Reflector, только определенная его часть, которая отвечает за пользовательский интерфейс?

P.S. Да, я знаю, что любое приложение может быть декомпилировано (!!!), но я спрашиваю об инструментах декомпиляции для приложений на базе .NET. С .NET Reflector вы можете «вернуть исходный код» из приложений .NET. Поэтому мой вопрос: возможно ли «вернуть исходный код» из этого приложения или будет каким-то «смешанным» кодом (manged + native), и не будет возможности декомпилировать его обратно к оригиналу исходный код с таким инструментом, как .NET Reflector?

+7

Никогда не забывайте, что если машина может запускать программу, кто-то может декомпилировать вашу программу. – Bestter

+0

Это будет смешанный проект. – slugonamission

+1

Если я не ошибаюсь, это говорит вам, что (если вы одобряете), он собирается скомпилировать ваш C++ как C++/CLI. IOW, если вы нажмете «Да», это будет делать именно то, чего вы пытаетесь избежать. –

ответ

3

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

Если «декомпиляция» означает «получить модифицируемый пользователем код, который семантически эквивалентен оригиналу и может быть скомпилирован обратно в исполняемую программу», что всегда возможно (даже путем изменения самого машинного кода непосредственно: есть люди что это понимает!). Как это понятно для какой большой аудитории это еще одна история.

В общем законе маркетинга говорится: «единственное, что невозможно скопировать, это тот, который никогда не продается!» Это вопрос, связанный с физической природой программного обеспечения. Не существует обходного пути от этого (кроме работы для другой вселенной)

+0

Да, я знаю, что любое приложение может быть декомпилировано, но я спрашиваю об инструментах декомпиляции для приложений на базе .NET. С .NET Reflector вы можете «вернуть исходный код» из приложений .NET. Поэтому мой вопрос: возможно ли «вернуть исходный код» из этого приложения или будет каким-то «смешанным» кодом (manged + native), и не будет возможности декомпилировать его обратно к оригиналу исходный код с таким инструментом, как .NET Reflector? – user1961297

+0

Управляемые части вашего приложения могут быть декомпилированы с помощью таких инструментов .NET, как Reflector. Собственные части вашего приложения не могут (но могут быть декомпилированы другими инструментами, хотя результат не так близок к исходному исходному коду) – jalf

+0

@jalf Так что скомпилированный и собственный код каким-то образом будет смешан и сохранен в одном файле (если я выберет для компиляции его в один EXE) и.NET Reflector сможет принимать только символы с управляемым кодом? Если это правда, это звучит хорошо для меня. – user1961297

 Смежные вопросы

  • Нет связанных вопросов^_^