Можно ли "декомпилировать" Windows .exe? Или хотя бы посмотреть сборку?

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

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

15 ответов

Решение

С помощью отладчика вы можете интерактивно выполнять сборку программы.
С дизассемблером вы можете просмотреть сборку программы более подробно.
С помощью декомпилятора вы можете превратить программу обратно в частичный исходный код, предполагая, что вы знаете, в чем она написана (что вы можете узнать с помощью бесплатных инструментов, таких как PEiD - если программа упакована, вам придется сначала ее распаковать). ИЛИ Detect-it-Easy, если вы нигде не можете найти 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 (C#): бесплатно dotPeek, декомпилирует сборки.NET 1.0-4.5 в C#. Поддержка файлов.dll, .exe, .zip, .vsix, .nupkg и.winmd.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Хорошие новости. IDA Pro на самом деле бесплатно для своих старых версий: http://www.hex-rays.com/idapro/idadownfreeware.htm

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

Я бы сказал, что в 2019 году стоит попробовать Ghidra (https://ghidra-sre.org/). Это открытый исходный код (и бесплатный), и он обладает феноменальными возможностями анализа кода, включая возможность полностью декомпилировать код C.

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

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

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

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

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

Быстрый Google дает это: http://www.geocities.com/~sangcho/disasm.html

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

Я не могу поверить, что никто еще ничего не сказал об Immunity Debugger.

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

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

Бумеранг также стоит проверить.

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

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

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

Если у вас нет времени, отправьте вредоносное ПО на cwsandbox:

http://www.cwsandbox.org/

http://jon.oberheide.org/blog/2008/01/15/detecting-and-evading-cwsandbox/

НТН

Комплект Explorer может делать то, что вы хотите.

Другие вопросы по тегам