Насколько успешно работает ASP.NET, декомпилированная Reflector? - PullRequest
0 голосов
/ 17 сентября 2008

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

Потребовалось некоторое редактирование, например удалить объявления управления, когда они помещаются в сгенерированный файл, и конфликтовать с декомпилированным базовым классом, но ничего за несколько часов не вылечило.

Теперь мне просто любопытно, сколько других достигло такого успеха. На самом деле я хотел бы написать статью CodeProject об определении, если не автоматизации, процесса обратного инжиниринга.

Ответы [ 4 ]

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

Will: Из-за всего сахара компилятора, который существует в платформе .NET

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

1 голос
/ 13 декабря 2008

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

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

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

0 голосов
/ 13 декабря 2008

Если он был написан на .NET 1.1 или .NET 2.0, вы получите гораздо больший успех, чем что-либо, скомпилированное с помощью компиляторов VS 2008, главным образом из-за синтаксического suger, введенного новыми языковыми ревизиями (Lambda, анонимные классы и т. д.).

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

Будьте внимательны к переменным / методам, начинающимся с <>, я вижу это много (особенно при отражении .NET 3.5).

Худшее, что вы можете сделать, это экспортировать все это в VS, нажать кнопку compile, определить количество ошибок и сделать из этого вызов.

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

...