Привет, %username%!
Декодирование IA-32 кода — задача архисложная. Чтобы в этом убедиться, можете обратиться к Intel Software Development Manual или к статьям, ранее написанным на хабре: Префиксы в системе команд IA-32, Правильно ли работает ваш дизассемблер?. Давайте посмотрим, как с этой задачей борется функционально точный полноплатформенный симулятор Wind River Simics, позволяющий создать высокопроизводительное виртуальное окружение, в котором любая электронная система, начиная с одной платы и заканчивая целыми многопроцессорными, многоядерными и даже многомашинными системами, может быть определена, разработана и запущена.
Большинство библиотек для декодирования IA-32 инструкций генерируют или используют таблицы соответствия между кодами операций и инструкциями. Пример использования данного подхода описан в статье Дизассемблер своими руками. Однако декодирование префиксов и аргументов обычно написано руками: libopcodes, metasm, beaengine, distorm. Данный подход обладает существенным недостатком — добавление поддержки новых наборов команд потребует большого количества ручной работы.
Существуют и другие способы создания декодеров, например с помощью языка GDSL. Данный подход является универсальным и позволяет создавать декодеры для любых архитектур.
Simics же использует совершенно другой не менее универсальный подход для работы с IA-32 инструкциями, названный раздельным декодированием. Также Simics имеет возможность использования внешних декодеров, но об этом немного позже.
Читать полностью »
Метка «дизассемблер»
Как справиться с IA-32 кодом или особенности декодера Simics
2014-03-18 в 5:25, admin, рубрики: x86, Блог компании Intel, виртуализация, дизассемблер, Процессоры, метки: x86, дизассемблерTribute to HIEW
2014-01-05 в 13:19, admin, рубрики: HIEW, вирусы, Вирусы (и антивирусы), дизассемблер, информационная безопасность, реверс-инжиниринг, метки: HIEW, Reversing, вирусы, дизассемблер, реверс-инжиниринг Навеяно древними воспоминаниями… Проходят года и десятилетия, сменяют друг друга названия операционных систем, но кое-что всё же остаётся неизменным. Среди всего многообразия околохакерского ПО меня всегда удивлял HIEW; непостижимым образом этой консольной программе удаётся бороться со временем и быть популярной даже сегодня. HIEW занял свою нишу и стал основным инструментом промышленного вирусного аналитика. Вам может показаться это странным и неудобным, но использовать HIEW для вирусного анализа — очень эффективно.
Читать полностью »
Правильно ли работает ваш дизассемблер?
2013-11-15 в 5:07, admin, рубрики: IA-32, LLVM, objdump, x86, x86_64, Блог компании Intel, дизассемблер, ненормальное программирование, префиксы, Процессоры, метки: IA-32, LLVM, objdump, x86, x86_64, дизассемблер, префиксыСегодня я хочу рассказать об одной интересной сложности декодирования/дизассемблирования IA-32 инструкций.
Перед прочтением этой статьи рекомендую обратиться в статье «Префиксы в системе команд IA-32», описывающей общую структуру IA-32 команды и существующие префиксы. В этой статье я подробнее расскажу про обязательные префиксы (англ. mandatory prefixes) и некоторые нюансы, связанные с ними.
Читать полностью »