Возможно ли «декомпилировать» 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/

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

  • Ошибки CocoaPods при сборке проекта
  • Возможно ли одноуровневое многоязычное развертывание Windows Forms (ILMerge и спутниковые сборки / локализация)?
  • Как точно работает инструкция x86 LOOP?
  • Сделать муравей тихий без флага -q?
  • Инициализировать библиотеку при загрузке сборки
  • Почему медленная инструкция цикла? Не удалось ли Intel эффективно внедрить его?
  • Цикл с вызовом функции быстрее, чем пустой цикл
  • Visual Studio 2010 не создает перед запуском при изменении кода
  • Как ссылаться на сборки .NET с помощью PowerShell
  • _addcarry_u64 и _addcarryx_u64 с MSVC и ICC
  • Загрузка нескольких версий одной и той же сборки
  • Interesting Posts

    копировать файлы с аутентификацией в c #

    В PowerPoint существует ли способ создания печатной версии анимированного слайда?

    Удалите раздел OSX и добавьте остаток в раздел Windows 7

    Что такое неопределенная ссылка / неразрешенная ошибка внешнего символа и как ее исправить?

    Уникальная комбинация всех элементов из двух (или более) векторов

    Есть ли способ изменить экран блокировки без использования настроек ПК?

    Как мне обращаться с «пакетом ххх» не доступно (для R версии xyz)? Предупреждение?

    Отключить учетную запись Microsoft из моей локальной учетной записи

    Почему размер файла CBS.log составляет 20 ГБ

    GCC, строение и встроенный GLSL?

    Перечисление всех дополнительных компонентов

    Как настроить фокусировку на JTextField?

    В мокко-тестировании при вызове асинхронной функции, как избежать таймаута Ошибка: превышение тайм-аута в 2000 мс

    Вызывает ли C ++ деструкторы для глобальных и classовых переменных?

    Почему внезапно на внутреннем жестком диске возникает короткое замыкание при подключении на другом ПК?

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