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

User Tag List

Страница 1 из 3 123 ПоследняяПоследняя
Показано с 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
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    R.I.P.
    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    все равно имхо иде конкуренции пока нет

    по части вопросов посмотри на
    http://simonowen.com/blog/2012/12/04...pshot-tracing/

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

    ---------- Post added at 12:37 ---------- Previous post was at 12:35 ----------

    кстати под CP/M есть дизасм в котором можно расставлять DB/DW/CODE etc etc
    название сразу не вспомню, но имхо использовать его сейчас смысла нет

  4. #3
    Veteran Аватар для perestoronin
    Регистрация
    25.11.2011
    Адрес
    г. Красногорск
    Сообщений
    1,389
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    IDA
    IDA далеко не умный, хотя зачатки интеллекта у него кое-какие заложены.
    Лучше программиста никто не справится с задачей дизассемблирования, а для этого годится любой простой подручный дизассемблер
    http://www.tablix.org/~avian/blog/articles/z80dasm/
    http://www.z80.info/z80sdt.htm#SDT_DISASM_UNIX

    Также можно поспрашивать здесь: http://www.z88dk.org/forum/forums.php
    Последний раз редактировалось perestoronin; 20.04.2013 в 14:51.

    Ретрокладовая продажи

    продажи
    [свернуть]

  5. #4
    Veteran Аватар для Raydac
    Регистрация
    16.08.2005
    Адрес
    Estonia,Tallinn
    Сообщений
    1,128
    Спасибо Благодарностей отдано 
    52
    Спасибо Благодарностей получено 
    227
    Поблагодарили
    179 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от perestoronin Посмотреть сообщение
    Лучше программиста никто не справится с задачей дизассемблирования, а для этого годится любой простой подручный дизассемблер
    зависит от объемов анализируемого, комп может и тупой но он железный как паровоз

  6. #5
    R.I.P.
    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от perestoronin Посмотреть сообщение
    IDA далеко не умный, хотя зачатки интеллекта у него кое-какие заложены.
    Лучше программиста никто не справится с задачей дизассемблирования, а для этого годится любой простой подручный дизассемблер
    весь плюс иды в том что она интерактивная
    и это именно среда для дизассемблирования а не просто дизасм
    в дизасме нет вообще ничего сложного

    а тут очень важна интерактивнось процесса
    посмотрел на код, понял что делает, назвал продцедуру
    посмотрел кто ее использует, понял зачем, назвал их
    вернулся, и дальше дальше дальше

    например,
    есть голый файл, с чего начать
    нашли в дампе строку текста, перешли к ней
    нашли ссылку на нее (допустим поиском по адресу)
    посмотрели как используется

    ну типа загрузили в HL и CALL XXX
    перешли в XXX
    посмотрели - вывод, назвали StrPut, написали в автокомет что параметры в HL - str, b-x,c-y
    теперь в коде всегда будет при CALL XXX ; HL - str, b-x,c-y
    что помогает



    в редакторе этого не получить

    еще большой плюс иды как не странно это поддержка констант и структур
    интерактивные кроссреференсы (стал на метку, и получил список кто на него ссылается, и можно сразу туда перейти)

    плюс возможность писать код для автоанализа

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

    и прочеее
    Последний раз редактировалось esl; 20.04.2013 в 14:08.

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

    По умолчанию

    Цитата Сообщение от perestoronin Посмотреть сообщение
    Лучше программиста никто не справится с задачей дизассемблирования
    Верно, однако если процесс можно сделать более простым и приятным зачем отказываться от инструментов?

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

    Всё что может быть автоматизировано - должно быть автоматизировано =)
    oisee.

  8. #7
    R.I.P.
    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    обычно в одном окне IDA
    в другом - эмулятор в отладчике
    сильно помогает

  9. #8
    Guru Аватар для Vadim
    Регистрация
    24.07.2008
    Адрес
    г. Курган
    Сообщений
    2,062
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    17
    Поблагодарили
    17 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от esl Посмотреть сообщение
    кстати под CP/M есть дизасм в котором можно расставлять DB/DW/CODE etc etc
    название сразу не вспомню, но имхо использовать его сейчас смысла нет
    Сразу видно, что CP/M софт вы не искали. Не то что "есть". Есть и много. Самый продвинутый - DD80.

    Скрытый текст

    Profi 5.06 1024K 12Mhz (кварц на 24), палитра, COM-порт, часы, hdd, covox, программатор
    ZX-Spectrum +3, ZX-Spectrum +2B, ZX-Spectrum +2, ZX Spectrum 48, ZX Spectrum 48+
    ZX Evolution Rev B.
    Color 48 + Beta Disk Interface +FDD+YM2149F
    Орель-08БК
    Pentagon-48 (недоссобранный кем-то)
    Pentagon-128 (полуубитый)
    Кворум-128 (в ремонте)
    Магик-05 (в ремонте)
    Robotron 1715
    Корвет ПК8020 и ПК8010
    Amstrad CPC 464
    Amstrad CPC 6128
    [свернуть]

  10. #9
    --- Аватар для Shadow Maker
    Регистрация
    01.03.2005
    Адрес
    Саранск
    Сообщений
    5,823
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    235
    Поблагодарили
    100 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я поддерживаю Esl, лучше IDA нет инструмента для тотального дизассемблирования. Она единственная заточена именно под нужды разборщика кода, все остальные конечно дизассемблер делают, но все, что я видел - неуклюжи, неудобны, сложно менять ссылки (ну вот переназвать метку, например, захотел - целая проблема, если метка неуникальная - например надо тебе переназвать Print, а у тебя кроме этого принта - еще куча всяких PrintX, PrintXY и тп, простым редактором этого не сделаешь, надо или регекспы писать, или еще чего, в общем полный неудобняк).

    Из CP/M самый нормальный был действительно DD80, я помню в сравнении со спековскими дизасмами в 90х он был как космические технологии. Но он же консольный, поэтому никакой интерактивности, сиди и переписывай карту. Вроде еще IXH, IYH и прочие не особо документированные не поддерживал, не помню уже.
    Свирепый агрессивно-депрессивный мордовец!
    Не уверен - не напрягай!

    Не сдавайся. Дыши?

    Virtual TR-DOS

  11. #10
    Guru
    Регистрация
    03.01.2006
    Адрес
    Рязань
    Сообщений
    2,935
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Pro Tracker, Perfect Commander и Mr Gluk Reset Service я дизассемблировал в дизассемблере Иноземцева. Очень интерактивно и удобно.

Страница 1 из 3 123 ПоследняяПоследняя

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

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

Эту тему просматривают: 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

Ваши права

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