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

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

Ответы [ 7 ]

5 голосов
/ 20 сентября 2008

Плагин Deblector для Reflector позволяет выполнять отладку прямо из Reflector.

4 голосов
/ 20 сентября 2008

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

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

3 голосов
/ 14 апреля 2010

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

3 голосов
/ 20 сентября 2008

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

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

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

1 голос
/ 20 сентября 2008

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

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

1 голос
/ 20 сентября 2008

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

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

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

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

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

0 голосов
/ 20 сентября 2008

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

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

Эта превосходная статья объясняет, как это сделать: http://www.codeproject.com/KB/dotnet/Debug_Framework_Classes.aspx

...