Как написать дизасемблер к новому процессору?

Тема в разделе "WASM.RESEARCH", создана пользователем snpik, 12 июл 2006.

  1. snpik

    snpik New Member

    Публикаций:
    0
    Регистрация:
    12 май 2006
    Сообщения:
    10
    Адрес:
    Ukraine
    Доброго времени суток!

    Хочу написать дизасемблер к новому процессору.
    Думаю это сделать через плагин к Ida (там уже есь куча всяких, с которыми я работал).
    Если описание "как писать плагин к Ida" я в каком-то объеме нашел/найду еще,
    то по "теории дизасемблеров" не могу ничего найти
    (в голове крутиться термин "двухпроходной дизасемблер" из статьи
    прочитанной несколько лет назад скорей из любопытства чем по необходимости - и все;
    я и ее не могу найти).

    Помогите пожалуйста сылками (может советами/материалами/пожеланиями успехов) по написанию дизасемблеров.

    Спасибо!
     
  2. Sergey_R

    Sergey_R Member

    Публикаций:
    0
    Регистрация:
    9 янв 2005
    Сообщения:
    138
    snpik
    Так все-таки - дизассемблер или плагин к IDA? Если предполагается работать с IDA, то почему бы не сделать это не как плагин, а воспользоваться возможностиями самой IDA и не написать под нее соответствующий процессорный модуль. Посмотри SDK к IDA. Там в директории module есть куча исходников под разные процессоры.
    Собственно же дизассемблер - это ОЧЕНЬ большое дело...

    Ну а пожелания успеха, то это всенепременно! :о)
     
  3. snpik

    snpik New Member

    Публикаций:
    0
    Регистрация:
    12 май 2006
    Сообщения:
    10
    Адрес:
    Ukraine
    Sergey_R
    Спасибо, я собственно это и имел ввиду. Признаю, что это разные вещи, прошу прощения за то что ввел в заблуждение и спасибо за то что поправил.
    Спасибо! Обязательно посмотрю. Хотелось бы еще немного "теории" почитать.
    На самом деле я несколько раз уже откладывал эту задачу (с другими процессорами) на потом и шапкозакидательского настроения у меня нет. Поэтому я не в последнюю очередь благодарен и за простые пожелания успеха.
    Спасибо!
     
  4. Роман

    Роман New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2006
    Сообщения:
    9
    Я имел опыт написания IDP. Помогу чем смогу (на em)
     
  5. snpik

    snpik New Member

    Публикаций:
    0
    Регистрация:
    12 май 2006
    Сообщения:
    10
    Адрес:
    Ukraine
    На email написал,
    Спасибо
     
  6. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Если просто дизассемблер инструкций, то тут и одного прохода хватит.
    Если собираешься программы дизассемблировать (как это делает ИДА), то дизассемблер должен быть рекурсивным и ес-но многопроходным.
     
  7. snpik

    snpik New Member

    Публикаций:
    0
    Регистрация:
    12 май 2006
    Сообщения:
    10
    Адрес:
    Ukraine
    crypto
    Спасибо, но есть ли статьи/книги может ключевые слова для поиска (фамилии авторов статей например)?
     
  8. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    2snpik
    Соб-но ничего сложного в дизассемблере нет. Главное - тщательно изучаешь документацию.
     
  9. snpik

    snpik New Member

    Публикаций:
    0
    Регистрация:
    12 май 2006
    Сообщения:
    10
    Адрес:
    Ukraine
    Собственно начал.
    Нашел еще что-то в старых темах.
    Спасибо.
     
  10. s0larian

    s0larian New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    489
    Адрес:
    Крыжёпполь
    так, ёлки, самый простой disasm это просто edump/elfdump который разбирает загрузочный файл и выплёвывает содержимое в текстовом виде в консоль.

    Обычно, файл это либо просто кусок памяти который загружается линейно по какому-то адресу, либо что-то типа PE/ELF с секциями. Во втором случае пишешь текстом что есть секция 1, 2, 3... типы такие-то... вот секция кода, размер, адрес.... То есть для этого надо иметь доку про формат файла.

    Ну а потом, если это RISC/ARM то по табличке opcodes разбираешь поток инструкций. В доке проца (от производителя) будут все флаги, операнды, и т.д.
     
  11. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    s0larian
    Если файл - программа, то дизассемблирование будет сложнее, чем дизассемблирование области памяти. Понадобится рекурсивный многопроходный метод. Если код перемежается данными, то понадобятся дополнительные приемы, позоляющие отделить код от данных. Примером последнего может служить программа, написанная на Билдере или Дельфях - даже пресловутая ИДА хреново их разбирает.
     
  12. s0larian

    s0larian New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    489
    Адрес:
    Крыжёпполь
    Ессно ты прав тут, но, чувак говорит про какой-то свой проц, и я думаю, что дело идёт о какой-то embedded штуке. А там будет cross compiler с ELF или чем-то подобным на выходе. То есть программа, но больше образ... Или, просто RAM image.