Важная информация

User Tag List

Показано с 1 по 10 из 23

Тема: Дизассемблеры Z80 и инструменты статического и динамического анализа кода.

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Master Аватар для siril
    Регистрация
    01.02.2005
    Адрес
    perm/ru
    Сообщений
    520
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Дизассемблеры Z80 и инструменты статического и динамического анализа кода.

    Вот тут завёл тему про анализ произвольных cp/m приложений.

    По ходу действия стал вопрос: "какие есть 'умные' интерактивные дизассемблеры для z80 (кроме дорогущего IDA Starter/Pro)"?

    И что эти "умники" умеют?

    1) где можно было бы промаркировать часть кода как исполняемый, часть как данные? (для кода получить дизассемблер, для данных, в зависимости от типа DB xx/DW xxxx).

    2) какие (и где) есть инструменты динамического анализа кода?
    к примеру, для того, чтобы получить маркировку участка исходного кода как "исполняемых данных" достаточно запустить программу под эмулятором, некоторое время погонять её с включенным логированием состояния регистра PC (указатель адреса исполняемой команды) - как результат получим массив адресов, по которым реально расположен исполняемый код.

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

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

    3) какие (и где) есть инструменты статического анализа кода?
    к примеру, указываем стартовый адрес блока (org #0100) - и пробегаем код (без исполнения) с анализом ветвлений: строим граф переходов, в котором каждая из команд условного перехода - вершина, параллельно помечая пройденные адреса команд как исполняемый код. Если какие-то исполняемые участки были пропущены динамическим анализом в п. 2), то тут мы получим информацию о дополнительных редкоисполняемых участках программы.

    При подобном анализе есть несколько (разрешимых) проблем:
    анализ переходов по jp (hl), jp (sp) = ret. В случае с ret - нужен контроль за состоянием стека.

    Ну и инструмент для разбора всей этой статистики =)

    И где и как это реализовано? Где и как это можно реализовать? =)
    Последний раз редактировалось siril; 20.04.2013 в 13:29.
    oisee.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Инструменты pt3
    от Destr в разделе Музыка
    Ответов: 16
    Последнее: 09.01.2012, 19:19
  2. Инструменты к Sampler?
    от KostikVento в разделе Музыка
    Ответов: 7
    Последнее: 19.11.2011, 23:10
  3. Как вытащить кусок кода?
    от PicNov76 в разделе Программирование
    Ответов: 7
    Последнее: 31.05.2010, 18:01
  4. Помощь с оптимизацией кода
    от moroz1999 в разделе Программирование
    Ответов: 7
    Последнее: 02.06.2008, 14:19
  5. Как из кода получить текущее значение PC?
    от jim в разделе Программирование
    Ответов: 21
    Последнее: 01.06.2006, 11:12

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •