Здравствуйте. Начал использовать 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 не реагирует, пришлось его завершать и запускать вновь. Что может помочь в таких случаях, или нужно долго ждать ?
1. bp 2. В стандартной версии не как. то и есть нужен плагин для инвалидации памяти. 3. Нет и не нкжно, есть команда "u" 4.Нет(Только патчить, но я не расскажу как хахахаха ). Можно еще выполнить dt? но считать ручками. 5.Те модули которые были загружены и уже выгружены(Более детально WaitForDebugEvent load_dll_debug_event, unload_dll_debug_event)/ 6. Нет символов значит только ручками. 7. НЕТ 8. Можно долго ждать, но вообще проблема с символами , плагинами и поиском команд пресутствует(долгая реакция). Как варинат у вас workspace очень грязный.
Спасибо. В общем понятно, если в WinDbg нет команды что-то сделать сразу, нужно использовать другие команды и его скриптовый язык. Остался один вопрос - по 4-му пункту. Что тут такого смешного и что за секретный плагин? Насколько я знаю IDA отображает имена и через нее можно запустить WinDbg, чтобы пользоваться его командами.