Win32 debugger-> дизассемблерный листинг

Тема в разделе "WASM.RESEARCH", создана пользователем Ox8BFF55, 31 дек 2009.

  1. Ox8BFF55

    Ox8BFF55 New Member

    Публикаций:
    0
    Регистрация:
    11 июл 2009
    Сообщения:
    181
    Буду решать по своему. Вопрос закрыт!
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Ox8BFF55
    Разобрана функа LdrInitializeThunk(): [​IMG]
    Отпарсено 50827 инструкций, это бо'льшая часть загрузчика и значительная часть RTL. Ито без учёта фиксапов и без раскрытия косвенных ссылок, как например Jmp dword ptr ds:[XXXX]. После этого если тыкать в нтдлл, то в секции кода обнаружится отпарсенный код. Для фиксапов можно сделать так: перечислять все поправки в секции кода, брать адрес каждого фиксапа и дизасмить код ниже на максимальную длину инструкции с шагом в один байт. Когда обнаружится инструкция содержащая адрес строить граф далее начиная от этой инструкции. Таким образом будет найден практически весь код. Поиск индексируемых ссылок весьма медленный и в отладчике применяться не должен.
     
  3. PSR1257

    PSR1257 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2008
    Сообщения:
    933
    Ox8BFF55

    [Sorr, если задублировал чей-то ответ - читал бегло - подобное есть в #22]

    Допустим мы предполагаем что текущий EIP указывает на начало инструкции. Нужно показать несколько команд до.

    Предполагаем что там тоже код. Отступаем на сколько-то байт - зависит от выводимого фрейма назад от EIP и начинаем дизасмить, скажем просто дизасмом длин. Если попали на текущий EIP в результате - можно выполнить также проверки на валидность команд. Так, скажем если:

    mov eax,imm32
    > Текущий EIP:
    push ebp
    mov ebp,esp

    Если мы уйдем на EIP-2 то попадем в область imm32 от команды mov eax,imm32 (5 байт). Это может быть (например) - совпадение - опкод UD2. Понятно что такой расклад тоже можно выводить но с низким приоритетом.

    По-идее если распарсить по длинам порядка 16 инструкций до и попасть в текущий EIP, и при этом фильтровать на всякую хрень типа команд с ring0, то должно оставаццо немного если не одын вариант.
     
  4. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    http://www.wasm.ru/forum/viewtopic.php?pid=359956#p359956