- Просмотр кода дизассемблирования в отладчике Visual Studio (C#, C++, Visual Basic, F#) View disassembly code in the Visual Studio debugger (C#, C++, Visual Basic, F#)
- Использование окна дизассемблирования Use the Disassembly window
- Можно ли дизассемблировать windows
- Разработчики Chrome дизассемблировали Windows?
- Re: Разработчики Chrome дизассемблировали Windows?
- Re: Разработчики Chrome дизассемблировали Windows?
- Re: Разработчики Chrome дизассемблировали Windows?
- Re: Разработчики Chrome дизассемблировали Windows?
- Re: Разработчики Chrome дизассемблировали Windows?
- Re: Разработчики Chrome дизассемблировали Windows?
- Re: Разработчики Chrome дизассемблировали Windows?
- Re: Разработчики Chrome дизассемблировали Windows?
- Re: Разработчики Chrome дизассемблировали Windows?
- Re: Разработчики Chrome дизассемблировали Windows?
- Re: Разработчики Chrome дизассемблировали Windows?
- Re: Разработчики Chrome дизассемблировали Windows?
- Re: Разработчики Chrome дизассемблировали Windows?
- Re: Разработчики Chrome дизассемблировали Windows?
- Re: Разработчики Chrome дизассемблировали Windows?
- Re: Разработчики Chrome дизассемблировали Windows?
- Re: Разработчики Chrome дизассемблировали Windows?
- Re: Разработчики Chrome дизассемблировали Windows?
- Re: Разработчики Chrome дизассемблировали Windows?
- Re: Разработчики Chrome дизассемблировали Windows?
- Re: Разработчики Chrome дизассемблировали Windows?
- Re: Разработчики Chrome дизассемблировали Windows?
- Re: Разработчики Chrome дизассемблировали Windows?
- Re: Разработчики Chrome дизассемблировали Windows?
- Re: Разработчики Chrome дизассемблировали Windows?
- Re: Разработчики Chrome дизассемблировали Windows?
- Re: Разработчики Chrome дизассемблировали Windows?
Просмотр кода дизассемблирования в отладчике Visual Studio (C#, C++, Visual Basic, F#) View disassembly code in the Visual Studio debugger (C#, C++, Visual Basic, F#)
В окне Дизассемблированный код отображается код сборки, соответствующий инструкциям, созданным компилятором. The Disassembly window shows assembly code corresponding to the instructions created by the compiler. При отладке управляемого кода эти инструкции ассемблера соответствуют присущему данному объекту коду, созданному компилятором JIT, а не промежуточному языку (MSIL), созданному компилятором Visual Studio. If you’re debugging managed code, these assembly instructions correspond to the native code created by the Just-in-Time (JIT) compiler, not the Microsoft intermediate language (MSIL) created by the Visual Studio compiler.
Чтобы воспользоваться всеми возможностями окна Дизассемблированный код, изучите основы программирования на языке ассемблера. To take full advantage of the Disassembly window, understand or learn the basics of assembly-language programming.
Эта возможность доступна, только если включена отладка на уровне адреса. This feature is only available if address-level debugging is enabled. Она недоступна для отладки скриптов и SQL. It isn’t available for script or SQL debugging.
В дополнение к инструкциям ассемблера в окне Дизассемблированный код могут отображаться следующие сведения: In addition to assembly instructions, the Disassembly window can show the following optional information:
Адреса в памяти, где располагается каждая из инструкций. Memory address where each instruction is located. Для собственных приложений это фактические адреса в памяти. For native applications, it is the actual memory address. Для кода на Visual Basic или C# это смещение относительно начала функции. For Visual Basic or C#, it’s an offset from the beginning of the function.
Исходный код, из которого получается код сборки. Source code from which the assembly code derives.
Байты кода, то есть байтовое представление реальных инструкций компьютера или языка MSIL. Code bytes, that is, the byte representations of the actual machine or MSIL instructions.
Символьные имена для адресов памяти. Symbol names for the memory addresses.
Номера строк, соответствующие исходному коду. Line numbers corresponding to the source code.
Инструкции на языке ассемблера состоят из мнемоник, представляющих собой сокращения имен инструкций, и символов, которые обозначают переменные, регистры и константы. Assembly-language instructions consist of mnemonics, which are abbreviations for instruction names, and symbols for variables, registers, and constants. Каждую инструкцию машинного кода представляет одна мнемоника ассемблера, за которой следует один или несколько необязательных символов. Each machine-language instruction is represented by one assembly-language mnemonic optionally followed by one or more symbols.
Код на ассемблере активно использует регистры процессора, а при использовании управляемого кода — регистры среды выполнения. Assembly code relies heavily on processor registers or, for managed code, common language runtime registers. Вы можете использовать окно Дизассемблированный код в сочетании с окном Регистры, которое позволяет изучить содержимое регистров. You can use the Disassembly window along with the Registers window, which allows you to examine register contents.
Чтобы просмотреть инструкции машинного кода в необработанной числовой форме, а не на языке ассемблера, используйте окно Память или выберите Байты кода в контекстном меню в окне Дизассемблированный код. To view machine-code instructions in their raw numeric form, rather than as assembly language, use the Memory window or select Code Bytes from the shortcut menu in the Disassembly window.
Использование окна дизассемблирования Use the Disassembly window
Чтобы включить окно Дизассемблированный код, выберите в разделе Сервис > Параметры > Отладка параметр Включить отладку на уровне адреса. To enable the Disassembly window, under Tools > Options > Debugging, select Enable address-level debugging.
Чтобы открыть окно Дизассемблированный код во время отладки, выберите Windows > Дизассемблированный код или нажмите сочетание клавиш ALT+8. To open the Disassembly window during debugging, select Windows > Disassembly or press Alt+8.
Отображаемые диалоговые окна и команды меню могут отличаться от описанных в справке в зависимости от текущих параметров или выпуска. The dialog boxes and menu commands you see might differ from those described in Help depending on your active settings or edition. Чтобы изменить параметры, выберите в меню Сервис пункт Импорт и экспорт параметров . To change your settings, choose Import and Export Settings on the Tools menu. Дополнительные сведения см. в разделе Сброс параметров. For more information, see Reset settings.
Чтобы включить или отключить вывод дополнительных сведений, щелкните правой кнопкой в окне Дизассемблированный код и установите или снимите в контекстном меню соответствующие флажки. To turn optional information on or off, right-click in the Disassembly window, and set or clear the desired options in the shortcut menu.
Желтая стрелка, расположенная в левом поле, отмечает текущую точку выполнения. A yellow arrow in the left margin marks the current execution point. Для собственного кода точка выполнения соответствует счетчику команд ЦП. For native code, the execution point corresponds to the CPU’s program counter. В этом расположении отображается следующая инструкция, которая будет выполнена в программе. This location shows the next instruction that will be executed in your program.
Можно ли дизассемблировать windows
В комментариях к статьям меня часто спрашивают где взять тот или иной инструмент, используемый в исследовании. По возможности я всегда указываю ссылки, но теперь настало время самых мощных инструментов, а именно дизассемблеров и декомпиляторов исполняемых файлов. Сразу уточню терминологию. Дизассемблирование — преобразование программы из двоичного кода к ее ассемблерному представлению. Декомпиляция — процесс воссоздания исходного кода программы.
Начнем с популярного нынче дотнета. Не будет преувеличением сказать, что самый мощный на сегодняшний день инструмент для потрошения приложений на .NET — это бесплатный проект dnSpy. Он включает в себя декомпилятор C# и Visual Basic .NET, отладчик, редактор сборки с подсветкой синтаксиса, HEX-редактор и еще множество инструментов. Русский язык в наличии. Самую свежую версию можно всегда скачать с офсайта.
IDA Pro (сокращение от Interactive DisAssembler) — один из моих основных инструментов для реверс-инжиниринга и разбора файлов. Это интерактивный дизассемблер и отладчик с поддержкой множества форматов исполняемых файлов для большого числа процессоров и операционных систем. Чтобы перечислить все его возможности потребуется целая книга. Но даже тут возможности IDA не заканчиваются. Плагин Hex-Rays для IDA Pro позволяет декомплировать ассемблерный листинг в более-менее человекопонятный псевдокод, по синтаксису похожий на C. В некоторых случаях это значительно облегчает работу. Просто так приобрести IDA Pro частным лицам практически невозможно, и дело не только в непомерной цене, а в том, что автор придерживается абсолютно неадекватной политики в плане продаж. К счастью, несколько последних версий этого замечательного дизассемблера, несмотря на все трудности, были успешно слиты в свободный доступ. Это IDA Pro Advanced 6.8, последняя доступная версия, которая работает с 32-битными системами, а также IDA Pro Advanced 7.0 и IDA Pro Advanced 7.2 для 64-битных систем. Если по каким-то причинам вы не можете использовать варез, то на офсайте есть бесплатные демо-версии с урезанным функционалом.
IDR (Interactive Delphi Reconstructor) — бесплатный декомпилятор исполняемых файлов и динамических библиотек. В отличие от IDA Pro, этот декомпилятор создан специально для разбора файлов, написанных на языке Delphi. Сейчас проект прекратил развитие, если какие изменения и вносятся, то исключительно косметические. Исходники для доработки открыты. Лично я пользуюсь стабильным комплектом Interactive Delphi Reconstructor 2.6.0.1.
Еще один специализированный декомпилятор — VB Decompiler Pro. Он работает с программами (EXE, DLL, OCX), написанными на Visual Basic. В случае, если приложение собрано в p-code, декомпилятор может разобрать его практически до исходного кода. Но даже если приложение скомпилировано в native code, в этом случае VB Decompiler анализирует и восстанавливает довольно много инструкций, чтобы насколько это возможно приблизить ассемблерный код к исходному. Это сильно упростит задачу анализа алгоритмов исследуемой программы. Честные граждане могут воспользоваться бесплатной Lite-версией с офсайта, для любителей полных версий софта есть релиз VB Decompiler Pro 10.0. Антивирусы могут ругаться на активатор, но тут вы уже сами решайте что делать.
Конечно, это далеко не полный список инструментов для дизассемблирования и декомпиляции, который есть в свободном доступе. Например, та же набирающая популярность Ghidra от АНБ может составить конкуренцию IDA Pro с Hex-Rays. Но я в этой статье перечислил лишь те программы, которыми пользуюсь сам и которые упоминаются в статьях на этом сайте.
Разработчики Chrome дизассемблировали Windows?
С самого момента выхода Chrome несколько недель назад любопытные программисты начали копаться в исходных кодах этого браузера. Он очень интересен по нескольким причинам. Во-первых, новая система обработки скриптов V8. Во-вторых, движок WebKit. В-третьих, весьма необычная технология запуска отдельных процессов. Именно эта последняя разработка очень удивила и заинтересовала многих разработчиков. Некоторые предполагают, что такое было бы невозможно без знания исходных кодов Windows, а ведь реверс-инжиниринг строго запрещен соглашением Windows EULA.
Re: Разработчики Chrome дизассемблировали Windows?
>Некоторые предполагают, что такое было бы невозможно без знания исходных кодов Windows, а ведь реверс-инжиниринг строго запрещен соглашением Windows EULA.
ты в серьез считаешь, что за определенную сумму мегкомягкие не поделятся секретами внутреннего устройства винды?
Re: Разработчики Chrome дизассемблировали Windows?
> реверс-инжиниринг строго запрещен соглашением Windows EULA.
Как так? Это мое дело, что делать с приобретенным товаром.
Re: Разработчики Chrome дизассемблировали Windows?
> ты в серьез считаешь, что за определенную сумму мегкомягкие не поделятся секретами внутреннего устройства винды?
а по ссылке пройти? там в комментах явно написано про дизассемблирование.
Re: Разработчики Chrome дизассемблировали Windows?
> Как так? Это мое дело, что делать с приобретенным товаром.
А кто тебе сказал, что платя за Windows ты её приобретаешь?
Re: Разработчики Chrome дизассемблировали Windows?
> Как так? Это мое дело, что делать с приобретенным товаром.
Все зависит от законодательства страны. В этой стране реверс-инжиниринг допускается при некоторых ограничениях. man ГК РФ (4). Соответственно MS EULA действует только в части, не противоречащей законодательству. Возможно, во всяких штатах MS EULA действует полностью, то есть реверс-инжиниринг запрещен совсем. Увы, там демократия, там страшно.
Алсо, забыл сказать, что ты приобрел не товар, а лицензию на использование ПО.
Re: Разработчики Chrome дизассемблировали Windows?
> Как так? Это мое дело, что делать с приобретенным товаром.
Понимаешь, раб, твое дело — ублажать господина Балмера чтобы он не бросил тебя и, когда тебе понадобится, продал тебе еще лицензий. Больше прав у тебя нет.
Re: Разработчики Chrome дизассемблировали Windows?
>>В-третьих, весьма необычная технология запуска отдельных процессов
хм, в Windows все так плохо, что приходится каким-то индусским способом запускать отдельные процессы? 8)
Re: Разработчики Chrome дизассемблировали Windows?
Конечно. В оффтопике есть кошерные и не кошерные процессы. Кошерные процессы могут быть запущенны только кошерные процессом и не могут быть запущенны по субботам.
Re: Разработчики Chrome дизассемблировали Windows?
А не напомнишь как дела обстоят в линуксе, где браузеры жрут память очень сильно.
Re: Разработчики Chrome дизассемблировали Windows?
Так всетаки государство определяет, что такое «право на использование»?
Купил я ноутбук, кто-то мне показал соглашение?
Как в ГК реверс-инжиниринг обозначен?
Re: Разработчики Chrome дизассемблировали Windows?
Просто, в Windows создание процесса в несколько раз медленне. На гигагерцовом силере 35—40 мс.
Re: Разработчики Chrome дизассемблировали Windows?
> Так всетаки государство определяет, что такое «право на использование»?
Тоесть. Мне интересно, существует в ГК пункт, который говорит, что при приобритении ПО, вы соглашаетесь с любыми условиями обозначенными в соглашении?
Re: Разработчики Chrome дизассемблировали Windows?
>Мне интересно, существует в ГК пункт, который говорит, что при приобритении ПО, вы соглашаетесь с любыми условиями обозначенными в соглашении?
Нет, и быть не может.
Re: Разработчики Chrome дизассемблировали Windows?
> Так всетаки государство определяет, что такое «право на использование»?
Мне лениво читать за тебя мануал. 😉 Открой 4 часть ГК — там таки все написано. Или здесь попытайся здесь поискать — тема не раз поднималась. Вот одно из мнений: http://www.linux.org.ru/jump-message.jsp?msgid=2498768&cid=2499168
> Купил я ноутбук, кто-то мне показал соглашение?
Понятия не имею.
> Как в ГК реверс-инжиниринг обозначен?
Там есть термин «декомпилирование».
Re: Разработчики Chrome дизассемблировали Windows?
> Некоторые предполагают, что такое было бы невозможно без знания исходных кодов Windows, а ведь реверс-инжиниринг строго запрещен соглашением Windows EULA.
Еулу конкчно не читал, но в таком свете довольно странно выглядит то, что довно вполне открыто многие дизассемблируют системные библиотеки Виндовс на предемет аудита и не только.
Например Eldad Eilam в книжке Secrets of Reverse Engineering для примера дизассемблирует несколько внутренних системных вызовов для работы со списками.
Re: Разработчики Chrome дизассемблировали Windows?
Все понял, спасибо.
Re: Разработчики Chrome дизассемблировали Windows?
>>А не напомнишь как дела обстоят в линуксе, где браузеры жрут память очень сильно.
оооо, подтягивается быдло 🙂 Красаффчег, не расскажешь мне где тут связь между памятью и процессами? А про съедаемую память — может вместо метанирования приведешь какие-нить вменяемые факты о «сильной» разнице в использовании памяти между браузерами в Linux и Windows?
Re: Разработчики Chrome дизассемблировали Windows?
> а ведь реверс-инжиниринг строго запрещен соглашением Windows EULA.
Но разрешён законодательством США. MS бреется.
Re: Разработчики Chrome дизассемблировали Windows?
к вопросу о декомпиляции также стоит смотреть Закон РФ «О правовой охране программ для электронных вычислительных машин и баз данных»
Re: Разработчики Chrome дизассемблировали Windows?
> А кто тебе сказал, что платя за Windows ты её приобретаешь?
В России — приобретаешь. Юридически уже было доказано 🙂 Причём на форумах микрософта.
Re: Разработчики Chrome дизассемблировали Windows?
Стоп-стоп-стоп. Он же под wine работает.
Re: Разработчики Chrome дизассемблировали Windows?
>весьма необычная технология запуска отдельных процессов
А потом в M$ эти функции просто выбросят и работать сие перестанет.
Re: Разработчики Chrome дизассемблировали Windows?
>а ведь реверс-инжиниринг строго запрещен соглашением Windows EULA.
Типа кто-то спрашивать будет 🙂 Особенно вирусописатели.
Re: Разработчики Chrome дизассемблировали Windows?
Раз Хром прекрасно работает в Wine, то либо какие-то особые способы запуска процессов не нужны, либо ничего «реверсинжинирнутого» там не юзается. ЕМНИП, Wine совершенно в этом смысле чист.
Re: Разработчики Chrome дизассемблировали Windows?
Наивный чукотский юноша.
Исходные коды за дополнительную плату и NDA, может получить любой покупатель n-го кол-ва лицензий.
Re: Разработчики Chrome дизассемблировали Windows?
>А кто тебе сказал, что платя за Windows ты её приобретаешь?
а если я не приобретал windows и не принимал EULA — я могу её дизассемлитровать?
а если я купил какой-нибудь ноут Торшиба с вендой и продавцы заявили что EULA попала туда случайно — я могу винду дизассемблировать? на неё эе по утверждением производителя бука EULA не распространяется.
Re: Разработчики Chrome дизассемблировали Windows?
Причем процесс не может быть кошерным если среди его родителей не было кошерных процессов вплоть до седьмого колена! Венда — это вам черти с пингвинами, это талмуд!