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

Кажется, вы могли бы использовать mashup Relector и Debugger, чтобы иметь возможность отлаживать любое приложение .NET, не имея исходного кода вообще. Это возможно? Кто-нибудь видел это раньше?

Ответ 1

Reflector Pro позволяет делать именно это!

Ответ 2

Deblector плагин для Reflector позволяет вам отлаживать прямо из Reflector.

Ответ 3

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

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

Ответ 4

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

Если вы хотите попробовать это начать с плагином, например FileDisassembler. В моем кратком опыте с этим я обнаружил, что были исправлены ошибки, но не плохо.

В библиотеке малого среднего размера этот метод должен быть очень выполнимым.

Ответ 5

Нет, вам нужен файл файла символов (.PDB), который принадлежит к приложению, которое вы пытаетесь отладить.

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

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

Помню, в какой-то момент появился плагин для отладки в Reflector, но я никогда не смог заставить его работать.

Настройка Visual Studio для отладки исходного кода .NET Framework
MSDN: файлы PDB

Ответ 6

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

Есть сценарии, где .Net Reflector ломается, но это сложно сделать - я знаю, потому что я активно пытался. Хорошие обфускаторы сделают код таким неуправляемым/нечитаемым (например, перегрузка функции "a", чтобы сделать тонну разных тиков на основе параметров), что просмотр источника вам не подходит, но вы все равно можете отлаживать - удачи, что происходит.

Ответ 7

Это возможно, но не очень практично в более сложных приложениях, особенно когда используются более старые структуры, такие как lambdas и инициализаторы (вы получаете целую кучу имен переменных, содержащих знаки доллара, такие как CS $4 $0000, которые должны быть исправлено вручную). Даже простые операторы switch могут вызвать очень уродливый код спагетти, полный операторов goto в Reflector.

У меня было больше удачи в MSIL и перекомпиляции в режиме отладки. Затем вы можете поместить точки останова в файлы IL и использовать все обычные функции отладчика в VS. Вначале MSIL выглядит немного страшно, но вы довольно быстро обманываете его.

В этой замечательной статье объясняется, как это сделать: http://www.codeproject.com/KB/dotnet/Debug_Framework_Classes.aspx