Можно ли дизассемблировать исполняемые файлы с разными расширениями в один и тот же набор инструкций OpCode?

Это вопрос от кого-то, кто не разбирается в дизассемблировании и декомпиляции в целом, так что терпите меня. Мне любопытно узнать, есть ли расширения исполняемых файлов (например, перечисленные в http://pcsupport.about.com/od/tipstricks/a/execfileext.htm ) можно разобрать на ассемблер, чтобы затем анализировать шаблоны кодов операций в файлах.

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

Насколько это осуществимо?

РЕДАКТИРОВАТЬ: Пример. У меня есть файл .exe и файл .app. Если бы я дизассемблировал оба, мог бы я сравнить их по коду операции в одной и той же ОС? Если нет, то как насчет исполняемых файлов из той же ОС. Например, для всех исполняемых файлов в Windows, если я дизассемблирую оба, смогу ли я сравнить код операции для каждого?

EDIT2: Как обфускаторы повлияют на мои усилия?


person jeffrey    schedule 23.10.2014    source источник
comment
Что вы подразумеваете под декомпиляцией расширения? Расширение — это просто часть имени файла, подсказка, соглашение. По сути, это строка, начинающаяся с точки. Вы его не декомпилируете. Вы декомпилируете сам файл. И да, это возможно, существует множество доступных дизассемблеров.   -  person The Paramagnetic Croissant    schedule 23.10.2014
comment
Прошу прощения, я имел в виду дизассемблированный, а не декомпилированный. Я хотел сказать, что если у меня есть файл .exe и файл .app, могу ли я дизассемблировать оба в универсальный формат кода операции?   -  person jeffrey    schedule 23.10.2014


Ответы (1)


Короче говоря, нет.

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

Я не знаком с форматом .app, но похоже, что это какой-то архив, содержащий исполняемый код. Поэтому, если у вас есть исполняемый файл и приложение, предназначенные для одной и той же ISA, вы, вероятно, можете разобрать и сравнить.

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

person Antimony    schedule 24.10.2014
comment
Спасибо. Что касается запутывания, хотя это значительно усложнит оценку логики приложения, если вы просто проводите статический анализ между ними (классификация доброкачественных и вредоносных), запутывание не должно иметь большого значения? - person jeffrey; 24.10.2014
comment
Обфускация усложняет классификацию, если есть шанс, что доброкачественное программное обеспечение использует ту же обфускацию. Одна из многих причин, по которым вы не должны запутывать. - person Antimony; 24.10.2014