FE23  LOOCH  DISASM

ДИЗАССЕМБЛЕР
ДЛЯ ИССЛЕДОВАНИЯ ПРОГРАММ

(empty)
Главная Загрузка Инструкция Команды x86 Карта сайта

 

ТЕКУЩЕЕ СОСТОЯНИЕ РАЗРАБОТКИ

Новости сайта и программы



12 июня 2011

Справочник по командам процессоров x86

Сегодня выкладываю на сайт страницы справочника по командам процессоров x86. На сайте программы FE23 этот справочник будет в качестве приложения. Надеюсь, что полезного приложения.

Материалы для такого справочника стали у меня появляться по мере разработки дизассемблера. Вот и возникла идея оформить все материалы в виде HTML текстов и таблиц, чтобы удобнее было пользоваться. Однако, это самое "оформление" оказалось намного более трудоемким, чем сначала ожидалось. Работа весьма затянулась. И пока не все задуманное приготовлено. Не все страницы, которые хотелось бы видеть в подобном справочнике. Но и этих страниц уже вполне достаточно, чтобы можно было их показывать. А другие страницы, надеюсь, тоже вскоре подоспеют.

Пожалуй, такой справочник пригодится прежде всего тем людям, которые занимаются исследованием программ, а не тем, которые сами программируют на языке ассемблера. Хотя наверное, это одни и те же люди делают и то и другое.

Основные большие таблицы справочника

 
Все команды по алфавиту (кратко)
Все команды по алфавиту (подробно)
Первый байт кода операций
Второй байт кода операций


22 января 2011

История появления программы FE23

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

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

Пожалуй, воспроизведу здесь ту запись, которая была сделана 13 октября 2007 года. Копирую сюда этот кусок, в нем почти не нужно ничего поправлять:

  • (1) Когда-то, около 15 лет назад, я уже занимался подобной работой. Тогда у меня уже была программа FE23, дизассемблер для 16-разрядных кодов. Эта программа работала под DOS.
  • (2) Та моя программа FE23 была задумана как интерактивный дизассемблер. И именно так я называл для себя эту программу.
  • (3) Не так давно (примерно в 2006 году) я узнал о существовании программы IDA, которая также является интерактивным дизассемблером. И это явилось первым толчком, возбудило желание продолжить давно заброшенную работу над программой FE23.
  • (4) Недавно, в конце июня этого года, я надумал познакомиться с отладчиком OllyDbg. С помощью этой программы стал пробовать дизассемблировать коды и изучать чужие программы. При этом обнаружил, что в дизассемблере отладчика OllyDbg меня не все устраивает, что мне здесь не хватает еще очень важных качеств ... И я снова начал грезить своим собственным дизассемблером.
  • (5) На сайте OllyDbg оказались исходники дизассемблера, входящего в состав отладчика OllyDbg. Было разумно хотя бы познакомиться с этими исходниками, перед тем как начинать делать свой вариант дизассемблера. Для знакомства с чужими исходниками лучше всего запустить в работу эти исходники, то есть получить свой вариант программы из этих исходников и таким путем изучить работу этого алгоритма. Таким образом, мне потребовался учебный проект, в котором можно будет провести опробование этих исходников.
  • (6) Было сочтено целесообразным в качестве учебного проекта создать новый проект 23. Так как возможно, что этот учебный проект в дальнейшем вырастет в мой новый дизассемблер.

Итак, программа FE23 начиналась с четырех маленьких файлов на языке "C", взятых с сайта OllyDbg.   http://www.ollydbg.de/  

К этим файлам добавились еще несколько файлов, маленьких и больших, взятых из других моих проектов. Прежде всего, это довольно большая кухня вывода результатов в протокол. Затем нужно было писать новые куски кода, чтобы все это вместе соединить ...

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

  • Подробнее о лучах и о принципах выполнения дизасма по лучам рассказано на странице   "Основные понятия".

Было два пути для продолжения. Либо существенно переделывать исходный код дизассемблера OllyDbg, либо делать полностью свой дизассемблер. Был выбран второй путь.

Свой дизассемблер делался "с нуля". Основная таблица дизассемблера OllyDbg мне не понравилась. Так как там для каждой обрабатываемой инструкции выполняется поиск простым перебором по этой большой таблице. А это слишком медленно. Поэтому сразу стал делать все по-своему. Получилось только с третьей попытки, первые два варианта я забраковал. Но это уже отдельный разговор ...

В программе FE23 сохранена возможность использования дизассемблера OllyDbg в качестве вспомогательного, например, для отладки основного дизассемблера. И можно получать ассемблерный текст (асм. текст) через любой из двух дизассемблеров. Или даже печатать для каждой инструкции две строчки асм. текста через разные дизассемблеры.

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


15 мая 2010

Режим: 16 бит / 32 бита

Разговор про эту настройку дизасма мы пока отложим. Сделаем вид, что программа FE23 как будто бы может работать только в режиме "32 бита".

На самом деле в программе все сделано также и для режима "16 бит". Но пока должным образом не проверено. Ни один DOS-овский файл пока не был полностью пройден дизасмом.

А возможность переключения режима - "16 бит" или "32 бита" - имеется и четко работает.


20 апреля 2010

Дизассемблер программы FE23

Работа над проектом FE23 была начата в октябре 2007 года. По состоянию на апрель 2010 года в программе FE23 еще не сделано многое из того, что было задумано. Однако, программа уже давно дошла до такого уровня, когда ее пора показывать - "выпускать в свет". Несмотря на многие оставшиеся недоделки.

Основная "недоделка" в том, что дизассемблер "знает" еще не все команды процессора. В таблицы дизасма внесены еще не все команды даже из набора i386. Новые команды добавлялись в таблицы по мере того, как эти команды требовались для исследования конкретных файлов. В таблицах пока нет привилегированных команд, поскольку соответствующие программы пока ни разу не исследовались. И нет команд сопроцессора (работа с плавающей запятой). А тажке не попали пока в таблицы редко используемые команды.

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

Критерием пригодности дизассемблера для исследования данного конкретного файла может служить такая проверка - удается ли или нет выполнить полностью (пройти до конца) первый проход дизасма.




Все страницы инструкции

Основные понятия
Главное меню программы
Обзорный экран
Командный файл
Работа с проектами
 
Быстрый старт. Урок первый
Быстрый старт. Урок второй
Быстрый старт. Урок третий
 
Файлы, используемые в программе
Протокол работы и распечатки
Настройки дизасма и арифметика адресов

Приложение
Справочник по командам процессоров x86

Главная страница справочника x86



Главная Загрузка Инструкция Команды x86 Карта сайта


  Rambler's Top100
Copyright (C) FE23 Looch Disasm, 2010
File          - disa28.htm
File created  - 19 Apr 2010
Last modified - 12 Jun 2011
Hosted by uCoz