Вопросы по WinDbg

Тема в разделе "WASM.RESEARCH", создана пользователем Svghost, 17 окт 2011.

  1. Svghost

    Svghost New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2011
    Сообщения:
    3
    Здравствуйте. Начал использовать WinDbg, который после Olly кажется не очень удобным. Но поскольку альтернатив под x64 мало, то приходится к нему привыкать. После пары месяцев использования появились вопросы:

    1.) В Olly есть команда bpx, устанавливающая BP на вызов функции. А есть что-нибудь подобное в WinDbg ?

    2.) Также в Olly можно ставить BP на целые секции PE-файлов, в WinDbg я такого не нашел. В принципе с помощью команд
    ( например для секции .text: .while (1) {t; .if (@rip>=addr1 && @rip<=addr2) {.break}} ) можно добиться похожего поведения, но только для текущего потока.
    Да, на codeproject.com я находил плагин для этих целей, но он работает не совсем корректно.
    Собственно вопрос: Как можно заставить все потоки программы остановиться при обращении (исполнение, чтение, запись) к определенной секции?

    3.) Можно ли сделать окно дизассемблера человеческим? Чтобы оно было как у нормальных программ, прокручивалось на одну строчку, а не на пол окна сразу.

    4.) Можно ли научить WinDbg отображать вместо смещений-структуры ? Чтобы если у него были символы, то вместо конструкций: mov rax, QWORD PTR [rsp+8]; mov rbx, QWORD PTR [rsp+10h] было что-то вроде: mov rax, strcuct.filed1; mov rbx, struct.field2 .

    5.) При вызове команды lm, отображаются список модулей в АП процесса и в самом низу идет список под названием "Unloaded modules". Что он означает?

    6.) Можно ли помощью команды .call вызывать функции из системных DLL. В символах для этих DLL, нет информации о параметрах функций, а для команды они нужны .

    7.) Есть какое-либо различие между командами для обработки исключений gn и gN (вроде делают одно и то же, а регистр разный) ?

    8.) Иногда бывает, что WinDbg впадает в ступор и вывести его оттуда не получается, CTRL-Break не помогает и приходится перезапускаться. Например я хотел посмотреть импорт в PE и перепутал команды dps и ds, в итоге в статусе командной строки стоит "BUSY", на CTRL-Break не реагирует, пришлось его завершать и запускать вновь.
    Что может помочь в таких случаях, или нужно долго ждать ?
     
  2. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    1. bp
    2. В стандартной версии не как. то и есть нужен плагин для инвалидации памяти.
    3. Нет и не нкжно, есть команда "u"
    4.Нет(Только патчить, но я не расскажу как хахахаха ). Можно еще выполнить dt? но считать ручками.
    5.Те модули которые были загружены и уже выгружены(Более детально WaitForDebugEvent load_dll_debug_event, unload_dll_debug_event)/
    6. Нет символов значит только ручками.
    7. НЕТ
    8. Можно долго ждать, но вообще проблема с символами , плагинами и поиском команд пресутствует(долгая реакция). Как варинат у вас workspace очень грязный.
     
  3. Svghost

    Svghost New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2011
    Сообщения:
    3
    Спасибо. В общем понятно, если в WinDbg нет команды что-то сделать сразу, нужно использовать другие команды и его скриптовый язык.

    Остался один вопрос - по 4-му пункту. Что тут такого смешного и что за секретный плагин?
    Насколько я знаю IDA отображает имена и через нее можно запустить WinDbg, чтобы пользоваться его командами.
     
  4. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    Svghost
    Можно запустить, но это уже IDA с dbgeng а не windbg/