company_banner

Декомпилятор от JetBrains: релиз dotPeek 1.0

    imageДобрый день, хабровчане! Бесплатный декомпилятор и менеджер сборок от JetBrains ушел в народ – несколько дней назад на нашем сайте стал доступен официальный релиз dotPeek 1.0.

    dotPeek, о котором мы писали на Хабре около года назад, когда появились первые публичные сборки продукта, — это инструмент, сочетающий качественную декомпиляцию с развитой навигацией и поиском на манер ReSharper — нашего небезызвестного расширения для Visual Studio. Сегодня мы представляем вашему вниманию авторизованный перевод новости о выходе этого продукта.

    Основные возможности dotPeek 1.0 таковы:

    • Декомпиляция сборок .NET Framework 1.0-4.5 в эквивалентный код на C#. Поддерживаются библиотеки (.dll), исполняемые файлы (.exe), а также файлы метаданных Windows 8 (.winmd). Кроме того, dotPeek умеет искать сборки в каталогах, которые вы ему указываете, и открывает разного рода архивы: как .zip, так и родственные форматы .vsix и .nupkg.

    • Возможность подключения к серверам символов и кода, что позволяет загружать и показывать исходный код, когда его удается обнаружить. В конце концов, декомпиляция — хорошо, а исходники лучше, не правда ли? Если разрешить программе искать PDB-файлы или сервер кода, dotPeek сможет заполучить исходный код, соответствующий версиям просматриваемых сборок, и показать его в первозданном виде. По умолчанию dotPeek умеет обращаться к серверам Microsoft Reference Source Code Center и SymbolSource.org.

    image

    • Быстрый обзор структуры и иерархии кода. Это достигается, в частности, за счет позаимствованных из ReSharper функций File Structure для обзора структуры открытого файла и Type Hierarchy для анализа наследования типов. Кроме того, есть функция References Hierarchy, помогающая изучать связи между сборками.

    image

    • Многочисленные возможности поиска и навигации, взятые из ReSharper. Среди них — Go to Type (быстрый переход к конкретному типу), Go to Symbol (быстрый переход к любому символу в загруженных сборках), Go to File Member (обзор, фильтрация и переход к членам класса), а равно и весь набор контекстнозависимой навигации, в том числе переход от символа к его декрарациям, имплементациям, базовым символам и наследникам.

    image

    • Поиск вызовов — здесь, опять же, не обошлось без пришедшей из ReSharper функциональности поиска и подсветки вызовов.

    • Знакомые сочетания клавиш для большинства команд: предусмотрены две клавиатурные схемы, Visual Studio и IntelliJ IDEA, которые помогают пользователям ReSharper и других инструментов JetBrains чувствовать себя в привычной среде.

    Подробнее о возможностях dotPeek 1.0 можно узнать из обзора функциональности на сайте продукта. Кроме того, крайне рекомендуем к просмотру видео, снятое нашим евангелистом Джеймсом Коваксом и опубликованное на видеопортале jetbrains.tv

    Если вам интересно попробовать наш декомпилятор в боевых условиях, загрузить его можно здесь. Надеемся, вам понравится!
    JetBrains
    151.09
    Делаем эффективные инструменты для разработчиков
    Share post

    Comments 35

      0
      Супер! Было бы еще круто иметь il code edit как в reflector + reflexil
      +1
      А как у release dotPeek со скоростью работы?
      А то EAP очень сильно тормозил.

      Еще бы не плохо в статье упомянуть про беспланость…
        0
        Скачал, поставил.
        Стартует долговато, потом вроде нормально все.

        Про бесплатность сорри не заметил.

        И да, спасибо за инструмент.
          +1
          >>А как у release dotPeek со скоростью работы?
          Хуже чем у рефлектора.
          Но лучше чем было раньше.
          0
          Про бесплатность написано сразу после приветствия :)
            +2
            F#! F#! F#!
              +1
              Молодцы! Еще бы навигация работала когда решарпером декомпилируешь.
                0
                Вообще-то она должна работать. Можете объяснить подробнее, что вы делаете и чего при этом не происходит?
                  0
                  Прошу прощения, сейчас все работает. В предыдущих версиях точно не работало ctrl-f12 в декомпилированном файле
                –8
                А теперь запустите MonoDevelop и внимательно посмотрите на местный Object Browser, умевший показывать декомпилированный код методов и классов уже года 4 назад.
                  +3
                  Реквестирую экспорт в папку всех *.cs, *.csproj и *.sln И чтобы при этом имена переменных были деобфусцированы в приемлимый для компилятора вид (тот же Рефлектор лажает с переменными, компиляция часто не возможна)
                  +1
                  Скачал, открыл свой проект, посмотрел на кучу автогенеренных полей, помеченных соответствующими комментариями, закрыл.

                  С лямбдами у него все плохо, я так понял.
                    +3
                    C# вносит много синтаксического сахара, который на уровне IL реализуется простейшими операциями. Например, foreach на уровне байткода реализуется через итераторы. Поэтому чтобы декомпилировать такой код в красивый, нужны интеллектуальные методы анализа кода, а не просто перегон инструкций байткода в инструкции языка.
                      0
                      Если отключить флаг “Show compiler-generated code”, будет лучше?
                      –2
                      а как теперь зашишать программа c#?
                      Если напри мер написал коммерческую программу, а тут её декомпилировали, и всю зашиту взломали
                        0
                        Так же как и раньше, обфускаторами.
                          +2
                          Обфускация — это не защита.
                            0
                            Это оносительно простой способ минимально защитить код. А вообще, идеальной защиты не существует, все равно сломают если программа будет достаточно популярна. Эффективнее потратить это время на новые фичи, фикс багов и суппорт, тогда и продажи возрастут, и конкуренты будут всегда позади.
                          +2
                          Вынести логику на сервис, продавать доступ по абонентской плате. Остальные защиты не эффективны. Но если очень хочется, можно запаковать il код, зашифровать его и написать небольшой стартер на С, который распакует его и запустит через CLR. Примеры есть у рихтера.
                          0
                          Использовать обфускаторы.
                            0
                            В каких единицах измеряется размер шрифта в настройках? В пикселях?
                              0
                              В пунктах
                                0
                                В студии и любимом редакторе другое значение (11 пунктов), а в dotPeek мне пришлось поставить значение 14, чтобы получить похожий размер шрифта.
                              0
                              Хотелось бы, чтобы можно задавать стиль декомпилированного кода, что-то типа настроек в VS -> Options -> Text Editor -> C# -> Formatting
                              0
                              Скачал, посмотрел. Время второго запуска — 8 секунд (i5/RAID1). Окно поиска так и не сделали.

                              Юзабилити срач там — rsdn.ru/forum/jetbrains/4270531.flat.aspx
                                0
                                Текстового поиска? Которое Ctrl+F? Сделали.
                                  0
                                  Окна, которое не диалог и позволяет выбрать что ищешь после набора теста.
                                    0
                                    Не поняли… А можете показать пример из других тулзов?
                                      0
                                      Откройте поиск в рефлекторе (F3).

                                      Во-первых, поле ввода видно постоянно. В него можно дописать, исправить, и т.д.

                                      Во-вторых, результаты видны постоянно. Можно одним щелчком мыши переключаться между ними не набирая строку поиска заново. У dotPeek эти результаты почему-то видны в виде дерева(?!) и появляются, если нажать на кнопку Num +. '+' Вообще-то нужен в строке поиска для вложенных типов. В рефлекторе я могу набрать +spe и найти класс Environment.SpecialFolder. Дерево это не удобно, ведь в рефлекторе я могу таблицу отсортировать и по имени сборке и по имени пространства имён.

                                      В-третьих, можно уже после набора строки выбрать что именно ищешь нажатием кнопки (button) в интерфейсе.

                                      Интерфейс dotPeek в целом гораздо менее удобен и функционален.
                                +4
                                Спасибо что бесплатный!
                                  0
                                  Вот допилят с вашей помощью, и тогда…

                                Only users with full accounts can post comments. Log in, please.