Возможно ли "декомпилировать" Windows.exe? Или, по крайней мере, рассмотреть Ассамблею?

Один из моих друзей загрузил некоторые вредоносные программы из Facebook, и мне любопытно посмотреть, что он делает, не заражая себя. Я знаю, что вы действительно не можете декомпилировать .exe, но можете ли я хотя бы просмотреть его в сборке или прикрепить отладчик?

Изменить, чтобы сказать, что это не исполняемый файл .NET, не заголовок CLI.

Ответ 1

С помощью отладчика вы можете выполнить интерактивную сборку программы.
С помощью дизассемблера вы можете более подробно просмотреть сборку программы.
С декомпилятором вы можете превратить программу обратно в частичный исходный код, предполагая, что вы знаете, на что она была написана (которую вы можете найти с помощью бесплатных инструментов, таких как PEiD - если программа упакована, вам придется сначала распаковать ее ИЛИ Detect-it- Легко, если вы не можете найти PEiD где угодно. У DIE есть сильное сообщество разработчиков на github в настоящее время).

Debuggers:

  • OllyDbg, бесплатный, отличный 32-разрядный отладчик, для которого вы можете найти множество пользовательских плагинов и скриптов, чтобы сделать это тем более полезно.
  • WinDbg, бесплатный, вполне способный отладчик от Microsoft. WinDbg особенно полезен для просмотра внутренних компонентов Windows, поскольку он знает больше о структурах данных, чем другие отладчики.
  • SoftICE, SICE для друзей. Коммерция и развитие прекратились в 2006 году. SoftICE - это хардкорный инструмент, который работает под операционной системой (и останавливает всю систему при вызове). SoftICE по-прежнему используется многими профессионалами, хотя может быть трудно получить и может не работать на каком-то оборудовании (или программном обеспечении - а именно, он не будет работать на Vista или NVIDIA gfx-картах).

Дизассемблеры:

  • IDA Pro (коммерческий) - верхняя строка дизассемблера/отладчика. Используется большинством специалистов, таких как аналитики вредоносных программ и т.д. Затраты на несколько долларов (существует бесплатная версия, но он довольно ограничен)
  • W32Dasm (бесплатно) - немного устарел, но выполняет свою работу. Я считаю, что W32Dasm в настоящее время является отказом, и есть множество созданных пользователем хаков, чтобы добавить некоторые очень полезные функции. Вам нужно будет оглянуться, чтобы найти лучшую версию.

Декомпиляторы:

  • Visual Basic: VB Decompiler, коммерческий, создает несколько идентифицируемый байт-код.
  • Delphi: DeDe, бесплатно, создает качественный исходный код.
  • C: HexRays, коммерческий, плагин для IDA Pro той же компании. Получает отличные результаты, но стоит большой доллар и не будет продаваться никому (или так я слышу).
  • .NET(С#): dotPeek, бесплатно, декомпилирует сборки .NET 1.0-4.5 на С#. Поддержка файлов .dll,.exe,.zip,.vsix,.nupkg и .winmd.

Некоторые связанные инструменты, которые могут пригодиться во всем, что вы делаете, - это редакторы ресурсов, такие как ResourceHacker (бесплатно) и хороший шестнадцатеричный редактор, такой как Hex Workshop (коммерческий).

Кроме того, если вы занимаетесь анализом вредоносных программ (или используете SICE), я всем сердцем предлагаю запустить все внутри виртуальной машины, а именно Рабочая станция VMware. В случае SICE он защитит вашу реальную систему от BSOD, а в случае вредоносного ПО защитит вашу реальную систему от целевой программы. Вы можете прочитать о анализе вредоносного ПО с помощью VMware здесь.

Лично я просматриваю Olly, WinDbg и W32Dasm и некоторые более мелкие утилиты.

Кроме того, помните, что дизассемблирование или даже отладка программ других людей, как правило, против EULA:

Ответ 2

psoul отличные ответы на ваш вопрос, поэтому я не буду повторять его хорошую работу, но я чувствую, что это поможет объяснить, почему это сразу является совершенно верным, но также ужасно глупым вопросом. В конце концов, это место для изучения, верно?

Современные компьютерные программы создаются с помощью серии преобразований, начиная с ввода читаемого человеком текстового текста (называемого "исходным кодом" ) и заканчивая машиночитаемым телом инструкций (называемым альтернативно "двоичным" ) или "машинный код" ).

То, как компьютер запускает набор инструкций машинного кода, в конечном счете очень прост. Каждое действие, которое может принимать процессор (например, чтение из памяти, добавление двух значений), представлено цифровым кодом. Если бы я сказал вам, что число 1 означает крик, а число 2 означает хихиканье, а затем поднятые карты с 1 или 2 на них, ожидающие, что вы будете кричать или хихикать соответственно, я буду использовать то, что по существу та же самая система, которую использует компьютер для работы.

Двоичный файл - это всего лишь набор этих кодов (обычно называемых "op-кодами" ) и информация ( "аргументы" ), в которой действуют операционные коды.

Теперь, язык ассемблера - это компьютерный язык, где каждое командное слово на языке представляет собой один операционный код на процессоре. Существует прямая трансляция 1:1 между командой языка ассемблера и операционным кодом процессора. Вот почему сборка кодирования для процессора x386 отличается от сборки кодирования для процессора ARM.

Разборка выполняется просто: программа считывает двоичный код (машинный код), заменяет операционные коды на их эквивалентные команды языка ассемблера и выводит результат в виде текстового файла. Важно это понимать; если ваш компьютер может читать двоичный файл, вы также можете прочитать двоичный файл, либо вручную, либо в таблице op-code в руке (ick), либо через дизассемблер.

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

(Не поймите меня неправильно, были попытки сделать это. Они работают так же, как DRM в файлах песен.)

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

Большинство профессиональных программистов не могут сидеть и читать ассемблер, не получая головной боли. Для любителя это просто не произойдет.

Во всяком случае, это несколько замаскированное объяснение, но я надеюсь, что это поможет. Каждый может свободно исправить любые искажения с моей стороны; это было время.;)

Ответ 3

Любой достойный отладчик может это сделать. Попробуйте OllyDbg. (edit: у которого отличный дизассемблер, который даже декодирует параметры для вызовов WinAPI!)

Ответ 5

Конечно, посмотрите IDA Pro. Они предлагают версию, чтобы вы могли попробовать.

Ответ 6

x64dbg - хороший отлаживатель с открытым исходным кодом, который активно поддерживается.

Ответ 7

Что вы хотите - это тип программного обеспечения, называемого "дизассемблер".

Быстрый google дает следующее: http://www.geocities.com/~sangcho/disasm.html

Ответ 8

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

Кроме того, использование такой виртуальной машины, как бесплатный сервер

Ответ 9

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

Ответ 10

Boomerang также можно проверить.

Ответ 11

Если вы хотите запустить программу, чтобы увидеть, что она делает, не заражая компьютер, используйте с виртуальной машиной, например VMWare или Microsoft VPC или программа, которая может изолировать программу, например SandboxIE

Ответ 13

Я не могу поверить, что никто не говорил о "Отладчик иммунитета" .

Immunity Debugger - мощный инструмент для написания эксплойтов, анализа вредоносных программ и обратного проектирования двоичных файлов. Первоначально он основывался на исходном коде Ollydbg 1.0, но с исправлением ошибки resounion. Он имеет хорошо поддерживаемый API-интерфейс Python для легкой расширяемости, поэтому вы можете писать свои сценарии python, чтобы помочь вам в анализе.

Кроме того, там хороший Питер из команды Corelan написал: mona.py, отличный инструмент btw.

Ответ 14

Вы можете использовать dotPeek, очень хорошо для декомпиляции exe файла. Это бесплатно.

https://www.jetbrains.com/decompiler/

Ответ 15

explorer suite может делать то, что вы хотите.