Ziya1995 Ответов: 2

Преобразование файла .exe в читаемый исходный код.


Я читал о "преобразовании файла .exe в читаемый исходный код".
Неужели это правда? Он пишет "Да".
Теперь, когда я создаю приложение для продажи его исходного кода на рынке, что мешает покупателям превратить мое приложение .exe в читаемый исходный код?
Я имею в виду, что я показываю свое приложение бесплатно, и они могут купить его исходный код.
Разве они не могут просто превратить его в читаемый исходный код?
Я смотрю на продажи, и они покупают, но не могут ли они извлечь исходный код?

Я слышал об этом .Чистый рефлектор, люди пишут, что можно извлечь исходный код из A .Сетевое приложение, это правда?

И есть много других случаев, когда исходный код хранится серьезно.
Я запутался или это неправда?

Subramanyam Shankar

Рефлектор .net преобразует dll в код-это обратная инженерия преобразования языка ассемблера dll в код C#. ваша идея не будет работать, конвертируя файл .exe, как это поможет конечным пользователям. Преобразование DLL-файла в код C# помогает разработчикам понять этот код.

Ziee-M

Я просто хотел добавить, что все продукты Microsft были взломаны/перевернуты (VS, SQL...). Поэтому, где бы вы ни делали, если ваш продукт нацелен, он, скорее всего, будет отменен и взломан. Однако есть много зрелых потребителей, это не повлияет на ваши продажи так сильно, как вы думаете. Кроме того, если вы делаете регулярные обновления, вы, скорее всего, обескуражите их, так как им приходится делать весь процесс с нуля, а это непростая задача! Я помню, что есть статья, написанная службой поддержки microsoft об этой теме и о том, как они с ней справляются, но я не смог ее найти.

2 Ответов

Рейтинг:
9

manchanx

Помимо того, что Сергей написал и ответы на вопросы в своем комментарии:

Цитата:
Вы говорите .Net сборки, я говорю .Net приложения, то же самое?
.Net сборки, которые либо исполняемые файлы (.exe) или динамически подключаемые библиотеки (.DLL), которые используются исполняемые файлы. Обычно вы ссылаетесь на приложение, как и весь продукт со всеми деталями, которые он требует для запуска, которая включает .Net-Сборок.

Цитата:
Хорошо, давайте будем простыми, я сделал приложение на C# .Net, и теперь у меня есть файл .exe, который я могу использовать для запуска всего моего приложения.
Итак, может ли кто-нибудь преобразовать его в читаемый исходный код, а затем настроить его?
Теоретически-да. На практике это, очевидно, требует усилий, и вопрос заключается в том, будет ли кто-то достаточно мотивирован для этого. Предположим, что вы говорите о потенциальных потерях дохода при продаже приложения: подумайте, будет ли кто-то, кто взломает ваше приложение, платежеспособным клиентом, если он не сможет этого сделать. Скорее всего, нет. Однако есть меры, которые вы можете предпринять, чтобы увеличить количество усилий, необходимых для взлома вашего компьютера .Net-приложения: Обфускаторы[^] изменит сборки вашего приложения таким образом, что станет значительно труднее понять какой-либо смысл исходного кода, полученного в результате декомпиляции, некоторые даже предоставляют меры, чтобы сделать сам процесс декомпиляции намного сложнее.


Ziya1995

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

Но в случае с управляемым кодом, это легко, вы можете использовать программное обеспечение, как .Net Reflector позволяет получить читаемый исходный код, просто нажав на кнопку.

Так ведь?
Это мой последний вопрос.

[no name]

Существует проект Microsoft под названием ".Net Native", который компилируется непосредственно в машинный код вместо MSIL (MSIL - это "промежуточный язык" .Net, который позволяет декомпиляцию), но до сих пор он доступен только для приложений Магазина Windows. Они сказали, что, вероятно, сделают это и для других целевых платформ, но, к сожалению, новостей об этом уже давно не было.

но в случае с управляемым кодом, это легко, вы можете использовать программное обеспечение, как .Net Reflector позволяет получить читаемый исходный код, просто нажав на кнопку.

Да, если только собрание не было запутано. Тогда полученный исходный код будет читабельным, но трудным для понимания (посмотрите "обфускатор", и вы найдете объяснение этому). В зависимости от используемой техники обфускатора это может быть даже невозможно с помощью таких "стандартных инструментов", как .Net Reflector декомпилирует сборку, но у хакеров есть свои инструменты.

Ziya1995

Отлично, хорошо.

Рейтинг:
18

Sergey Alexandrovich Kryukov

И да, и нет. Нет, потому что вы совершенно сбиты с толку, и, формально, вопросы даже не имеют смысла. Вы не можете сказать "преобразование" и "извлечение исходного кода". Здесь нечего извлекать. Исходный код не содержится в модулях сборки. Это не "держится". Ты просто не понимаешь.

В то же время "превратить его в читаемый исходный код"? Да, легко. Любой пользователь может декомпилировать сборку .NET и получить исходный код, который может быть скомпилирован снова в ту же сборку. Читабельно? Да. Это, конечно, не тот же самый исходный код, который полностью теряется при компиляции, но обычно он вполне читаем. Используйте ILSpy с открытым исходным кодом, и вы увидите:
http://en.wikipedia.org/wiki/.NET_Reflector[^],
http://en.wikipedia.org/wiki/SharpDevelop[^],
http://ilspy.net[^],
https://github.com/icsharpcode/ILSpy[^].

Это возможно потому, что скомпилированные сборки "написаны" на CIL (не машинном языке), а код отражающий Пожалуйста, смотрите:
http://en.wikipedia.org/wiki/Intermediate_language[^],
http://en.wikipedia.org/wiki/Common_Intermediate_Language[^],
http://en.wikipedia.org/wiki/Reflection_%28computer_programming%29[^],
https://msdn.microsoft.com/en-us/library/f7ykdhsy%28v=vs.110%29.aspx[^].

—СА


Ziya1995

О чем вы говорите .Сетевые сборки?
Я про это и говорю .Нет .EXE-файл приложения.

Хорошо, давайте будем простыми, я сделал приложение на C# .Net, и теперь у меня есть файл .exe, который я могу использовать для запуска всего моего приложения.
Итак, может ли кто-нибудь преобразовать его в читаемый исходный код, а затем настроить его?

Я про это и говорю .Нет .EXE-файл приложения, нет c++, удалось .Сетевое приложение, возможно?

Sergey Alexandrovich Kryukov

Разве я только что не ответила? Ответ-да, это возможно, и, в зависимости от приложения, может быть легко модифицировано.
"Управляемый .Net приложение" совпадает ".Net-приложение". Даже если он написан на C++/CLI. ILSpy даст вам C# или VB.NET код.
—СА

Ziya1995

Да, хорошо.

Sergey Alexandrovich Kryukov

Теперь вы примете формальный ответ?
—СА

Ziya1995

Я принял другой ответ, но, как вы и хотели, да, я принял и ваш тоже.
На самом деле лучше иметь один принятый ответ, чтобы не смущать новичков.
Я получил все, что хотел, чтобы получить ответ.
Спасибо.

Sergey Alexandrovich Kryukov

Отличный. Мы всегда рады вам.
—СА