Потестируйте дизасм

Тема в разделе "WASM.RESEARCH", создана пользователем Ms Rem, 15 июн 2005.

  1. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    Интересует наличие багов в дизассемблировании и особенно поведение на нестандартных коммандах.



    http://ms-rem.narod.ru/Tester.exe
     
  2. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    При дизасме пакованного файла (ASPack): 0xc0000005 по адресу 0x403718

    При дизасме самого себя: 0xc0000005 по адресу 0x4038b0
     
  3. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    Он дизасмит файл начиная с EP и заканчивая первым ret. Если ret не встречается, то естественно падает.

    Для тестирования надо просто налабать что-нибудь на масме и отдизасмить (главное чтобы ret был). Интересуют именно баги в дизассемблировании инструкций, а не загрузки файлов или интерфейса, так как предназначен этот дизасм для анализатора кода.
     
  4. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    Интересуют такие ошибки как неправильное определение команды, ее размера, операндов и.т.д.

    Ну и ошибки в формировании мнемоники команды.

    Поддерживаемый набор инструкций - все Pentium Pro кроме MMX
     
  5. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    Концептуальный баг в команде CALL (вообще в rel-командах).



    Блин, ты хоть бы цвет поменял в риче. ;) Если свой выложу, некрасиво будет. ;) Конечно, тестер гораздо лучше стал, но схожесть тут всё же не к месту...
     
  6. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    6A не расширяет...

    прогони с оригинала ;) команды, работающие с drX/crX/trX, которые байтами закодированы.
     
  7. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    Баг есть с TR регистрами, а с остальным вроде все нормально.



    _BC_

    Извини что позаимствовал твой темплейт к GUI :)
     
  8. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759




    Попробуй

    0F 20 38

    0f 21 38

    0F 21 0F и тд



    Команды 0F 25/27 и другие aaa возвращают.





    Насчет бага с rel-командами: если в 32-битном коде будет, например, 66 E8 00 00, то в этом случае destination & FFFFh. Т.е. dest усекается до 16 бит.



    Вообще, надо разделять уровни 'инвалидности' команд. Одно дело когда команда неверна уже на стадии декодирования опкода, а другое дело если у нее бессмысленные операнды. C4C4 тому пример. Проверку операндов лучше возложить на анализатор, а не на дизассемблер. Дизассемблеру заранее неизвестно, какие параметры команды вызовут ошибку, исключение может вызвать даже банальная команда

    mov [0FFFFFFFFh], eax

    Она заведомо неправильна, но ее ведь лучше не выводить как 'INVALID', nein? Тоже самое в отношении команд типа les edi,edi. Лучше если дизассемблер будет выдавать 'INVALID' только на ошибки в декодере опкода. В заведомо неверных параметрах может содержаться полезная информация (например для обработчика #UD). Если дизасм будет на них отплевываться 'invalid', то для извлечения этой инфы (если вдруг понадобится) анализатору надо будет самому парсить префиксы, опкоды, и тд для ее извлечения.
     
  9. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    Все найденные баги исправлены. Тестируем дальше.
     
  10. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    Пофиксил еще один баг связанный с определением 16 битного MOD r/m
     
  11. dermatolog

    dermatolog Member

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    406
    Адрес:
    Екатеринбург
    Неправильный размер операндов на:

    8С E0

    (должно быть mov eax, segment_registr)

    Также не забывай про "инвалидный" сегментный регистр:

    8С F0



    Также нет обработки инвалидных операндов у lea:

    8D C4 CB 41



    Неправильно определяется инвалидный опкод:

    0F 6E 00

    (должно быть movd mm0,[eax])
     
  12. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    8CE0 определяется как mov ax, fs, ты наверно по русски буквы написал :)



    Проверку на инвалидный сегментный регистр добавил, а поддержки MMX сейчас нет, поэтому 0F 6E 00 и не должно определяться.



    Насчет обработки инвалидных операндов - _BC_

    уже сказал что эта работа не для дизассемблера. Я с ним согласен.
     
  13. dermatolog

    dermatolog Member

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    406
    Адрес:
    Екатеринбург
    2 Ms Rem:



    Объясню ещё раз:

    8C E0 - должно быть MOV EAX, FS у тебя MOV AX, FS
     
  14. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    Ms Rem



    8C/8E XX в 32-битном режиме обнуляет старшую часть регистра.

    На этом когда-то эмуляторы ловили...
     
  15. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    Баг исправлен.



    Кстати, obj дизасма я собираюсь потом выложить вместе с примерами использования. А написан он так, что его можно хоть в ринг0 юзать, хоть в другой ОС. Так что тестируем активнее :)
     
  16. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    Народ, может кините ссылку на доку с таблицей MMX команд и их опкодов. Интел мануалы у меня есть, но очень трудоемко оттуда выдирать, так как там ММХ с SSE перемешаны и куча описаний между ними. Надо все в одной доке чтоб компактно (команда - опкод) без всяких описаний.
     
  17. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    Мыльнул.
     
  18. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    Чето не пришло ничего. Может яндекс глючит, а может ты не туда отослал :)



    В любом случае лучше дай линк или скинь атачем на форум, т.к. не одному мне надо, у меня уже просили по аське эту доку рассылать дальше :)
     
  19. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
  20. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237