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

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

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

С помощью отладчика вы можете выполнить интерактивную сборку программы.
С помощью дизассемблера вы можете просмотреть сборку программы более подробно.
С декомпилятором вы можете превратить программу обратно в частичный исходный код, предполагая, что вы знаете, на что он был написан (который вы можете найти с помощью бесплатных инструментов, таких как 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 и некоторыми меньшими утилитами.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

http://www.cwsandbox.org/

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

НТН

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

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

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

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

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

Набор проводников может делать то, что вы хотите.

  • Очень быстро memcpy для обработки изображений?
  • mscorlib.dll & System.dll
  • Безопасно ли читать конец конца буфера на одной странице на x86 и x64?
  • Примеры предварительной выборки?
  • как загрузить все сборки из вашего каталога / bin
  • Инициализировать библиотеку при загрузке сборки
  • Как точно работает инструкция x86 LOOP?
  • Ошибки CocoaPods при сборке проекта
  • Динамически заменить содержимое метода C #?
  • Как я могу просмотреть MSIL / CIL, сгенерированный компилятором C #? Почему это называется сборкой?
  • Есть ли альтернатива Maven или порт для мира .NET?
  • Interesting Posts

    Как экспортировать учетные записи электронной почты Thunderbird?

    Как захватить ввод мягкой клавиатуры в режиме просмотра?

    Как объединить два lambda

    Указанный член типа не поддерживается в LINQ to Entities. Поддерживаются только инициализаторы, сущности и свойства навигации сущности

    Каково ключевое слово forSome в Scala?

    Как отключить новый интервал при щелчке правой кнопкой мыши в Google Chrome

    Как вернуть текст из Native (C ++) кода

    Восстановите поведение Alt-Tab, чтобы минимизировать приложение в очередной раз, переместив его в конец?

    Зачем мне обновлять свой IP-адрес каждый раз, когда я запускаю свой компьютер, прежде чем я смогу получить доступ в Интернет?

    Сделать определенную область растрового изображения прозрачной на ощупь

    Учетная запись администратора повреждена?

    Замена всех не-буквенно-цифровых символов пустыми строками

    Помещение нескольких строк на графе Excel

    Process Explorer: как проверить, какой процесс держит мой внешний диск?

    Могу ли я использовать оперативную память для ноутбуков на рабочем столе?

    Давайте будем гением компьютера.